目前,我正在使用Pythonsubprocess.POPEN
和PuTTY进行SFTP传输psftp.exe
。
它正在工作,但不是很干净也不便于运输。
我想使用Python pysftp重现相同的行为,但是我不知道在哪里输入所有参数。我在PuTTY中具有以下配置:
如何在pysftp中输入所有这些参数,以便可以检索文件?
编辑:使用马丁·普里克里(Martin Prikryl)的答案,我发现了一些新的东西要探索。如果我理解得很好,则需要使用套接字。我仍然在输入我需要的所有信息时遇到一些问题。
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
proxy = ("gw.proxy.fr",1234)
sock.connect(proxy)
target=("123.123.123.255",23)
cmd_connect = "CONNECT {}:{} HTTP/1.1\r\n\r\n".format(*target)
sock.sendall(cmd_connect)
我从中收到的响应是HTTP/1.0 407 Proxy Authentication Required
,这很正常,因为我没有在任何地方使用代理身份验证信息。那么,您是否知道如何使用它们并将其输入到我的插座中?
我不认为pysftp支持代理。不过请注意,pysftp只是Paramiko库的包装,它确实支持代理。
因此,我建议您直接使用Paramiko。
首先,请参阅如何在Python Paramiko中通过HTTP代理进行SSH?,尤其是@tintin的答案。
要向代理进行身份验证,请在CONNECT
命令后添加以下Proxy-Authorization
标头:
Proxy-Authorization: Basic <credentials>
其中<credentials>
是以base-64编码的string username:password
。
auth = 'Basic ' + base64.encodebytes("username:password".encode()).decode()
args = ("123.123.123.255", 23, auth)
cmd_connect = "CONNECT {}:{} HTTP/1.1\r\nProxy-Authorization: {}\r\n\r\n".format(*args)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句