在Linux中,使用SFTP(SSH File Transfer Protocol)實現自動化腳本可以通過多種方式完成。以下是幾種常見的方法:
sshpass
和expect
安裝sshpass
:
sudo apt-get install sshpass # Debian/Ubuntu
sudo yum install sshpass # CentOS/RHEL
創建自動化腳本:
創建一個名為sftp_auto.sh
的腳本文件,并添加以下內容:
#!/bin/bash
HOST="your_host"
PORT="22"
USERNAME="your_username"
PASSWORD="your_password"
REMOTE_DIR="/path/to/remote/directory"
LOCAL_DIR="/path/to/local/directory"
sshpass -p "$PASSWORD" sftp -o StrictHostKeyChecking=no "$USERNAME@$HOST:$REMOTE_DIR" <<EOF
cd $REMOTE_DIR
lcd $LOCAL_DIR
mput *
bye
EOF
3. **賦予腳本執行權限**:
```bash
chmod +x sftp_auto.sh
./sftp_auto.sh
ssh-agent
和ssh-add
啟動ssh-agent
:
eval $(ssh-agent -s)
添加SSH密鑰:
ssh-add ~/.ssh/id_rsa
創建自動化腳本:
創建一個名為sftp_auto.sh
的腳本文件,并添加以下內容:
#!/bin/bash
HOST="your_host"
PORT="22"
USERNAME="your_username"
REMOTE_DIR="/path/to/remote/directory"
LOCAL_DIR="/path/to/local/directory"
sftp -o StrictHostKeyChecking=no "$USERNAME@$HOST:$REMOTE_DIR" <<EOF
cd $REMOTE_DIR
lcd $LOCAL_DIR
mput *
bye
EOF
4. **賦予腳本執行權限**:
```bash
chmod +x sftp_auto.sh
./sftp_auto.sh
lftp
lftp
是一個功能強大的文件傳輸工具,支持SFTP協議,并且可以通過腳本來實現自動化。
安裝lftp
:
sudo apt-get install lftp # Debian/Ubuntu
sudo yum install lftp # CentOS/RHEL
創建自動化腳本:
創建一個名為sftp_auto.sh
的腳本文件,并添加以下內容:
#!/bin/bash
HOST="your_host"
PORT="22"
USERNAME="your_username"
PASSWORD="your_password"
REMOTE_DIR="/path/to/remote/directory"
LOCAL_DIR="/path/to/local/directory"
lftp -e "
open sftp://$USERNAME:$PASSWORD@$HOST:$PORT;
cd $REMOTE_DIR;
lcd $LOCAL_DIR;
mput *;
quit;
"
賦予腳本執行權限:
chmod +x sftp_auto.sh
運行腳本:
./sftp_auto.sh
sshpass
和明文密碼存在安全風險,建議使用SSH密鑰認證。通過以上方法,你可以在Linux中實現SFTP自動化腳本,提高文件傳輸的效率和可靠性。