溫馨提示×

Ubuntu SFTP如何實現自動化腳本

小樊
43
2025-07-30 09:51:11
欄目: 智能運維

在Ubuntu系統中,使用SFTP(SSH File Transfer Protocol)實現自動化腳本可以通過多種方式完成。以下是一些常見的方法:

方法一:使用sshpassexpect

  1. 安裝sshpass

    sudo apt-get update
    sudo apt-get install sshpass
    
  2. 創建自動化腳本: 創建一個名為sftp_auto.sh的腳本文件,并添加以下內容:

    #!/bin/bash
    
    # SFTP服務器信息
    HOST="your_sftp_server"
    PORT="22"
    USERNAME="your_username"
    PASSWORD="your_password"
    REMOTE_DIR="/path/to/remote/directory"
    LOCAL_DIR="/path/to/local/directory"
    
    # 使用sshpass和expect進行自動化SFTP操作
    /usr/bin/expect -c "
    spawn sftp $USERNAME@$HOST -P $PORT
    expect 'password:'
    send '$PASSWORD\r'
    expect 'sftp>'
    send 'cd $REMOTE_DIR\r'
    expect 'sftp>'
    send 'put $LOCAL_DIR/*\r'
    expect 'sftp>'
    send 'bye\r'
    interact
    "
    
  3. 賦予腳本執行權限

    chmod +x sftp_auto.sh
    
  4. 運行腳本

    ./sftp_auto.sh
    

方法二:使用lftp

lftp是一個功能強大的文件傳輸工具,支持SFTP協議,并且可以通過腳本來實現自動化。

  1. 安裝lftp

    sudo apt-get update
    sudo apt-get install lftp
    
  2. 創建自動化腳本: 創建一個名為lftp_auto.sh的腳本文件,并添加以下內容:

    #!/bin/bash
    
    # SFTP服務器信息
    HOST="your_sftp_server"
    PORT="22"
    USERNAME="your_username"
    PASSWORD="your_password"
    REMOTE_DIR="/path/to/remote/directory"
    LOCAL_DIR="/path/to/local/directory"
    
    # 使用lftp進行自動化SFTP操作
    lftp -e "
    open sftp://$USERNAME:$PASSWORD@$HOST:$PORT;
    cd $REMOTE_DIR;
    mirror --reverse --delete --verbose $LOCAL_DIR;
    quit;
    " -u exit
    
  3. 賦予腳本執行權限

    chmod +x lftp_auto.sh
    
  4. 運行腳本

    ./lftp_auto.sh
    

方法三:使用SSH密鑰認證

為了提高安全性,建議使用SSH密鑰認證而不是密碼認證。

  1. 生成SSH密鑰對

    ssh-keygen -t rsa -b 4096
    
  2. 將公鑰復制到SFTP服務器

    ssh-copy-id -p 22 your_username@your_sftp_server
    
  3. 創建自動化腳本: 創建一個名為sftp_auto_ssh_key.sh的腳本文件,并添加以下內容:

    #!/bin/bash
    
    # SFTP服務器信息
    HOST="your_sftp_server"
    PORT="22"
    USERNAME="your_username"
    REMOTE_DIR="/path/to/remote/directory"
    LOCAL_DIR="/path/to/local/directory"
    
    # 使用SSH密鑰進行自動化SFTP操作
    sftp -o StrictHostKeyChecking=no -P $PORT $USERNAME@$HOST <<EOF
    cd $REMOTE_DIR
    put $LOCAL_DIR/*
    bye
    

EOF


4. **賦予腳本執行權限**:
```bash
chmod +x sftp_auto_ssh_key.sh
  1. 運行腳本
    ./sftp_auto_ssh_key.sh
    

通過以上方法,你可以在Ubuntu系統中實現SFTP的自動化腳本。選擇適合你需求的方法進行配置和使用。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女