SFTP 通过 Paramiko 到 ipv6 linux 机器
SFTP via Paramiko to ipv6 linux machine
我对 python 比较陌生,第一次尝试通过 python 脚本使用 sftp。我希望我的 python 脚本从 双栈计算机(存在 IPv4 和 IPv6) 获取文件。下面是我用于 Paramiko 的代码片段:
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 一起使用时,它工作正常。但是当我用 IPv6 地址替换 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 -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 进行文件传输。
注意:当我在 linux 中使用 sftp 命令时,它适用于 ipv4 和 ipv6
任何可能的解决方案或其他建议将不胜感激
Paramiko 的 Transport
class 支持传入套接字对象和元组。那么也许可以尝试专门传入一个 ipv6 套接字?
import socket
sock = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
sock.connect((hostname, port))
transport = paramiko.Transport(sock)
我对 python 比较陌生,第一次尝试通过 python 脚本使用 sftp。我希望我的 python 脚本从 双栈计算机(存在 IPv4 和 IPv6) 获取文件。下面是我用于 Paramiko 的代码片段:
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 一起使用时,它工作正常。但是当我用 IPv6 地址替换 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 -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 进行文件传输。
注意:当我在 linux 中使用 sftp 命令时,它适用于 ipv4 和 ipv6
任何可能的解决方案或其他建议将不胜感激
Paramiko 的 Transport
class 支持传入套接字对象和元组。那么也许可以尝试专门传入一个 ipv6 套接字?
import socket
sock = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
sock.connect((hostname, port))
transport = paramiko.Transport(sock)