Когда я запускаю следующий код, я получаю искаженный результат:
...
######## Make connection
remote_conn_pre=paramiko.SSHClient()
remote_conn_pre.set_missing_host_key_policy(paramiko.AutoAddPolicy())
remote_conn_pre.connect(ip, port=22, username=username,
password=password,
look_for_keys=False, allow_agent=False)
remote_conn = remote_conn_pre.invoke_shell()
######## commands read from JSON file (commands)
for command in commands["normal"]:
print("-- command: " + command)
remote_conn.send(command + "\n")
while not remote_conn.recv_ready():
time.sleep(0.300)
output = remote_conn.recv(buffersize)
print(output.decode())
...
Результат вывода:
-- command: sh run | section dhcp
sh run | sec dhcp
-- command: sh run | i ip route
ip dhcp bootp ignore
sh run | i ip route
ip route 0.0.0.0 0.0.0 vlan 1
Как вы можете видеть «ip dhcp bootp ignore» результат должен находиться в «разделе DHCP» , а не в «разделе маршрута» .
Правильный результат должен be:
-- command: sh run | section dhcp
sh run | sec dhcp
ip dhcp bootp ignore
-- command: sh run | i ip route
sh run | i ip route
ip route 0.0.0.0 0.0.0 vlan 1
Что здесь не так? Я подумал, что команда не готова, поэтому встроил таймер сна. Тем не менее, кажется, что буфер не пуст или не готов после этого.