我需要运行两个命令(从 shell 看起来像)
$ eval `ssh-agent -s`
Agent pid 8631
$ ssh-add ~/.ssh/user
注意: key 位于/home/user/.ssh/user 并且正确
运行就像 bash 脚本的魅力一样:
#!/bin/bash
nohup `eval `ssh-agent -s`` >/dev/null 2>&1 &
ssh-add ~/.ssh/$user
但是从Python我无法工作,ssh-agent已启动但ssh-add返回:
无法打开与您的身份验证代理的连接。
import os
os.system('nohup \'eval `ssh-agent -s`\' &')
os.system('ssh-add /home/user/.ssh/user')
我已经尝试过:
import os
system('nohup sh -c \'eval `ssh-agent -s`\' &')
同样的问题 ssh-agent 启动了,但不知何故我无法连接
最佳答案
os.system 是如何为每个命令启动不同的 shell 的。 eval `ssh-agent -s` 的作用是启动一个新的 ssh-agent 并在当前 shell 中存储一些与其通信所需的环境变量。最后,ssh-add
使用该变量访问 ssh-agent
代理以向其添加新 key 。
因此您需要在同一个 shell 上执行这两个命令。您可以通过对 os.system
的唯一调用来依次调用这两个命令来完成此操作:
os.system("eval `ssh-agent -s`; ssh-add /home/user/.ssh/user")
关于python - 从 python 运行 nohup 和 eval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33243095/