我正在windows機器上運行python腳本以調用遠程linux機器上的另一個python腳本。我使用subprocess.call與ssh來做到這一點,如下所示: subprocess.call('ssh -i <identify file> [email protected] python <script_on_linux_machine>')
,這工作正常。設置環境變量subprocess.call在遠程Linux機器上運行python腳本時出錯
但是,如果我想設置一些環境變量,如下所示: subprocess.call('ssh -i <identify file> [email protected] python <script_on_linux_machine>', env={key1:value1})
它失敗。 我得到以下錯誤: ssh_connect: getnameinfo failed ssh: connect to host <hostname> port 22: Operation not permitted 255
我試着將ssh命令分成列表和傳遞。沒有幫助。 我試圖通過subprocess.call()
運行其他「本地」(Windows)命令並嘗試設置env。它工作正常。 我試圖在遠程linux機器上運行其他命令(如ls
)。再次,subprocess.call()
工作正常,只要我不嘗試設置環境。
我在做什麼錯?我能在遠程機器上設置python腳本的環境嗎?任何幫助將不勝感激。
感謝您的回覆。但是,我想要設置的env變量只有在運行時才知道 - 當我在windows機器上運行腳本時。所以,我需要在運行時將這些環境變量傳遞給運行在遠程機器上的腳本。 –
這有幫助嗎? – pydsigner
謝謝。是的,這讓事情變得清晰。因此,如果我理解正確,我現在應該創建兩個'subprocess.calls' - 一個用於setEnv.py,另一個用於我想要執行的實際腳本。第一次通話中設定的'env'是否會反映第二次通話?我可以嘗試驗證它,但我需要等到星期一。因此,這個問題。 –