在编写 python 多线程程序, 使用 paramiko 库进行远程连接时, 遇到了不等待命令执行完成就退出的问题.
如下
1 2 3 4 5
| def test() : with paramiko.SSHClient() as ssh: ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(hostname="11.169.229.46", username="admin", key_filename="/root/workdir/repos/data_tools/data/data_groovy/ssh/id_rsa", timeout=8) stdin, stdout, stderr = ssh.exec_command("sleep 3", timeout=3300)
|
经过排查后原来是 paramiko 的特性, 需要获取执行结果才能等待执行, 如下
1 2 3 4 5 6
| def test() : with paramiko.SSHClient() as ssh: ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(hostname="11.169.229.46", username="admin", key_filename="/root/workdir/repos/data_tools/data/data_groovy/ssh/id_rsa", timeout=8) stdin, stdout, stderr = ssh.exec_command("sleep 3", timeout=3300) print(stdout.read().decode("utf-8"))
|