【问题标题】:python subprocess output redirectionpython子进程输出重定向
【发布时间】:2021-03-25 18:42:54
【问题描述】:

我正在编写一个将ssh 插入服务器并读取一些文件内容的python 脚本。假设它们是 file1.txt、file2.txt 和 file3.txt。

现在我在做

commands = "ssh {host} {port}; cat file1.txt; cat file2.txt; cat file3.txt"

p = subprocess.run(commands, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)

但这给出了三个连接的文件的内容。有什么方法可以将每个命令的输出重定向到不同的管道,以便我可以轻松区分哪个输出来自哪个文件?

【问题讨论】:

    标签: python ssh subprocess stdout


    【解决方案1】:

    当您按照您的方式使用subprocess 时,您将按顺序和批量执行命令,同时获取标准输出。我的建议是一个一个地运行它们,例如:

    command1 = "ssh {host} {port}; cat file1.txt"
    command1 = "ssh {host} {port}; cat file2.txt"
    command1 = "ssh {host} {port}; cat file3.txt"
    
    commands = [command1, command2, command3]
    
    for cmd in commands:
         p = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
         # DO SOMETHING ABOUT THE OUTPUT OR IN BETWEEN OUTPUTS
    

    您也可以建立SSH 连接并一一发送命令,而不是每次都登录。为此,我建议您查看this answer

    【讨论】:

    • @SEUNGWON LEE:您能否查看答案并考虑接受它(使用答案左侧的灰色勾号)?
    猜你喜欢
    • 1970-01-01
    • 2013-06-02
    • 2023-03-06
    • 2022-01-14
    • 2011-06-25
    相关资源
    最近更新 更多