![](/img/trans.png)
[英]Execute local python script including local functions on a remote machine without scp
[英]Run python script in remote machine without using SCP
是否有可能在不使用SCP或更好方法的傳輸文件的情況下在遠程計算機上運行python腳本? 我搜索了很多圖書館來解決此問題。 但是並沒有找到最好的解決方案。
我已經發現了一些圖書館使用python腳本,執行SSH和SCP到遠程計算機。 在他們的方法中,首先使用SCP將文件復制到遠程系統,然后通過SSH執行命令。
感謝您
您可以使用fabric 。
顯然,這確實取決於您希望遠程python腳本執行的操作,但是它具有許多與OS交互的輔助功能,包括文件上載和下載,但都是用Python編寫的。
您可以使用標記調用python
以從其標准輸入中讀取腳本,然后通過ssh連接將該腳本提供給python實例,例如:
cat /some/script.py | ssh user@host 'python -'
運行python -
將使python解釋器從進程的標准輸入中讀取腳本。 在這種情況下, ssh
進程的標准輸入將作為python實例的標准輸入傳遞到遠程系統。
如果需要,您可以向python腳本提供其他命令行參數:
cat /some/script.py | ssh user@host 'python - arg1 arg2...'
請注意,python腳本中的所有import
語句都將在遠程系統上解析,因此該腳本必須將其自身限制為遠程python解釋器可用的模塊。
當然。
ssh remotehost python -c "'print(5)'"
無需復制腳本即可執行腳本。 Python解釋器可以運行作為參數給出的腳本。
雙引號是必需的(並且很快就會變得麻煩),因為一個級別的引號已被ssh
調用刪除,而仍需要另一個級別來將腳本分組為python
調用的一個參數。
多行也沒問題:
ssh remotehost python -c "'
import random
print(random.random())'"
將打印類似
0.998373816572
只是知道的東西,引用當您使用'
或"
你的Python腳本,以及。
另一個選擇是將腳本包含在變量中,然后使用printf
正確引用內容:
a='
import random
print(random.random())'
# or use something like a=$(cat myscript.py)
ssh ttiqadm@ttiq-hv02 python -c "$(printf "%q" "$a")"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.