如果文件得到修改,请填写邮件以获取邮件
如果文件已被修改,我正在编写脚本来获取邮件
recip="mungsesagar@gmail.com"
file="/root/sagar/ldapadd.sh"
#stat $file
last_modified=$(stat --printf=%y $file | cut -d. -f1)
#echo $last_modified
mail -s "File ldapadd.sh has changed" $recip
现在我在运行此脚本时收到邮件,但我想比较两个变量,这样只有在文件修改或内容发生变化时我才能收到邮件。 如何将输出存储在变量中以进行比较
提前致谢
Sagar的
答案 0 :(得分:0)
我会使用find来查看最后修改过的文件
#!/bin/bash
file=timestamp.txt
if [ ! -f timestamp.txt ];
then
stat -f %Sm -t %Y%m%d%H%M%S $file > timestamp.txt
else
timestamp=$(stat -f %Sm -t %Y%m%d%H%M%S $file)
filetime=$(cat filetime.txt)
if [ "$filetime" = "$timestamp" ];
then
#Do nothing
else
echo "$file has been modified" >> /tmp/email.txt
mail -s "File has changed" "email@domain.com" < /tmp/email.txt
fi
fi
答案 1 :(得分:0)
我这样做:
recip="you@example.com"
file="/root/sagar/ldapadd.sh"
ref="/var/tmp/mytimestamp.dummy"
if [ "$file" -nt "$ref" ]; then
mail -s "File ldapadd.sh has changed" $recip
fi
touch -r "$file" "$ref" # update our dummy file to match
这个想法是通过将感兴趣的文件复制到另一个文件(使用touch
)来存储最后看到的感兴趣文件的时间戳。然后我们总是知道最后一次是什么,并可以根据需要将其与文件和电子邮件的当前时间戳进行比较。
答案 2 :(得分:0)
如果我理解你的问题是正确的,可以通过将“ls -ltr filename”的输出存储在temp1文件中并将其与ls -ltr输出进行比较来更改逻辑