以下是在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。