Я относительно новичок в python и впервые пытаюсь использовать sftp через скрипт python. Я хочу, чтобы мой скрипт python получал файл с двухъядерной машины (оба IPv4 и IPv6 присутствуют). Ниже приведен фрагмент кода, я использую для Paramiko:SFTP через Paramiko для ipv6 linux machine
host = ip #ip is a string that has the value of IP
port = 22
transport = paramiko.Transport((host, port))
transport.connect(username = username, password = password)
sftp = paramiko.SFTPClient.from_transport(transport
Когда я использую код с IPv4 он работает отлично. Но когда я заменить IP с адресом IPv6, генерируется следующая ошибка:
Traceback (most recent call last):
File "MyFile.py", line 92, in <module>
putFile()
File "MyFile.py", line 29, in analyzeLogs
transport = paramiko.Transport((host, port))
File "/usr/lib/python2.6/site-packages/paramiko/transport.py", line 289, in __init__
sock.connect((hostname, port))
File "<string>", line 1, in connect
socket.gaierror: [Errno -2] Name or service not known
Я проверил для решения и нашел кого-то с предложением добавить интерфейс вместе с IP, но при попытке такой же я получил следующее сообщение об ошибке:
Traceback (most recent call last):
File "MyFile.py", line 92, in <module>
putFile()
File "MyFile.py", line 29, in analyzeLogs
transport = paramiko.Transport((host, port))
File "/usr/lib/python2.6/site-packages/paramiko/transport.py", line 289, in __init__
sock.connect((hostname, port))
File "<string>", line 1, in connect
socket.gaierror: [Errno -9] Address family for hostname not supported
Мой первоначальный сервер не будет двухъядерной машиной, и, следовательно, мне нужно передать файл только через IPv6.
ПРИМЕЧАНИЕ: Когда я использую команду SFTP в Linux, она работает как для ipv4 и ipv6
Любое возможное решение или дополнительные предложения будут действительно оценили
Здравствуйте, это требует, чтобы метод sock.close() вызывался или автоматически закрывался с помощью transport.close(). –
['Transport.close()'] (https://github.com/paramiko/paramiko/blob/5cc85375ca094b398f20acc9f978b88a6d7a9ef4/paramiko/transport.py#L648) закроет для вас сокет. – csinchok