【发布时间】:2014-01-21 05:46:58
【问题描述】:
我是 python 新手,我正在尝试使用 paramiko 完成一个多线程 ssh 会话。
def worker:
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, username='root', password='password')
stdin, stdout, stderr = ssh.exec_command(cmd)
stdin.flush()
--> pid = stdout.readline()
def main:
f = open (options.host_file)
ips = f.read().splitlines()
for line in ips:
user,host = line.split("@")
my_thread = threading.Thread(target=worker ,args=(i,)
threads.append(my_thread)
my_thread.setDaemon(True)
my_thread.start()
my_thread.join()
is_running = my_thread.is_alive()
print "Value of IS RUNNING is: ",is_running,"\r"
我观察到的是,如果我在工作人员中有 pid = stdout.readline(),则线程运行 ssh 并在开始下一个作业之前等待每个作业,如果我排除此行,所有线程都会运行同时(这是我想要的)并且 ssh 退出。
我想为不同的主机设置一个线程化的 ssh 会话并监视线程,直到我开始使用 ssh 的程序完成。由于线程会以最佳方式运行不同的时间,我想重新启动以新参数结尾的线程。
另外 isAlive 总是为我返回 False。
非常感谢任何帮助。这可能吗,还是我必须监视在远程主机上启动的进程的 PID?
【问题讨论】:
-
欢迎来到 StackOverflow 和 Python!上面的程序有语法错误,这是您正在使用的程序的简化版本吗?
标签: multithreading ssh paramiko