python远程执行python脚本_【python】用python脚本Paramiko实现远程执行命令、下载、推送/上传文件功能...

1 #!/usr/bin/env python

2 #定义函数

3 importparamiko4 importos5 importdatetime6 importsys7 importre8 #定义基础命令格式

9 defperform_command(hostname, port, username, password, comm):10 try:11 t=paramiko.Transport((hostname,port))12 t.connect(username=username,password=password)13 try:14 print "\033[33mIP:\033[0m", hostname15 print "\033[33mPerform command:\033[0m", comm16 print '\033[32m###########################################################\033[0m'

17 s=paramiko.SSHClient()18 s.set_missing_host_key_policy(paramiko.AutoAddPolicy())19 s.connect(hostname = hostname, port = port, username = username, password =password)20 stdin,stdout,stderr=s.exec_command(comm)21 printstdout.read()22 print '\033[32m###########################################################\033[0m'

23 print '\033[32mScript perform success %s \033[0m' %datetime.datetime.now()24 s.close()25 exceptException:26 print "\033[31mERROR - Perform error\033[0m"

27 exceptException:28 print "\033[31mERROR - Connect error! IP: %s!\033[0m" %hostname29

30 #定义发送文件格式

31 defsend_file(hostname,port,username,password,local_dir,client_dir,file):32 try:33 t=paramiko.Transport((hostname,port))34 t.connect(username=username,password=password)35 try:36 print "\033[33mIP:\033[0m", hostname37 print "\033[33mSend file:\033[0m", file38 print "\033[33mClient_dir:\033[0m", client_dir39 sftp=paramiko.SFTPClient.from_transport(t)40 sftp.put(os.path.join(local_dir,file),os.path.join(client_dir,file))41 t.close()42 print '\033[32mScript perform success %s \033[0m' %datetime.datetime.now()43 exceptException:44 print "\033[31mERROR - Perform error\033[0m"

45 exceptException:46 print "\033[31mERROR - Connect error! IP: %s!\033[0m" %hostname47 #定义下载文件格式

48 defget_file(hostname,port,username,password,local_dir,client_dir,file):49 try:50 t=paramiko.Transport((hostname,port))51 t.connect(username=username,password=password)52 try:53 print "\033[33mIP:\033[0m", hostname54 print "\033[33mGet file:\033[0m", file55 print "\033[33mClient_dir:\033[0m", client_dir56 sftp=paramiko.SFTPClient.from_transport(t)57 sftp.get(os.path.join(client_dir,file),os.path.join(local_dir,file))58 t.close()59 print '\033[32mScript perform success %s \033[0m' %datetime.datetime.now()60 exceptException:61 print "\033[31mERROR - Perform error\033[0m"

62 exceptException:63 print "\033[31mERROR - Connect error! IP: %s!\033[0m" %hostname64 #定义帮助文件

65 defhelp():66 print """

67 \033[33mHelp:68

69 Welcome to use python script, this script can help you run commands, send files and get files.70

71 Use this script, you can running for one host or a host group, and you know get file can't for a host group.72

73 Give you examples:74

75 If you want perform command:76 Usage: (for one host) ./paramiko-upload.py -H [hostip] -c [command]77 Example: ./paramiko-upload.py -H 10.100.139.245 -c 'ls -al'78

79 Usage: (for a host group) ./paramiko-upload.py -F [ip.txt] -c [command]80 Example: ./paramiko-upload.py -F 'ip.txt' -c 'ls -al'81

82 If you want send file:83

84 Usage: (for one host) ./paramiko-upload.py -H [hostip] -s [local_dir] [client_dir] [file]85 Example: ./paramiko-upload.py -H 10.100.139.245 -s '/opt/Felix' '/tmp' ip.txt86

87 Usage: (for a host group) ./paramiko-upload.py -F [ip.txt] -s [local_dir] [client_dir] [file]88 Example: ./paramiko-upload.py -F ip.txt -s '/opt/Felix' '/tmp' ip.txt89

90 If you want get file:91 Usage: (for one host) ./paramiko-upload.py -H [hostip] -g [local_dir] [client_dir] [file]92 Example: ./paramiko-upload.py -H 10.100.139.245 -g '/opt/Felix' '/tmp' ip.txt93

94 ip.txt file content like this:95 1.1.1.196 2.2.2.2\033[0m97 """

98 sys.exit()99

100 #定义命令详情

101

102 if __name__ == '__main__':103 #定义账号、端口、密码等信息

104 username='root'

105 port=2222

106 password='abcdefg'

107

108

109 if len(sys.argv) > 2:110 if sys.argv[1] == '-H':111 if len(sys.argv) == 5 and sys.argv[3] == '-c':112 hostname=sys.argv[2]113 comm = sys.argv[4]114 perform_command(hostname, port, username, password, comm)115 elif len(sys.argv) == 7 and sys.argv[3] == '-s':116 hostname=sys.argv[2]117 local_dir=sys.argv[4]118 client_dir=sys.argv[5]119 file=sys.argv[6]120 send_file(hostname,port,username,password,local_dir,client_dir,file)121 elif len(sys.argv) == 7 and sys.argv[3] == '-g':122 hostname=sys.argv[2]123 username='root'

124 port=2222

125 password='abcdefg'

126

127

128 if len(sys.argv) > 2:129 if sys.argv[1] == '-H':130 if len(sys.argv) == 5 and sys.argv[3] == '-c':131 hostname=sys.argv[2]132 comm = sys.argv[4]133 perform_command(hostname, port, username, password, comm)134 elif len(sys.argv) == 7 and sys.argv[3] == '-s':135 hostname=sys.argv[2]136 local_dir=sys.argv[4]137 client_dir=sys.argv[5]138 file=sys.argv[6]139 send_file(hostname,port,username,password,local_dir,client_dir,file)140 elif len(sys.argv) == 7 and sys.argv[3] == '-g':141 hostname=sys.argv[2]142 local_dir=sys.argv[4]143 client_dir=sys.argv[5]144 file=sys.argv[6]145 get_file(hostname,port,username,password,local_dir,client_dir,file)146 else:147 help()148 elif sys.argv[1] == '-F':149 ip_file=sys.argv[2]150 file_stat=os.path.exists(ip_file)151 iffile_stat:152 f=open(ip_file)153 ips=f.readlines()154 f.close()155 for ip inips:156 ip = ip.strip('\n')157 if re.match(r'^#', ip):158 continue

159 if len(sys.argv) == 5 and sys.argv[3] == '-c':160 hostname =ip161 comm = sys.argv[4]162 perform_command(hostname, port, username, password, comm)163 elif len(sys.argv) == 7 and sys.argv[3] == '-s':164 hostname=ip165 local_dir=sys.argv[4]166 client_dir=sys.argv[5]167 file=sys.argv[6]168 send_file(hostname,port,username,password,local_dir,client_dir,file)169 else:170 help()171 else:172 print "\033[31mERROR - Not found ip_file!\033[0m"

173 help()174 else:175 help()176 else:177 help()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值