首页 新闻 会员 周边 捐助

python27,多线程问题。纠结啊两天了,求大神指点

0
悬赏园豆:20 [待解决问题]
 1 #!/usr/bin/env python
 2 # _*_ coding:utf-8 _*_
 3 import paramiko
 4 import threading
 5 
 6 
 7 class SSHServer:
 8     def __init__(self, host_name, host_port, host_username, host_password):
 9         transport = paramiko.Transport((host_name, host_port))
10         transport.connect(username=host_username, password=host_password)
11         self._transport = transport
12 
13     def run_cmd(self, command):
14         ssh = paramiko.SSHClient()
15         ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
16         ssh._transport = self._transport
17         stdin, stdout, stderr = ssh.exec_command(command)
18         result = stdout.read()
19         print(result.decode())
20         return result
21 
22     def upload(self, local_path, remote_path):
23         sftp = paramiko.SFTPClient.from_transport(self._transport)
24         sftp.put(local_path, remote_path)
25 
26     def download(self, remote_path, local_path):
27         sftp = paramiko.SFTPClient.from_transport(self._transport)
28         sftp.get(remote_path, local_path)
29 
30     def close(self):
31         self._transport.close()
32 
33     def __str__(self):
34         print(self._transport)
35 
36 
37 if __name__ == '__main__':
38     for line in open('ip.txt', 'r'):
39         cmd_li = line.split()
40         obj = SSHServer(host_name=cmd_li[0], host_port=22, host_username='root', host_password='123456')
41         t = threading.Thread(target=obj.run_cmd, args=('ls; hostname -I',))
42         t.start()
43     obj.close()

这两天在线上写了一个多线程批量执行的脚本,对300多态服务器执行批量操作。每次执行时,最后一台就会报错!本来以为是本机的python有问题,后来把本机的IP地址,从'ip.txt'中去除,还是会有最后一台服务器执行不成功,报错的内容都一样。请大神指点,看看我是什么原因。我用的python版本为python2.7.5

文件"ip.txt"为ip地址列表

 

每次报错都一样,报错的内容如下:

早晨我在雨中采花的主页 早晨我在雨中采花 | 初学一级 | 园豆:184
提问于:2017-04-20 10:32
< >
分享
所有回答(1)
0

打一下所有的line看有没有一行空的。

ぁ丶泛滥的尐青春つ | 园豆:199 (初学一级) | 2017-05-06 16:43

没有,每一行都有对应的IP地址

支持(0) 反对(0) 早晨我在雨中采花 | 园豆:184 (初学一级) | 2017-05-06 17:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册