我目前正在使用pxssh for Python,它的工作就像一个魅力,但似乎它不处理管道(|)命令 - 它将它们解释为单独的。
目前我有以下内容:
s = pxssh.pxssh()
s.login(sshHost, sshUsername, sshPassword)
s.sendline("cat somefile | grep something | cut -d \' -f 4")
它适用于任何非管道的命令,但是我需要发送一个管道。
pxssh有没有办法解决这个问题,或者你可以建议一种方法来实现这个命令的另一个解决方案吗?
答案 0 :(得分:1)
我不清楚为什么pxssh会像你描述的那样表现。您确定问题不在于您的\'
是否由Python解释,而您希望它由远程shell解释?那样拼写会更好:
s.sendline("cat somefile | grep something | cut -d \\' -f 4")
你当然有其他选择。一种方法是使用单个命令而不是管道,例如:
s.sendline("sed -n '/something/ { s/\\([^,]*,\\)\\{3\\}\\([^,]*\\),.*/\\2/; p }'")
作为一种特殊情况,您可以启动运行管道的子shell:
s.sendline('''bash -c "cat somefile | grep something | cut -d \\' -f 4"''')