所以我想使用python在服务器上运行命令,但要做到这一点,我必须通过另一个框。我通过子进程运行ssh连接到第一个框。但是,我不确定如何进入第二个框并通过该子进程对象运行命令。
我的子流程声明:
command = "ssh servername"
sshConnection = subprocess.Popen(command.split(),stderr=subprocess.PIPE
,stdout=subprocess.PIPE,stdin=subprocess.PIPE)
我能想到的唯一方法:
以某种方式连接两个子进程命令的管道? 首先建立SSH隧道,然后运行命令? 还有其他想法吗?我接近这个错误吗?
答案 0 :(得分:0)
怎么样:
cmd = "mycmd myarg1 myarg2"
ssh_command = "ssh servername %s" % cmd
sshConnection = subprocess.Popen(ssh_command.split(),stderr=subprocess.PIPE
,stdout=subprocess.PIPE,stdin=subprocess.PIPE)
当然,如果命令包含特殊字符,你还需要shell-escape命令。
我个人喜欢使用plumbum的替代方案。您可以嵌套远程(ssh)命令。
答案 1 :(得分:0)
如果通过“浏览另一个框”,表示“启动从跳转框到服务器的ssh连接”,请尝试:
command = "ssh jumpbox ssh servername /bin/ls -l"
sshConnection = subprocess.Popen(command.split(),stderr=subprocess.PIPE
,stdout=subprocess.PIPE,stdin=subprocess.PIPE)
答案 2 :(得分:0)
由于你在子进程中做了很多ssh,我建议你使用Fabric