[英]Write a python script that enters commands on an ubuntu terminal?
我在Ubuntu 16.04上使用spyder。 我想編寫一個腳本,它將在同一Linux終端中執行多個命令。
首先,我想打開一個終端,然后SSH到另一台計算機,然后輸入我的密碼,然后繼續輸入命令。
我已經嘗試過os.system(command)
但這並沒有為我打開新的終端,也沒有運行我想要的命令。
os.system("gnome-terminal -e 'bash -c \\"ssh blah blah blah; exec bash\\"'")
可以正常工作,但是在嘗試輸入密碼時卡住了。
在這種情況下,如何使用Python腳本輸入命令?
如果您希望使用密碼自動連接並登錄到ssh服務器,則可以使用sshpass
輸入密碼,但最好使用SSH密鑰。 Github上對如何生成密鑰一個很好的教程在這里 。
如果您希望在SSH進入服務器后執行命令,可以使用以下命令執行: os.system("ssh user@host 'command1 && command2'")
為了在終端上執行命令,您可以使用python的子進程模塊。 目前已經是一個問題, 在這里就如何執行使用與子單個終端與多個命令。
如果使用的是Gnome,則可以將subprocess
模塊與gnome-terminal
命令一起使用。
這個想法是產生一個GUI終端,並通過-e
選項在其中執行腳本。 這是一個非常簡單的示例,說明如何在新終端中執行Shell腳本。
myscript.sh
#!/bin/bash
pwd
ls
cat
spawn_and_run.py
import subprocess
subprocess.Popen(["gnome-terminal", "-e", "myscript.sh"])
運行python spawn_and_run.py
將產生一個新的終端,打印工作目錄( pwd
),打印該目錄的內容( ls
),然后回顯來自stdin
(不帶參數的cat
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.