2017-04-19 42 views
-1

我必须编写一个python代码来执行客户端的一些命令。 python脚本需要在client1机器中。在我的Python代码中,我需要从host1执行命令。但是host1只能从host2到达

该命令必须在client3中执行。 但client3不能直接从client1访问。我们需要先对“client2”服务器执行ssh,然后再对ssh执行client3。

有没有出路?

+0

us3 host1上的iptables将数据包转发给host2 –

+0

我不确定是什么问题。如果没有网关服务器,你会''ssh client2“命令'',所以你不能'ssh gateway'ssh client2'command'”'? –

+0

客户端2不能从客户端1直接访问。您需要首先登录到网关服务器,然后从该机器,SSH到客户端2 – esham

回答

1

我没有亲自管理,但你喜欢你的声音可以利用以下的回答:How to execute a process remotely using python

下面是这个问题的答案给出了例子:使用子库,您可以

import subprocess 
ret = subprocess.call(["ssh", "[email protected]", "program"]); 

# or, with stderr: 
prog = subprocess.Popen(["ssh", "[email protected]", "program"], stderr=subprocess.PIPE) 
errdata = prog.communicate()[1] 

执行SSH,然后用您的python代码从您的客户端1执行client 2机器上的命令。

希望它有帮助!

+0

你也可以用'Popen(['ssh','user @ host'],stdin = PIPE)'启动ssh,并用'process.stdin.write('command \ n')'执行命令,这对于if你会发送很多命令。 –

+0

>> Popen(['ssh','user @ host'],stdin = PIPE)如何在此传递ssh的密码? – esham

+0

看看上面的答案,似乎最好的解决方案是设置SSH密钥以避免密码。 – beerandsmiles

相关问题