Как выполнить s sh на удаленный сервер linux с помощью сценария python и иметь возможность выполнять команду от имени пользователя, указанного при использовании s sh в сценарии python - PullRequest
1 голос
/ 04 августа 2020

Мне нужно контролировать от 8 до 9 серверов. Я думаю о создании сценария python, который создаст меню для входа на любые серверы, и после использования s sh для входа на сервер могу ли я выполнять команды на сервере как «пользователь», указанный в s sh. См. Команду ниже в python. Я импортирую os для выполнения команд bash.

 server_login = "ssh {}@{}".format('user_name','10.111.0.10')
            os.system(server_login)

Ответы [ 2 ]

1 голос
/ 04 августа 2020

вы можете установить paramiko для этого

pip install paramiko

тогда сценарий может выглядеть как


import paramiko

host = "google.com"
port = 22
username = "user"
password = "Pass"

command = "ls"

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, port, username, password)

stdin, stdout, stderr = ssh.exec_command(command)
lines = stdout.readlines()
print(lines)

0 голосов
/ 04 августа 2020

Если paramiko не в вашем стиле, я могу придумать два других способа сделать это:

запустить команду: ssh <user>@<host> <command> для каждой команды через вызовы os.system. Это становится довольно громоздким, когда вы используете пароли для S SH вместо ключей.

запускайте ssh <user>@<host> с библиотекой subprocess вместо этого, чтобы вы могли получить доступ к stdin и stdout и запустить несколько команд в сеанс

import subprocess
p = subprocess.Popen(['ssh','root@example.com'], stdout=PIPE, stdin=PIPE)
p.stdin.write("ls\n")
print(p.stdout.read())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...