import paramiko
import socks
import arrow
a = arrow.now()
today = a.format('YYYYMMDD')
yestoday = a.shift(days=-1).format('YYYYMMDD')
def create_proxy_socket(proxy_host, proxy_port, username, password, destination_host, destination_port):
# 创建一个带有身份验证的 socks HTTP 代理
s = socks.socksocket()
s.set_proxy(socks.HTTP, proxy_host, proxy_port, username=username, password=password)
s.connect((destination_host, destination_port))
return s
def connect_sftp_via_http_proxy(proxy_host, proxy_port, sftp_host, sftp_port, username, password, proxy_username,
proxy_password):
# 使用 Paramiko SSH 客户端连接 SFTP
transport = paramiko.Transport(
create_proxy_socket(proxy_host, proxy_port, proxy_username, proxy_password, sftp_host, sftp_port))
try:
transport.start_client()
transport.auth_password(username=username, password=password)
# 创建 SFTP 客户端会话
sftp = paramiko.SFTPClient.from_transport(transport)
# 示例操作: 列出目录内容
opo_list = sftp.listdir('/Daily_Open_PO')
opo_list = [i for i in opo_list if yestoday in i]
print('len open opo',len(opo_list), opo_list)
return sftp
except Exception as e:
print(f"Failed to connect to SFTP via HTTP proxy: {e}")
finally:
transport.close()
# 连接参数
proxy_host = '10.'
proxy_port = 3128
proxy_username = 'H'
proxy_password = 'r'
sftp_host = 'com'
sftp_port = 22
username = 'SFTP'
password = 'll'
# 使用 HTTP 代理连接 SFTP
sftp_client = connect_sftp_via_http_proxy(
proxy_host, proxy_port, sftp_host, sftp_port, username, password,
proxy_username, proxy_password
)
# 完成后关闭 SFTP 客户端
if sftp_client:
sftp_client.close()
01-13
03-29
1441
11-10