我正在嘗試調用一些本地bash腳本,這些腳本是爲遠程服務器上的健康檢查應用程序編寫的。使用subprocess.Popen()從文件讀取輸入ssh
ssh -q <servername> "bash -s" -- < ./path/to/local/script.bash
上面的命令行運行非常好。然而,當我在包裹蟒蛇的號召,我不斷收到錯誤,指出:
bash: /path/to/file/script.bash: No such file or directory
至於我的蟒蛇,我使用的子模塊。 Python:
bashcmd="ssh -q %s \"bash -s\" -- < ./%s" % (<server>,<bashfilepath>)
process=subprocess.Popen(bashcmd.split, stdout=subprocess.PIPE)
output, error = process.communicate()
任何幫助,將不勝感激!
你爲什麼要在'bashfilepath'值前加一個明確的'./'?首先刪除它,並確保你的'bashfilepath'值是正確的。 – roaima
@roima這個問題真的是關於如何用Python'subprocess.Popen()'設置'stdin'。問題是shell中的例子工作正常。我在Python程序的答案中提供的更改解決了這個問題。這個問題沒有正確使用Python API。關於[off-topic]的幫助頁面(https://unix.stackexchange.com/help/on-topic)在shell腳本之外的編程問題上說:「*如果你的問題是一個編程問題,需要其他編程語言的知識而不是unix shell腳本語言,請問Stack Overflow。*「 – sebasth