我創建了一個expect腳本,當執行ssh時,它將執行一系列命令。僞代碼如下所示:在python中執行一個bash腳本
#!/usr/bin/expect
spawn ssh [email protected]
expect "password:"
send "mypassword\n";
send "./mycommand1\r"
send "./mycommand2\r"
interact
當從一個bash shell中(./myscript.txt $)執行的代碼執行罰款。我現在想要做的是在python文件中有一行,它與bash shell一樣運行腳本中的命令。僞代碼如下所示:
import subprocess
def runmyscript():
subprocess.call("myscript.txt", executable="expect", shell=True)
def main():
run = runmyscript():
if __name__ == '__main__': main()
我都放在同一個目錄下的myscript.txt腳本文件作爲我的runmyscript.py文件,但是當我運行python的文件我收到錯誤:
WindowsError: [Error 2] The system cannot find the file specified
我已閱讀documentation on the python.org site,但無濟於事。有沒有人有一個狡猾的解決方案從.py代碼執行bash腳本?
解決方案:此代碼適用於我。
child = subprocess.Popen(['bash', '-c', './myscript.txt'], stdout = subprocess.PIPE)
使用此代碼來調用一個期望文件,SSH和從.py文件發送命令到服務器 - 如果你有內置到您的機器麻煩pycrypto /的paramiko有用的解決方案。
嗯,你可以運行/ usr/bin中/期待myscript.txt,但你也可以寫全指望在python腳本(我建議) – MiJyn
參見http://stackoverflow.com/問題/ 1233655 /什麼是最簡單的方法來使用ssh使用python – krlmlr
lkjoel - 我將如何重寫我的python命令行myscript.txt?在python中編寫期望腳本肯定會更可取 - 這會使添加命令變得更加容易。 user946850的鏈接對於ssh部分很有用。 – gortron