Python:用ssh连接替换shell管道并返回Python变量

2024-09-27 23:24:15 发布

您现在位置:Python中文网/ 问答频道 /正文

这个问题涉及到这个职位的一些延伸。 (Python: replacing shell pipeline with an ssh connection)。 它是关于在Python中翻译以下bash命令:

cat SomePythonScript.py | ssh remote_machine 'python'

使用子流程库和以下代码:

 from subprocess import  PIPE , Popen

  p1 = Popen(["cat", "SomePythonScript.py"], stdout=PIPE)
  p2 = Popen(["ssh", "remote_machine", "cat - | python"], stdin=p1.stdout,stdout=PIPE)

  p1.stdout.close()  
  output = p2.communicate()[0]

效果不错。然后我将输出转换为字节:

output_= ast.literal_eval(output[0].decode("utf-8"))

在我的python项目中获取数据:这是我不高兴的地方,需要一些帮助。 现在,我想避免ast.literal\u eval,直接获取数据

我想把bash命令改成

var="$(cat ssh_get_data_QA_machine.py | ssh con-qa-1010 'python')
echo $var

并用子流程进行翻译。这是正确的方法吗?如果是的话,你能帮我完成这个子流程吗?从上周开始,我在子进程方面取得了一些进展,但我又一次被阻止了:(啊

事先非常感谢


Tags: py命令bashoutputremotestdout流程machine

热门问题