Настройка коммутатора Juniper с помощью python (paramiko)

Я пытаюсь отправить конфигурацию на несколько устройств Juniper. Но в качестве теста я вхожу в режим конфигурации и меняю конфиг.

client1 = paramiko.SSHClient()

client1.set_missing_host_key_policy(paramiko.AutoAddPolicy())

client1.connect(IP, username=username, password=password)

configure = client1.invoke_shell()

configure.send('configure')

configure.send('set interfaces ge-0/0/10 description "test"')

configure.send('show | compare')

print configure.recv(1000)

client1.close()

Я ожидаю результат, как показано ниже:

[edit interfaces ge-0/0/10]
-   description "Internet Simulation Interface connect to QFX ge-0/0/21";
+   description test;

Но фактический вывод таков:

JUNOS 12.3X50-D35 built 2013-10-22 07:02:18 UTC



person sivabala senna    schedule 08.12.2017    source источник
comment
Для приведенного выше запроса ответ импортирует SSHClientInteraction из paramiko_expect. Но теперь проблема может войти в режим конфигурации, но не может отправлять дальнейшие команды.   -  person sivabala senna    schedule 14.12.2017
comment
Это новый код ********************* client1 = paramiko.SSHClient() client1.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client1.connect(IP, имя пользователя =имя пользователя, пароль=пароль) взаимодействие = SSHClientInteraction(client1, timeout=10, display=True) (interact.send('show | compare') cmd_output = interact.current_output_clean print cmd_output client1.close() ************** Чего-то еще не хватает.   -  person sivabala senna    schedule 14.12.2017


Ответы (4)


Вы получаете первые строки Juniper CLI, попробуйте закодировать более высокие принимающие байты в:

print configure.recv(1000)

Пытаться:

print configure.recv(4096)

Дай мне знать.

person rllavona13    schedule 31.12.2017
comment
Ну, я попробовал максимальное количество приемов 65535, но все равно не повезло. - person sivabala senna; 02.01.2018

Я рекомендую вам использовать библиотеку Junos Eznc от juniper для устройств junos. Junos-Eznc GitHub

person rllavona13    schedule 01.02.2018
comment
Чтобы использовать Junos pyez, необходимо включить netconf на всех устройствах Juniper. - person sivabala senna; 09.02.2018

Можете ли вы попробовать приведенный ниже фрагмент? Иногда вам приходится ждать несколько секунд, чтобы получить несколько байтов на ваш стандартный ввод.

configure.send('show | compare')

time.sleep(2)

print configure.recv(1000)
person sri    schedule 10.03.2019

Можете поставить 'cli' перед отправкой команд?

configure = client1.invoke_shell ()
configure.send ('cli') <--- Add
configure.send ('configure')

Вы впервые находитесь в режиме оболочки, когда подключаетесь к JUNOS по SSH. Таким образом, вы можете перейти в рабочий режим, используя cli.

(lab-network) bash-3.2$ ssh root@localhost -p 2201 
Password:
--- JUNOS 12.1X47-D15.4 built 2014-11-12 02:13:59 UTC
root@vsrx1% cli
root@vsrx1> configure 
Entering configuration mode

[edit]
root@vsrx1# 
person sourjp    schedule 14.12.2020