Как выполнить команду, написанную в скрипте python в терминале ma c сразу после входа на сервер - PullRequest
0 голосов
/ 19 февраля 2020
import os.path
import subprocess
import sys
os.system('sshpass -p password ssh root@esst-warp-d')
subprocess.call('lscpu')

Я попробовал приведенный выше код, но команда будет выполнена после выхода из сервера.

import os.path
import subprocess
import sys
os.system('sshpass -p password ssh root@esst-warp-d')
ssh root@esst-warp-d "lscpu"

Если я попробую приведенный выше код, в пятой строке я получу неверный синтаксис

Не могли бы вы помочь мне разобраться с проблемой.

1 Ответ

0 голосов
/ 19 февраля 2020

Когда вы запускаете os.system("sshpass ..."), он создает новый процесс, не связанный ни с чем другим, и запускает в нем вашу команду sshpass. Затем процесс завершается.

Когда вы запускаете subprocess.call(), он создает новый процесс, не связанный с тем, который только что вышел, на вашем локальном компьютере и запускает в нем вашу команду. Затем процесс завершается.

Вы действительно хотите создать новый процесс, который подключается к удаленной машине Linux и затем запускает там команду, поэтому вам нужно:

sshpass -p password ssh root@esst-warp-d '/path/to/lscpu'

Попробуйте это в своем терминале.

...