最近学习操作系统Linux,老师给了任务
都搭建好了,而且会用cron完成定时轮询,也会用ftp下载,但是做不到监测对方是否更新,因为要求一旦更新就下载。最后用脚本定时没用cron,直接上内容!本文案例是下载/home/目录的ppp.txt文件
下面展示一些 内联代码片
。
#! /bin/bash
ftp_server="192.168.122.124"#对方ip
ftp_username="yu"#对方名
ftp_password="yL1999)"#对方密码
local_directory="/home/"
last_modified=""
while true; do
current_modified=$(ftp -n $ftp_server <<END_SCRIPT | grep "ppp.txt" | awk '{print $6,$7}')
#解释:
#ftp -n非交互式,没有对话提示输入
#<<END_SCRIPT 为here文档,允许向FTP会话输入多条文本,此时用于向FTP服务器发送命令
#grep”ppp.txt 用于过滤FTP会话的输出,并且只保留包含字符串“ppp.txt”的行#awk‘{print$6,$7}使用awk命令从过滤输出中提取第6和第7个字段。它将打印这些字段
#这个命令连接到FTP服务器,过滤输出,只包“ppp.txt”相关的行,然后提取该文件的修改日期和时间
quote USER $ftp_username
quote PASS $ftp_password
ls -l ppp.txt
quit
END_SCRIPT
if [[ "$current_modified" != "$last_modified" ]]; then
ftp -n $ftp_server <<END_SCRIPT
#这条命令是使用FTP协议连接到指定的FTP服务器。其中,-n选项表示禁用自动登录,$ftp_server是一个变量,用于指定FTP服务器的地址。<<END_SCRIPT是一个输入重定向操作符,它将后续的命令作为输入传递给ftp命令。
quote USER $ftp_username
quote PASS $ftp_password
get ppp.txt $local_directory/ppp.txt
quit
END_SCRIPT
#echo "文件已更新并下载成功!"
#last_modified="$current_modified"
#else#echo "文件未更新。"
fi
sleep 60
done
然后再sh运行就可以啦!