Как в библиотеке paramiko симулировать нажатие клавиш (стрелка вниз, Enter)?

Как написать скрипт на Python для подключения к АПКШ Континент-4 по SSH и получения информации из таблицы arp, учитывая необходимость взаимодействия с псевдографическим меню для доступа к "командной строке"? Как исправить код, чтобы гарантировать правильное взаимодействие со встроенным меню перед получением arp таблицы?
  • 8 июля 2024 г. 11:32
Ответы на вопрос 2
Для симуляции нажатия клавиш с помощью библиотеки paramiko можно воспользоваться методом `exec_command()` для отправки команды на удаленный сервер.

Вот пример скрипта на Python для подключения к АПКШ Континент-4 по SSH и получения информации из таблицы arp:

```python
import paramiko
import time

# Установка соединения по SSH
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect('ip_адрес_континента-4', username='ваше_имя_пользователя', password='ваш_пароль')

# Открываем канал
channel = client.invoke_shell()

# Взаимодействие с псевдографическим меню
channel.send("ваша_команда_для_входа_в_модуль\n")
time.sleep(1)
channel.send("ваша_команда_для_перехода_в_командную_строку\n")
time.sleep(1)

# Отправляем команду для получения arp таблицы
channel.send("show arp\n")
time.sleep(1)

# Получаем вывод
arp_table = channel.recv(65535).decode('utf-8')

# Печатаем результат
print(arp_table)

# Закрываем канал и соединение
channel.close()
client.close()
```

Для правильного взаимодействия со встроенным меню перед получением arp таблицы, нужно добавить достаточные задержки (`time.sleep()`) после отправки каждой команды, чтобы дать устройству время на обработку команды и вывод результата.

Также, возможно, вам потребуется включить `use_pty=True` при вызове `exec_command()`, чтобы корректно обрабатывалась последовательность взаимодействия с меню.
Закрываю вопрос <br/> <br/> я заметил, что на самом деле и в самом PuTTy мой spsl script срабатывает, только если выбран в T <i>erminal/Keyboard/Function keys and keyboard </i> <b>Xterm R6</b> <br/> <br/> поперебирав варанты при вызове <br/> <br/> <code>ssh = client.invoke_shell(term = 'linux')</code> <br/> <br/> я нашел что все работатает вот при такой комбинации <b>term = 'linux'</b> по умолчанию видимо <b>vt100</b>
Похожие вопросы