qq304999574 2022-08-18 14:37 采纳率: 0%
浏览 102
已结题

paramiko如何使用代理服务器上传文件到对方服务器?

paramiko问题

手动上传我会使用winSCP连接 但是每天重复上传文件很累想使用python的模块每天定时上传
但是winSCP是使用了代理服务器才能成功连接。

基础信息

IP:206.19.222.8
账号:admin
密码:无
秘钥地址:D:\jax\id_rsa

img

基于一些安全或其他原因公司需要填写代理才能连接到对方服务器 图如下

img

那么我在代码里面该怎么改写呢?或者有其他模块以及代码能实现,麻烦各位师傅告知,感激不尽!

基础命令连接方式代码

import paramiko
private_key_path=r'D:\jax\id_rsa' # 私钥地址

 # 读取本地私钥
 private_key = paramiko.RSAKey.from_private_key_file(private_key_path)

# 创建SSH对象
ssh = paramiko.SSHClient()

# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 连接服务器
ssh.connect(hostname='206.19.222.8', port=22, username='admin', pkey=private_key)

# 执行命令
stdin, stdout, stderr = ssh.exec_command('ls /')

# 获取命令结果
result = stdout.read()
print(result.decode('utf-8'))

# 关闭连接
ssh.close()

基础文件上传方式代码

import paramiko
localpath=r"D:\jax\ABC.text" #本机文件路径
private_key_path=r'D:\jax\id_rsa' # 私钥地址

 # 读取本地私钥
private_key = paramiko.RSAKey.from_private_key_file(private_key_path)

# 连接并创建sftp对象
tran = paramiko.Transport(('206.19.222.8', 22))
tran.connect(username="admin", pkey=private_key)
sftp = paramiko.SFTPClient.from_transport(tran)

#远程地址
remotepath = "/upload/" + file_name  

# 上传
sftp.put(localpath, remotepath)

#关闭连接
tran.close()
  • 写回答

4条回答 默认 最新

  • 快乐骑行^_^ 领域专家: 大数据技术领域 2022-08-18 15:27
    关注

    是想实现下面的需求么?我应该能搞定
    1.定时把本地文件上传到代理服务器
    2.从代理服务器同步文件到目标服务器

    评论

报告相同问题?

问题事件

  • 系统已结题 8月26日
  • 修改了问题 8月18日
  • 创建了问题 8月18日