以下是在CentOS上實現SFTP腳本自動化操作的指南:
確保系統已安裝openssh-client
,若未安裝可使用命令sudo yum install openssh-client -y
進行安裝。
ssh-keygen -t rsa
,按提示生成私鑰和公鑰。ssh-copy-id username@server_ip
將公鑰復制到遠程服務器的~/.ssh/authorized_keys
文件中。sftp_transfer.sh
的腳本,內容如下:#!/bin/bash
HOST='your_host'
PORT='22'
USERNAME='your_username'
PRIVATE_KEY='~/.ssh/id_rsa'
REMOTE_DIR='/remote/directory'
LOCAL_DIR='/local/directory'
sftp -oPort=$PORT -i $PRIVATE_KEY $USERNAME@$HOST <<EOF
cd $REMOTE_DIR
lcd $LOCAL_DIR
mput *
bye
EOF
chmod +x sftp_transfer.sh
,然后運行./sftp_transfer.sh
。sudo yum install expect -y
。#!/usr/bin/expect -f
set timeout 20
set host "your_host"
set username "your_username"
set password "your_password"
set local_dir "/local/directory"
set remote_dir "/remote/directory"
spawn sftp $username@$host
expect "password:"
send "$password\r"
expect "sftp>"
send "cd $remote_dir\r"
expect "sftp>"
send "lcd $local_dir\r"
expect "sftp>"
send "mput *\r"
expect "sftp>"
send "bye\r"
expect eof
chmod +x script_name.sh
,然后運行./script_name.sh
。sudo yum install lftp -y
。#!/bin/bash
HOST='your_host'
PORT='22'
USERNAME='your_username'
PASSWORD='your_password'
REMOTE_DIR='/remote/directory'
LOCAL_DIR='/local/directory'
lftp -e "open sftp://$USERNAME:$PASSWORD@$HOST:$PORT; cd $REMOTE_DIR; lcd $LOCAL_DIR; mput *; quit;"
chmod +x script_name.sh
,然后運行./script_name.sh
。