Используя pexpect pxssh дважды на двух разных портах
Я пытаюсь подключиться через SSH с помощью pxssh к удаленному устройству, однако одно из этих устройств - это порт 2222 SSH, а одно - 22. Я знаю, что могу изменить жестко закодированное значение в pxssh.py на 22 или 2222, но я не знаю, как я могу сделать оба одновременно.
Я посмотрел на функцию pxssh login() и попытался поставить 'port' после пароля, поэтому при вызове pxssh я мог указать требуемый порт, например
файл pxssh.py
def login (self, server, username, password='', port, terminal_type='ansi',original
_prompt=r"[#$]", login_timeout=10,
auto_prompt_reset=True, ssh_key=None, quiet=True,
sync_multiplier=1, check_local_ip=True):
вызывая pxssh логин из моего файла
s.login(server, username, password, port)
Однако эта ошибка с
SyntaxError: non-default argument follows default argument
Затем я подумал, что могу дублировать pxssh и получить pxssh22.py и pxssh2222.py
if something:
from pexpect import pxssh22
else:
from pexpect import pxssh2222
каждый из которых указывает другой номер порта с жестким кодом, однако при вызове он продолжает выдавать ошибку:
try:
s = pxssh2222.pxssh()
s.login(server, username, password)
except pxssh2222.ExceptionPxssh as e:
NameError: global name 'pxssh2222' is not defined
Как я могу использовать pxssh для доступа к портам 2222 и 22. Спасибо
2 ответа
Поскольку ни у кого больше нет никаких идей, я исправил это, переместив аргумент порта в файл pxssh.py, а затем переставив вызов функции s.login для включения порта.
измененный файл pxssh.py
def login (self, server, username, port, password='', terminal_type='ansi',
original_prompt=r"[#$]", login_timeout=10,
auto_prompt_reset=True, ssh_key=None, quiet=True,
sync_multiplier=1, check_local_ip=True):
изменен вход в систему для разрешения аргумента порта.
s.login(sshIP, "root", sshPort, sshPass)
Вы можете указать порт в качестве необязательного параметра при вызове login
метод.
s = pxssh.pxssh()
s.login(server, username, password, port=2222)
Согласно документации, мы можем просто использовать аргументы по умолчанию и порт нашей воли.
host = 127.0.0.1
user = root
password = toor
s.login(host,user,password, terminal_type='ansi', original_prompt='[#$]', login_timeout=10, port=2022)