有沒有辦法通過將其管道輸入到fabric的遠程shell的標準輸入來執行多行shell腳本?或者我必須總是將它寫入遠程文件系統,然後運行它,然後刪除它?我喜歡發送給stdin,因爲它避免了臨時文件。如果沒有結構API(似乎沒有基於我的研究),大概我可以直接使用ssh
模塊。基本上我希望fabric.api.run
不限於作爲命令行參數傳遞給shell的單行命令,而是將一個完整的多行腳本寫入遠程shell的標準輸入。使用結構和管道腳本文本運行shell腳本到shell的標準輸入
爲了澄清我想面料相當於此命令行的:
ssh somehost /bin/sh < /tmp/test.sh
除了在Python腳本源折軸將不是來自本地文件系統上的文件時,這純粹是一個多行字符串記憶。請注意,這是一個單一的邏輯操作,遠程端沒有臨時文件,這意味着意外的故障和崩潰不會離開孤立文件。如果在結構中存在這樣的選項(這就是我所問的),那麼在任何一方都不需要臨時文件,這隻需要一個單獨的ssh操作。
爲什麼不這樣做的run(「命令1 &&命令2 && command2的」 ')? – Tshepang 2012-07-30 21:37:21
因爲A)不容易讀取或寫入或維護爲shell-in-python代碼,B)&&以您可能或不想要的方式影響您的代碼流; C)世界已經充滿現有的shell我想通過結構運行腳本而不將它們轉換爲單行。 – 2012-07-30 22:23:45