在CentOS系统中,使用SFTP(SSH File Transfer Protocol)进行文件传输时,可以通过编写脚本来实现自动化操作。以下是一个基本的步骤指南,帮助你创建一个简单的SFTP自动化脚本。
确保你的CentOS系统上已经安装了openssh-client
,因为SFTP是SSH的一部分。
sudo yum install openssh-client -y
创建一个名为sftp_script.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'
# 创建一个临时密码文件
echo "$PASSWORD" > /tmp/sftp_pass.txt
chmod 600 /tmp/sftp_pass.txt
# 使用SFTP进行文件传输
sftp -oPort=$PORT -oStrictHostKeyChecking=no -i /tmp/sftp_pass.txt $USERNAME@$HOST <<EOF
cd $REMOTE_DIR
put $LOCAL_DIR/*
bye
EOF
# 删除临时密码文件
rm /tmp/sftp_pass.txt
chmod +x sftp_script.sh
./sftp_script.sh
如果你更倾向于使用SSH密钥认证,可以按照以下步骤操作:
生成SSH密钥对(如果还没有):
ssh-keygen -t rsa -b 4096
将公钥复制到SFTP服务器:
ssh-copy-id -i ~/.ssh/id_rsa.pub your_username@your_sftp_server
修改脚本以使用密钥认证:
#!/bin/bash
HOST='your_sftp_server'
PORT='22'
USERNAME='your_username'
REMOTE_DIR='/path/to/remote/directory'
LOCAL_DIR='/path/to/local/directory'
# 使用SFTP进行文件传输
sftp -oPort=$PORT -oStrictHostKeyChecking=no $USERNAME@$HOST <<EOF
cd $REMOTE_DIR
put $LOCAL_DIR/*
bye
EOF
通过这种方式,你可以实现更安全的SFTP自动化文件传输。