私はPythonには比較的新しいので、pythonスクリプトを使って初めてsftpを試しています。私は私のpythonスクリプトデュアルスタックマシン(IPv4とIPv6の両方)からファイルを取得したい。以下はParamikoのコードスニペットです。SFTP via Paramikoからipv6 Linuxマシン
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を介したファイル転送が必要です。
NOTE:私は、Linuxでsftpコマンドを使用すると、任意の可能な解決策や追加の提案は本当に
こんにちは、これはsock.close()メソッドを呼び出す必要がありますか、それともtransport.close()で自動的に閉じます。 –
['Transport.close()'](https://github.com/paramiko/paramiko/blob/5cc85375ca094b398f20acc9f978b88a6d7a9ef4/paramiko/transport.py#L648)あなたのためにソケットを閉じます。 – csinchok