Python之办公自动化SFTP

30 篇文章 0 订阅

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

公司里B2B是通过WinSCP里SFTP与客户进行数据传输,WinSCP是一个Windows环境下使用SSH的开源图形化SFTP客户端,本想偷个懒拿同事的WinSCP的SFTP代码给总部传数据,同事给的代码调用WinSCP就是执行不成功,不知道WinSCP是否有新旧版本兼容,还是必须两边的操作系统都需要是Windows环境呢,最后只能硬着头皮查资料重新写了一个。


提示:以下是本篇文章正文内容,下面案例可供参考

一、sftp和ftp的区别是什么?

sftp和ftp的区别在安全通道,使用的协议,链接方式,安全性等方面都有不同.
1、sftp是一种安全的文件传输协议,一种通过网络传输文件的安全方法。它确保使用私有和安全的数据流来安全地传输数据。
2、ftp是文件传输协议。ftp 不提供任何安全通道来在主机之间传输文件。在网站上,如果你想把文件和人共享,最便捷的方式莫过于把文件上传到ftp服务器上,其他人通过FTP客户端程序来下载所需要的文件。
sftp和ftp不同的具体表现:
ftp不提供任何安全通道来在主机之间传输文件;而sftp协议提供了一个安全通道,用于在网络上的主机之间传输文件。ftp使用TCP / IP协议。而,sftp是SSH协议的一部分,它是一种远程登录信息。ftp使用TCP端口21上的控制连接建立连接。而,sftp是在客户端和服务器之间通过SSH协议(TCP端口22)建立的安全连接来传输文件。ftp密码和数据以纯文本格式发送,大多数情况下是不加密的,安全性不高。而,sftp会在发送之前加密数据,二进制的形式传递,是无法“按原样”阅读的,安全性较高。
具体请去网上查看

二、使用步骤

1.程序结构

在这里插入图片描述

2.配置文件

config.yaml代码如下(示例):

CONFIG: &config
  # 日志配置文件路径
  LOGGING_CONFIG_PATH: ./Configs/logging.yaml
  # 日志文件存放位置
  LOGGING_PATH: ./logs
  # SFTP
  FTP_HOST: ***.*****.com
  FTP_PORT: 22
  FTP_USER_NAME : XXXXXXXXX
  FTP_PASSWORD : XXXXXXXXX
  HOME_DIR : /
  REMOTE_PATH : /XXX/
  LOCAL_DIR : D:\Web\HR
  LOCAL_DESDIR : D:\Web\HR\TMP
  # 邮件
  SMTP_SERVER : CNMAIL
  SMTP_USER_NAME : XXX@163.com
  SMTP_USER_PWD : XXX
  FROM_MAIL : isadmin@XXX.com
  TO_MAIL : XXX.zhang@XXX.com
  CC_MAIL : XXX.zhang@XXX.com




DEVELOPMENT : &development
  <<: *config # 继承config,没有重新定义的变量,使用config变量值
  DEBUG: True

PRODUCTION : &production
  <<: *config # 继承config,没有重新定义的变量,使用config变量值
  DEBUG: True

3.读入配置文件

代码如下(示例):

def create_app(config_name=None, config_path=None):
    app = Flask(__name__)
    # 读取配置文件
    if not config_path:
        pwd = os.getcwd()
        config_path = os.path.join(pwd, 'Configs/config.yaml')
    if not config_name:
        config_name = 'PRODUCTION'
    conf = read_yaml(config_name, config_path)
    app.config.update(conf)

    if not os.path.exists(app.config['LOGGING_PATH']):
        # 日志文件目录
        os.mkdir(app.config['LOGGING_PATH'])
    # 日志设置
    with open(app.config['LOGGING_CONFIG_PATH'], 'r', encoding='utf-8') as f:
        dict_conf = yaml.safe_load(f.read())
    logging.config.dictConfig(dict_conf)  # 载入日志配置

    return app

4.sftp_client.py

在这里插入图片描述

5.email_client.py

在这里插入图片描述

6.main.py

在这里插入图片描述

代码如下(示例):

if __name__ == "__main__":

    remotePath = "" 
    localPath = ""  
    runSFTP(remotePath, localPath)

总结

记录点点滴滴

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

panda_225400

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值