SSHTunnelForwarder - «IP не является строкой (NoneType)» - PullRequest
0 голосов
/ 25 августа 2018

Я пытаюсь использовать SSHTunnelForwarder.Я получаю сообщение об ошибке "IP не является строкой (NoneType)".Если я правильно понимаю, это означает, что переменная хоста, которую я передаю, имеет тип NoneType и должна иметь тип String.Распечатка типа переменных показывает, что он имеет тип string:.

Я обобщил данный код.Смотрите ниже:

def connectToClient(client):
    key, host = getClientInfo(client)
    # Both of the below print statements return <class 'str'>
    print(type(key))
    print(type(host))

    try:
        with SSHTunnelForwarder(
            ssh_username = "username",
            ssh_private_key = key,
            remote_bind_address = (host, 22)) as server:
                # Do stuff here

    except Exception as e:
        # Handle exception

Stack Trace (отредактировано, чтобы скрыть информацию о файловой системе и имя файла .py. Также тестирование с 0.0.0.0):

Traceback (most recent call last):
  File "/path/to/file/myPythonFile.py", line 83, in connectToClient
    remote_bind_address = ('0.0.0.0', 22)) as server:
  File "/path/to/file/lib/python3.6/site-packages/sshtunnel.py", line 908, in __init__
    check_host(self.ssh_host)
  File "/path/to/file/lib/python3.6/site-packages/sshtunnel.py", line 79, in check_host
    type(host).__name__
AssertionError: IP is not a string (NoneType)

Я бы хотел указатьчто даже если я заменю переменную хоста строкой, содержащей IP-адрес (т. е. «127.0.0.1»), я все равно получу ту же ошибку.

Возможно, я делаю простую ошибку.Есть идеи?

Редактировать: Исправить форматирование и добавить трассировку стека

1 Ответ

0 голосов
/ 25 августа 2018

Вам не хватает аргумента.См. пример .
На практике вы звоните SSHTunnelForwarder без ключевого аргумента ssh_address_or_host, который представляет IP-адрес и, необязательно, номер порта удаленного хоста.
Действительно, высбивая с толку значение remote_bind_address, используя его как ssh_address_or_host.

Когда метод проверит для части хоста относительно IP, не найдет строку, но None, и здесь произойдет исключение.См. код .

...