我在UNI部门工作,我必须创建一个Shell脚本,该脚本监视带有一些文本文件的目录,这些文件可以通知您(可以手动检查以了解是否已被修改)。老实说,我不确定从哪里开始,对Linux不好,无法找到任何帮助。我只能在ubuntu中使用标准工具。任何帮助都会很棒。谢谢
更新-这是到目前为止,我需要一种方法来验证更改文件后打印的值是否相同(如果它们不相同,则打印已更改的文件)
也很抱歉第一次使用该网站进行学习。
#!/bin/sh
echo "press 1 to check - press 2 to exit"
while :
do
read INPUT_STR
case $INPUT_STR in
1)
echo "checking sums"
md5sum Target/bob
md5sum Target/bec
md5sum Target/john
md5sum Target/mary
md5sum Target/mike
;;
2)
break
;;
*)
echo "incorrect input"
esac
done
echo "thankyou for using IDS"
答案 0 :(得分:0)
你的意思是那样的吗?
#!/bin/bash
WORKDIR=/home
TARGETS=(
"$WORKDIR/bob"
"$WORKDIR/bec"
"$WORKDIR/john"
"$WORKDIR/mary"
"$WORKDIR/mike"
)
for target in "${TARGETS[@]}"; do
md5file="${target##*/}.md5"
if [[ -e "$md5file" ]]; then
md5sum --quiet -c "$md5file"
else
echo "create md5sum referenz file $md5file"
md5sum "$target"/* > "$md5file"
fi
done
在第一次运行时,它会为每个目录创建一个参考文件。在第二次运行时,该目录将与参考文件进行比较。将显示修改。删除一个参考文件后,将在下一次运行时再次创建它。
说明
# loop over the array with the targets
for target in "${TARGETS[@]}"; do
# remove all directories except the last, append .md5
# and assign it to the variable md5file
md5file="${target##*/}.md5"
# if md5file exists, use it as reference and check if
# modifications where happend
if [[ -e "$md5file" ]]; then
# use the md5file as reference and only show
# modified files, ignore ok messages
md5sum --quiet -c "$md5file"
else
# when no md5file exists
echo "create md5sum referenz file $md5file"
# use target, append /* to it and run md5sum
# redirect output to md5file (reference file for next run)
md5sum "$target"/* > "$md5file"
fi
done