Paramiko с выполненными эхом командами Juniper - PullRequest
1 голос
/ 25 апреля 2020

При получении o / p от Juniper с использованием Paramiko на выходе сначала отображаются команды, а затем выполняются команды. Ниже приведен код и вывод

import paramiko
import getpass
password = getpass.getpass()
with open('ips.txt','r') as f:      
    ip = f.read().splitlines()
for device in ip:
    ssh_client = paramiko.SSHClient()
    ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh_client.connect(device, port=22, username='test', password=password, look_for_keys=False, allow_agent=False)
    remote_connection = ssh_client.invoke_shell()
    remote_connection.send('set cli screen-length 500\n')
    remote_connection.send('ping 4.2.2.2 rapid\n')
    import time
    time.sleep(3)
    output = remote_connection.recv(4096)
    print(output.decode())
    with open('Backup.txt', 'a+') as f:
        f.write(output)
        f.write("\n********************\n")
    ssh_client.close()

Ниже выводится:

Password: 
--- JUNOS  XXX built XXX
set cli screen-length 500 <---- Is it something relevant with Juniper when running python with paramiko. 
ping 4.2.2.2 rapid <-----
{master:0}
XXX> set cli screen-length 500 
Screen length set to 500

{master:0}
XXX> ping 4.2.2.2 rapid
PING 4.2.2.2 (4.2.2.2): 56 data bytes
!!!!!
--- 4.2.2.2 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 43.876/52.403/55.517/4.345 ms

1 Ответ

0 голосов
/ 25 апреля 2020

Вы выполняете команды, имитируя их ввод в интерфейсе терминала интерактивной оболочки. Поэтому неудивительно, что терминал повторяет то, что вы «печатаете».

Чтобы автоматизировать выполнение команды, не используйте терминал оболочки. Используйте канал S SH "exe c". В Paramiko это SSHClient.exec_command.

См. Python Paramiko - Команда запуска

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...