shell实现一下功能:ssh连接远程计算机,定时判断文件是否更新,如果更新则下载
时间: 2024-09-23 17:08:51 浏览: 41
ssh远程执行命令方法和Shell脚本实例
要在Shell脚本中实现SSH连接远程计算机,并定期检查文件更新并下载,你可以使用`cron`任务调度加上`scp`命令。以下是一个基本的示例脚本:
```bash
#!/bin/bash
# 定义变量
REMOTE_USER="your_username"
REMOTE_HOST="remote_host_address"
REMOTE_DIR="/path/to/remote/directory"
LOCAL_DIR="/path/to/local/download/directory"
FILE_TO_CHECK="file_to_check.txt"
# SSH登录到远程主机
function ssh_and_check() {
echo "Checking file $FILE_TO_CHECK on $REMOTE_HOST..."
scp -o StrictHostKeyChecking=no "$REMOTE_DIR/$FILE_TO_CHECK" "$LOCAL_DIR/"
if [[ $? -eq 0 ]]; then
FILE_DATE=$(stat -c %y "$LOCAL_DIR/$FILE_TO_CHECK")
REMOTE_FILE_DATE=$(ssh "$REMOTE_USER@$REMOTE_HOST" stat -c %y "/$REMOTE_DIR/$FILE_TO_CHECK")
# 比较文件日期,如果本地文件新于远程文件,则下载
if [ "$FILE_DATE" -gt "$REMOTE_FILE_DATE" ]; then
echo "File has been updated! Downloading..."
scp -o StrictHostKeyChecking=no "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/$FILE_TO_CHECK" "$LOCAL_DIR/"
else
echo "No update detected."
fi
fi
}
# 设置cron job每5分钟执行一次
*/5 * * * * ssh_and_check > /dev/null 2>&1
# 执行一次初始检查
ssh_and_check
# 如果需要添加到crontab,可以使用 crontab -e编辑并添加以下行:
# 0 * * * * /path/to/your/script.sh
```
把这个脚本保存为`check_update.sh`,然后给它执行权限(`chmod +x check_update.sh`)。将上述内容中的`your_username`、`remote_host_address`替换为实际的用户名和远程服务器地址,`file_to_check.txt`替换为你想要监控的文件名。
最后,如果你希望将此脚本设置成cron任务,你需要打开终端,输入`crontab -e`,然后在文件末尾添加刚刚列出的那一行,按照cron语法(通常是分钟、小时、日、月、星期和命令路径)。记得保存并退出编辑器。
阅读全文