1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#!/usr/bin/env python
#-*-coding:UTF-8-*-
"""
@Item   :  v1.0
@Author :  ShengWangQiang
@Group  :  System 
@Date   :  2015-01-28
@E-mail :  swq.499809608@hotmail.com
@Funtion:
          
"""
 
import 
sys,time,os,traceback,commands,
import 
paramiko,
 
class 
Remote(
object
):
    
def 
__init__(
self
):
        
version 
= 
'v0.1'
        
self
.users 
= 
'root'
        
self
.passwd  
= 
"1234567890"
        
self
.port 
= 
22
         
 
    
def 
log(
self
,info):
        
files 
= 
open
(
'/tmp/deploy.log'
,
'a'
)
        
try
:
            
files.write(
'[%s]: %s \n' 
%
(time.ctime(),info))
        
except 
IOError:
            
files.close()
        
files.close()
 
 
    
def 
cmds(
self
,host,comm):
        
try
:
            
print 
comm
            
client 
= 
paramiko.Transport((host,
int
(
self
.port)))
            
client.connect(username
=
self
.users,password
=
self
.passwd)
            
chan 
= 
client.open_session()
            
chan.exec_command(comm)
            
chan.close()
        
except
:
            
print 
'host'
, host
            
print 
traceback.format_exc()
            
self
.log(traceback.format_exc())
 
    
def 
sftps(
self
,host,files):
        
try
:
            
lodir 
= 
'/opt/onfile'
            
rmdir 
= 
'/opt/onfile'
            
client 
= 
paramiko.Transport((host,
int
(
self
.port)))
            
client.connect(username
=
self
.users,password
=
self
.passwd)
            
sftp 
= 
paramiko.SFTPClient.from_transport(client)
            
sftp.put(
'%s/%s'
%
(lodir,files),
'%s/%s'
%
(rmdir,files))
            
client.close()
        
except
:
            
print 
traceback.format_exc()
            
self
.log(traceback.format_exc())
 
    
def 
work(
self
,comm):
        
fp 
= 
open
(
'/opt/online/ser_list.txt'
).readlines()
        
for 
in 
fp:
            
host 
= 
s.strip()
            
self
.cmds(host,comm)
    
def 
sftp(
self
,comm):
        
fp 
= 
open
(
'/opt/online/ser_list.txt'
).readlines()
        
for 
in 
fp:
            
host 
= 
s.strip()
            
self
.sftps(host,files)
 
if 
__name__ 
=
= 
'__main__'
:
    
sc 
= 
Remote()
    
func 
=  
sys.argv[
1
]
    
files 
= 
sys.argv[
2
]
    
if 
func 
=
= 
'sftp'
:
        
sc.sftp(files)
    
elif 
func 
=
= 
'work'
:
        
sc.work(files)