gpt4 book ai didi

python - 远程服务器上的子进程

转载 作者:太空狗 更新时间:2023-10-29 18:28:46 25 4
gpt4 key购买 nike

我正在使用这段代码在远程服务器上执行命令。

import subprocess
import sys
COMMAND="ls"

ssh = subprocess.Popen(["ssh", "%s" % HOST, COMMAND],
shell=False,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
result = ssh.stdout.readlines()
if result == []:
error = ssh.stderr.readlines()
print >>sys.stderr, "ERROR: %s" % error
else:
print result

当我尝试执行此脚本时,系统提示我输入密码。有什么办法可以避免它,例如,我可以以某种方式在脚本中输入密码吗?此外,密码应该以某种方式加密,以便有权访问脚本的人看不到它。

最佳答案

为什么要搞得这么复杂?这是我的建议:

1) 在您的 ~/.ssh/config 文件中创建一个 ssh 配置部分:

Host myserver
HostName 50.50.50.12 (fill in with your server's ip)
Port xxxx (optional)
User me (your username for server)

2) 如果您已经生成了 ssh key 对,请立即执行(使用 ssh-keygen)。然后上传:

$ ssh-copy-id myserver

3) 现在您可以通过 ssh 使用子进程。例如,要捕获输出,我调用:

result = subprocess.check_output(['ssh', 'myserver', 'cat', 'somefile'])

简单、健壮且唯一需要密码的时间是将公钥复制到服务器时。

顺便说一句,使用这些步骤,您的代码可能也能正常工作。

关于python - 远程服务器上的子进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31476927/

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