[英]paramiko exec_command “sudo -iu” hangs
我正在使用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)运行这些命令没有问题。
预先感谢,塔尔
Paramiko的悬挂正是所期望的。 当您执行sudo -i
,将生成一个新的shell,当前的shell将进入I / O状态,直到新生成的shell退出为止,这时,控制权将返回给Paramiko。
因此,运行sudo -i
永远不会导致输出到stdout,因此您的循环将陷入I / O等待状态,并因此而挂起,因为您当前正在体验。 sudo -i
绝对不能在脚本中使用,而应该仅用于交互式shell。
您有两种选择:
aaauser
用户aaauser
登录,并首先避免此问题。 sudo
执行每个命令。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.