0

我正在尝试构建一个脚本来监视我的 FTP 站点中文件的任何修改。脚本如下。我曾经wc -l数过没有。目录中的文件,并定义了文件的常量值,如果文件中有任何修改,例如我的同事在我的 FTP 中更新,这将向我发送通知。我试图通过 cron 来实现这一目标。但脚本实际上只是在 count 之后挂起。它没有为我提供预期的结果。代码有什么问题吗。我只是 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
4

2 回答 2

1

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

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

这并不像您认为的那样:wc输出进入标准输出,而不是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
于 2014-02-23T18:04:06.097 回答
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 `
于 2014-02-24T16:55:39.133 回答