在Ubuntu系統中,使用SFTP(SSH File Transfer Protocol)實現自動化腳本可以通過多種方式完成。以下是一些常見的方法:
sshpass
和expect
安裝sshpass
:
sudo apt-get update
sudo apt-get install sshpass
創建自動化腳本:
創建一個名為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
"
賦予腳本執行權限:
chmod +x sftp_auto.sh
運行腳本:
./sftp_auto.sh
lftp
lftp
是一個功能強大的文件傳輸工具,支持SFTP協議,并且可以通過腳本來實現自動化。
安裝lftp
:
sudo apt-get update
sudo apt-get install lftp
創建自動化腳本:
創建一個名為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
賦予腳本執行權限:
chmod +x lftp_auto.sh
運行腳本:
./lftp_auto.sh
為了提高安全性,建議使用SSH密鑰認證而不是密碼認證。
生成SSH密鑰對:
ssh-keygen -t rsa -b 4096
將公鑰復制到SFTP服務器:
ssh-copy-id -p 22 your_username@your_sftp_server
創建自動化腳本:
創建一個名為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
./sftp_auto_ssh_key.sh
通過以上方法,你可以在Ubuntu系統中實現SFTP的自動化腳本。選擇適合你需求的方法進行配置和使用。