首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >paramiko exec_command "sudo -iu“挂起

paramiko exec_command "sudo -iu“挂起
EN

Stack Overflow用户
提问于 2017-05-21 08:39:31
回答 1查看 1.1K关注 0票数 3

我使用Paramiko (新手)连接到linux服务器。我能够连接到服务器,执行不同的命令(如'ls‘、'uptime')并读取结果。但是,当试图执行'sudo -iu‘命令(不需要密码)时,Paramiko挂起。以下是相关的代码行:

代码语言:javascript
复制
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 )运行这些命令没有问题。

谢谢你,塔尔

EN

回答 1

Stack Overflow用户

发布于 2017-05-21 12:03:22

帕拉米科被绞死正是人们所期望的。当您执行sudo -i时,将生成一个新的shell,并且当前的shell进入I/O状态,直到新生成的shell退出,此时控制将返回到Paramiko。

因此,运行sudo -i永远不会导致输出到stdout,因此您的循环将被困在I/O等待中,并因此而挂起,就像您当前所经历的那样。sudo -i不应该在脚本中使用,它应该只用于交互式shell。

你有两个选择:

  1. 将SSH守护进程配置为允许以用户aaauser身份登录,并首先避免此问题。
  2. 以正常的、非交互式的方式使用sudo执行每个命令。
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44094850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档