2016-05-07 3 views
0

Я новичок в python. Мне нужно ежедневно подключаться к серверу (рабочий стол -> 1.32 -> 0.20 -> 3.26). Для этого мне нужно открыть putty и использовать ssh-соединение, в которое я вхожу. Для этого я хочу написать скрипт с использованием python.открыть окно шпатлевки и запустить команды ssh - Python

С помощью google я думал, что подпроцесс.Popen сделает это. Но его не работает нормально.

первый след:

import subprocess 
pid = subprocess.Popen("putty.exe [email protected] -pw password").pid 

Сво работает нормально (Открытие протоколирование окна в .32). Но не может дать вход. Я узнал, что для ввода ввода для того же процесса нам нужно использовать трубы.

второй след:

from subprocess import Popen, PIPE, STDOUT 
p = Popen("putty.exe [email protected] -pw password", stdout=PIPE, stdin=PIPE, stderr=STDOUT)  
grep_stdout = p.communicate(input=b'ssh xx.xx.x.20\n')[0] 
print(grep_stdout.decode()) 

с помощью этого я наклоняюсь вход для первого сервера также. После входа на все серверы мне нужен терминал как живой. как это сделать ???

Редактировать

мне нужно сделать это в новом окне замазки. После входа в систему не закройте окно. У меня есть ручная работа.

ответ

0

Существует реализация протокола SSHv2 для python: http://www.paramiko.org/. Вы можете легко установить его с пип:

pip install paramiko 

Затем вы можете создать SSH-клиент, подключиться к хосту и выполнить команды:

import paramiko 
ssh_client = paramiko.SSHClient() 
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
ssh_client.connect('hostname', username='login', password='pwd') 
stdin, stdout, stderr = ssh_client.exec_command('command') 
0

Использование paramiko библиотеки питона установить соединение SSH с помощью -

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

Проверка состояния соединения, если жив, используя -

status = ssh.get_transport().is_active() 
#returns True if connection is alive/active 

ssh.exec_command() - это в основном один сеанс. Используйте exec_command (1; 2) для выполнения нескольких команд в одной сессии

Кроме того, вы можете использовать эту функцию для выполнения нескольких команд в одной сессии

channel = ssh.invoke_shell() 
stdin = channel.makefile('wb') 
stdout = channel.makefile('rb') 
stdin.write(''' 
    Command 1 
    Command 2 
    ''') 

print stdout.read() 
+0

мне нужно совать новое окно (шпатлевка) и должны авторизоваться. После завершения входа на весь сервер (Desktop -> 1.32 -> 0.20 -> 3.26) не закрывайте окно шпатлевки (у меня есть ручная работа для проверки). –

Смежные вопросы