从python运行nohup和eval

时间:2015-10-20 17:30:40

标签: python bash eval ssh-keys nohup

我需要运行两个命令(从shell看起来像)

$ eval `ssh-agent -s`
Agent pid 8631
$ ssh-add ~/.ssh/user

注意:密钥位于/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开始了,但不知何故我无法连接

1 个答案:

答案 0 :(得分:1)

os.system为每个命令启动不同的shell做了什么。而eval `ssh-agent -s`所做的是启动一个新的ssh-agent并在当前shell中存储与之通信所需的一些环境变量。最后,ssh-add使用该变量访问ssh-agent代理以向其添加新密钥。

所以你需要在同一个shell上执行这两个命令。您可以通过对os.system的唯一调用顺序调用这两个命令来执行此操作:

os.system("eval `ssh-agent -s`; ssh-add /home/user/.ssh/user")