簡體   English   中英

使用pxssh / pexpect發送管道命令

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM