(Python)通过跳转框连接子流程管道/运行命令
因此,我想使用python在服务器上运行命令,但要做到这一点,我必须通过另一个框。我通过子流程运行ssh连接到第一个框。但是,我不确定如何进入第二个框并通过该子流程对象运行命令 我的子流程语句:(Python)通过跳转框连接子流程管道/运行命令,python,command,subprocess,Python,Command,Subprocess,因此,我想使用python在服务器上运行命令,但要做到这一点,我必须通过另一个框。我通过子流程运行ssh连接到第一个框。但是,我不确定如何进入第二个框并通过该子流程对象运行命令 我的子流程语句: command = "ssh servername" sshConnection = subprocess.Popen(command.split(),stderr=subprocess.PIPE ,stdout=subprocess.
command = "ssh servername"
sshConnection = subprocess.Popen(command.split(),stderr=subprocess.PIPE
,stdout=subprocess.PIPE,stdin=subprocess.PIPE)
我能想到的唯一方法是:
以某种方式连接两个子流程命令的管道?
首先建立一个SSH隧道,然后通过它运行命令?
还有其他想法吗?我这样做是不对的吗?那么:
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转义
我个人喜欢的一个更巧妙的选择是使用。您可以嵌套远程(ssh)命令。如果“通过另一个框”是指“启动从jumpbox到服务器的ssh连接”,请尝试:
由于您正在使用子流程执行大量ssh,我建议您应该使用执行后,我可以在不关闭ssh连接的情况下执行此操作,并且能够继续发送命令和获取输出吗?谢谢!唯一的问题是,我想保持SSH会话打开,以便继续发送命令。我担心每次运行命令时重新建立SSH会话的资源使用情况。此外,我不能将第三方模块用于此项目:/
command = "ssh jumpbox ssh servername /bin/ls -l"
sshConnection = subprocess.Popen(command.split(),stderr=subprocess.PIPE
,stdout=subprocess.PIPE,stdin=subprocess.PIPE)