用于检查上次修改文件的脚本

时间:2013-03-26 13:11:07

标签: shell

如果文件得到修改,请填写邮件以获取邮件

如果文件已被修改,我正在编写脚本来获取邮件

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的

3 个答案:

答案 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输出进行比较来更改逻辑