paramiko中的管道命令

问题描述 投票:4回答:1

如何在paramiko中运行管道命令?我这样做:

statement = 'grep thing file | grep thing2 | tail -1'
last_msg = conn.execute(statement)

而我只获得grep thing file的输出。

python grep pipe paramiko
1个回答
8
投票

因为grep不知道如何处理|。准备好一些讨厌的逃脱:

statement = """sh -c 'grep thing file | grep thing2 | tail -1'"""

这会在另一侧创建一个shell,并要求它解释字符串grep thing file | grep thing2 | tail -1。单引号是必要的,因为sh -c只接受一个参数。

这样,shell将为您创建管道,运行所有命令。而且你最好确保文件名file不包含空格。如果是的话,试试"file"

如你所见,这很快变得非常难看。我建议你把管道放到shell脚本中。然后你可以避免引号,只需用sh -c script.sh运行脚本。

© www.soinside.com 2019 - 2024. All rights reserved.