我使用Paramiko (新手)连接到linux服务器。我能够连接到服务器,执行不同的命令(如'ls‘、'uptime')并读取结果。但是,当试图执行'sudo -iu‘命令(不需要密码)时,Paramiko挂起。以下是相关的代码行:
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy (paramiko.AutoAddPolicy())
sh.connect (server, username='aaaa', password= 'bbbbb', key_filename='C:\\Users\\aaaa\\Documents\\paramiko_dsa_key')
stdin, stdout, stderr = ssh.exec_command("sudo -iu aaauser")
#stdin, stdout, stderr = ssh.exec_command("uptime")
print stdout.read()注意,使用已知的SSH工具(如Xshell )运行这些命令没有问题。
谢谢你,塔尔
发布于 2017-05-21 12:03:22
帕拉米科被绞死正是人们所期望的。当您执行sudo -i时,将生成一个新的shell,并且当前的shell进入I/O状态,直到新生成的shell退出,此时控制将返回到Paramiko。
因此,运行sudo -i永远不会导致输出到stdout,因此您的循环将被困在I/O等待中,并因此而挂起,就像您当前所经历的那样。sudo -i不应该在脚本中使用,它应该只用于交互式shell。
你有两个选择:
aaauser身份登录,并首先避免此问题。sudo执行每个命令。https://stackoverflow.com/questions/44094850
复制相似问题