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 :  [email protected]
@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)