Добрый день
есть такие замечательные АПКШ Континент-4, к которым можно подключиться по SSH но чтобы посмотреть таблицу arp например, надо в псевдографическом меню 3 раза нажать DOWN потом 2 раза ENTER, еще раз DOWN и т.д.
все это чтобы попасть в так называемую "командную строку"
в SupperPutty я написал просто SPSL script, который и посылает все эти DOWN и ENTER
хочу подключаться и получать arp таблицу из python
в netmiko даже BaseConnection видно что устанавливает соединение, но отваливается по таймауту в ожидание "приглашения" а его там нет
решил использовать paramiko
простой скриптик
import time
import paramiko
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
KEY_DOWN = b'\x1b[B'
KEY_ENTER = b'\x0D'
device = {'username': 'user', 'password': 'password', 'hostname': 'myhost'}
cmd = 'neigh \r'.encode()
client.connect(**device)
ssh = client.invoke_shell()
ssh.send(KEY_DOWN)
time.sleep(2)
ssh.send(KEY_DOWN)
time.sleep(2)
ssh.send(KEY_DOWN)
time.sleep(2)
ssh.send(KEY_ENTER)
time.sleep(2)
ssh.send(KEY_ENTER)
time.sleep(2)
data = ssh.recv(99999).decode('utf-8')
print(data)
показывает (там конечно куча абракадабры) экран, на который можно попасть, просто нажав 2 раза ENTER
сделал после установления соединения:
ssh.send(KEY_ENTER)
time.sleep(2)
ssh.send(KEY_ENTER)
time.sleep(2)
data = ssh.recv(99999).decode('utf-8')
print(data)
да, действительно я попадаю на этот экран.
т.е. или байт код для стрелки DOWN я пишу неправильно, или что то еще
я обыскал весь интернет, предлагают escape последовательность
'\eB[' но парамико надо передавать именно байт-код
или же paramiko свой метод .send(s) всегда закачивает '\r' или '\r\n' - как тогда этого избежать