繁体   English   中英

paramiko exec_command“ sudo -iu”挂起

[英]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。

您有两种选择:

  1. 配置SSH守护程序以允许以aaauser用户aaauser登录,并首先避免此问题。
  2. 以正常的非交互方式使用sudo执行每个命令。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM