[英]Sending piped commands with pxssh/pexpect
我目前正在使用pxssh for Python,它的工作方式很吸引人,但是似乎它不處理管道(|)命令-它將它們解釋為單獨的命令。
目前,我有以下內容:
s = pxssh.pxssh()
s.login(sshHost, sshUsername, sshPassword)
s.sendline("cat somefile | grep something | cut -d \' -f 4")
它可以與任何未通過管道傳輸的命令一起正常工作,但是我現在需要發送一個通過管道傳輸的命令。
是否可以通過pxssh解決此問題,或者您可以建議一種方法來實現此命令的另一種解決方案?
我不清楚為什么pxssh會像您描述的那樣表現。 您確定問題不是Python解釋了\\'
,而是您希望它被遠程shell解釋嗎? 最好這樣拼寫:
s.sendline("cat somefile | grep something | cut -d \\' -f 4")
您當然有其他選擇。 一種方法是使用單個命令而不是管道,例如:
s.sendline("sed -n '/something/ { s/\\([^,]*,\\)\\{3\\}\\([^,]*\\),.*/\\2/; p }'")
作為一種特殊情況,您可以啟動一個子外殼來運行管道:
s.sendline('''bash -c "cat somefile | grep something | cut -d \\' -f 4"''')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.