Есть ли способ выполнить два пинга за один сеанс SSH?Python

Программы на Python
Anonymous
Есть ли способ выполнить два пинга за один сеанс SSH?

Сообщение Anonymous »

Я пытаюсь создать скрипт, который осуществляет подключение по ssh к коммутатору Cisco, и тут же делает два пинг-запроса один за другим.
Проблема в том, что я... Делаю это - во втором пинге выдается: «Сеанс SSH не активен». Быстрое решение — установить соединение -> ping, а затем установить второе соединение и пинг, но я хочу выполнить два ping за одно соединение.
Сейчас у меня есть этот код:
Сейчас у меня есть этот код:

Код: Выделить всё

import paramiko
import time

def connect_ssh(ip, username, password):
ssh = paramiko.SSHClient()
try:
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip, 22, username, password, timeout=5)
return ssh, "OK"
except Exception as e:
return None, f"ERROR: {str(e)}"

def remote_ping(ssh, host):
try:
stdin, stdout, stderr = ssh.exec_command(f"ping  {host}")
stdout.channel.recv_exit_status()
response = stdout.read().decode()
return "OK" if "Success rate is 100 percent" in response else "ERROR"
except Exception as e:
return f"ERROR: {str(e)}"

ip = '172.16.1.1'
username = 'a'
password = 'a'

ssh, result_ssh = connect_ssh(ip, username, password)
if ssh:
result_first_ping = remote_ping(ssh, '8.8.8.8')
result_second_ping = remote_ping(ssh, '8.8.4.4')
ssh.close()
else:
result_first_ping = "SSH_FAILED"
result_second_ping = "SSH_FAILED"

print(f"First ping result: {result_first_ping}")
print(f"Second ping result: {result_second_ping}")

Я пробовал заснуть после первого пинг-запроса, я также пробовал сделать это в подпроцессе, и это тоже не сработало, но я не эксперт в этом и возможно, это правильный способ сделать это.

Подробнее здесь: https://stackoverflow.com/questions/787 ... sh-session

Вернуться в «Python»