首頁 > 軟體

Python辦公自動化SFTP詳解

2022-08-01 22:03:13

前言

提示:這裡可以新增本文要記錄的大概內容:

公司裡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:WebHR
  LOCAL_DESDIR : D:WebHRTMP
  # 郵件
  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)

總結

到此這篇關於Python辦公自動化SFTP詳解的文章就介紹到這了,更多相關Python SFTP內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com