我正在尝试将配置推送到多个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
答案 0 :(得分:0)
您正在获取Juniper CLI
的第一行,尝试编写更高的接收字节:
print configure.recv(1000)
尝试:
print configure.recv(4096)
让我知道。
答案 1 :(得分:0)
我建议您使用Juniper的Junos Eznc库来安装junos设备。 Junos-Eznc GitHub
答案 2 :(得分:0)
您可以尝试以下提到的代码段吗?有时,您需要等待几秒钟才能在stdin上接收一些字节。
configure.send('show | compare')
time.sleep(2)
print configure.recv(1000)
答案 3 :(得分:0)
您可以在发送命令之前放置'cli'吗?
configure = client1.invoke_shell ()
configure.send ('cli') <--- Add
configure.send ('configure')
通过SSH连接到JUNOS时,您首先处于外壳模式。因此,您可以使用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#