簡體   English   中英

在不使用SCP的情況下在遠程計算機上運行python腳本

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

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