温馨提示×

centos sftp脚本自动化操作指南

小樊
51
2025-09-13 20:15:17
栏目: 智能运维

以下是在CentOS上实现SFTP脚本自动化操作的指南:

一、准备工作

确保系统已安装openssh-client,若未安装可使用命令sudo yum install openssh-client -y进行安装。

二、使用SSH密钥认证(推荐)

  1. 生成密钥对:在客户端执行ssh-keygen -t rsa,按提示生成私钥和公钥。
  2. 复制公钥到服务器:使用ssh-copy-id username@server_ip将公钥复制到远程服务器的~/.ssh/authorized_keys文件中。
  3. 编写脚本:创建如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
  1. 赋予执行权限并运行:执行chmod +x sftp_transfer.sh,然后运行./sftp_transfer.sh

三、使用expect工具(需安装)

  1. 安装expect:执行sudo yum install expect -y
  2. 编写脚本:创建脚本并添加如下内容:
#!/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
  1. 赋予执行权限并运行:执行chmod +x script_name.sh,然后运行./script_name.sh

四、使用lftp工具

  1. 安装lftp:执行sudo yum install lftp -y
  2. 编写脚本:创建脚本并添加如下内容:
#!/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;"
  1. 赋予执行权限并运行:执行chmod +x script_name.sh,然后运行./script_name.sh

0