gpt4 book ai didi

python - paramiko exec_command "sudo -iu"挂起

转载 作者:行者123 更新时间:2023-12-05 03:08:59 25 4
gpt4 key购买 nike

我正在使用 Paramiko(新手)连接到 Linux 服务器。我能够连接到服务器并执行不同的命令(例如“ls”、“正常运行时间”)并读取结果。但是,当尝试执行“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 登录并首先避免此问题。
  2. 以正常的非交互方式使用 sudo 执行每个命令。

关于python - paramiko exec_command "sudo -iu"挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44094850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com