用于监视FTP站点中文件的任何修改的脚本

时间:2014-02-23 16:30:55

标签: bash curl ftp wc

我试图构建一个脚本来监控我的FTP站点中文件的任何修改。脚本如下。我用wc -l计算了数字。目录中的文件并定义了文件的常量值,如果文件中有任何修改,如果我的同事在我的FTP中更新,这将向我发送通知。我试图通过这个来实现。但是这个脚本实际上只是在计数之后挂起。它没有给我预期的结果。代码有什么问题吗?我只是Bash的初学者,任何人都可以帮我解决这个问题

#!/usr/bin/bash
curl ftp://Sterst:abh89TbuOc@############################/Test/| wc -l ;
read b;
a=9
if [ "$b" != "$a" ];
then 
echo  "FTP dir has modified mail" -s "dir notification" sni912@######.com;
fi

2 个答案:

答案 0 :(得分:1)

关于您的代码的几点说明:

#!/usr/bin/bash
curl ftp://Sterst:abh89TbuOc@############################/Test/| wc -l ;
read b;

这不符合您的想法:wc输出转到stdout,而不是read命令。请改为:b=$( curl ... | wc -l )

a=9
if [ "$b" != "$a" ];

由于wc输出会有一些额外的空格,因此最好进行数字比较:
if (( a != b ))

then 
echo  "FTP dir has modified mail" -s "dir notification" sni912@######.com;

你可能是这个意思:

echo  "FTP dir has modified" | mail -s "dir notification" sni912@######.com;

我会这样写:

listing=$( curl ftp://... )
num=$( echo "$listing" | wc -l )
if (( num != 9 )); then
    mail -s "ftp dir modification" email@example.com <<END
FTP directory modification

$listing
END
fi

答案 1 :(得分:0)

我的代码

#!/usr/local/bin/bash
listing=$( curl  ftp://username:password@ftp.com/test/ )
num=$( wc -l | echo "$listing" )
if (( num != 9 ));
then
mail -s "ftp dir modification" email@example.com
fi `