Я создал сценарий ожидания, который при запуске ssh на сервере и выполняет серию команд. Псевдокод выглядит следующим образом:Выполнение скрипта bash в python
#!/usr/bin/expect
spawn ssh [email protected]
expect "password:"
send "mypassword\n";
send "./mycommand1\r"
send "./mycommand2\r"
interact
При выполнении из Баш оболочки ($ ./myscript.txt) код выполняется нормально. Теперь я хотел бы сделать строку в файле python, которая запускает команды в скрипте так же, как это делает оболочка bash. Псевдокод выглядит следующим образом:
import subprocess
def runmyscript():
subprocess.call("myscript.txt", executable="expect", shell=True)
def main():
run = runmyscript():
if __name__ == '__main__': main()
Я поместил файл myscript.txt сценария в том же каталоге, что мой файл runmyscript.py, но когда я запускаю файл питона я получаю сообщение об ошибке:
WindowsError: [Error 2] The system cannot find the file specified
Я прочитал documentation on the python.org site, но безрезультатно. У кого-нибудь есть хитрое решение для выполнения сценариев bash изнутри .py кода?
РЕШЕНИЕ: этот код работает для меня.
child = subprocess.Popen(['bash', '-c', './myscript.txt'], stdout = subprocess.PIPE)
Используется этот код, чтобы вызвать Expect файл SSH и посылать команды на сервер из .py файла - полезное решение, если у вас возникли проблемы при получении PyCrypto/paramiko построен на вашей машине.
Ну, вы можете запустить/USR/BIN/ожидать myscript.txt, но вы можете написать весь ожидать скрипт в Python (который я рекомендую) – MiJyn
Смотрите также http://stackoverflow.com/ Вопросы/1233655/what-is-the-simple-way-to-ssh-using-python – krlmlr
lkjoel - как бы я переписал свои командные строки в myscript.txt из python? Написание сценария ожидания в python, безусловно, было бы предпочтительнее - упростило бы добавление команд. Ссылка пользователя946850 полезна для секции ssh. – gortron