我正在尝试创建一个bash脚本来检查安装是否到位,如果不是,都将信息记录到文件中以及发送通知。我是脚本编写的新手,所以一些细节对我来说是难以捉摸的。
因为我们正在使用这个脚本来监视一个非常挑剔的软件,我希望尽可能多地排队,而不是创建一个配置文件或什么不是因为我知道如果有什么改变为设置供应商会说这是所有问题的原因。下面是我到目前为止所提出的代码。我承认我并不完全相信代码中的任何内容都会起作用,所以如果你看到我做出的任何明显错误,我很乐意了解它们。
#!/bin/bash
LOGFILE="/tmp/logs/mount.log
TIMESTAMP=`date "+%Y-%m-%d %H:%M:%S"`
while sleep 10m;
do
status=$(for mnt in /reachengine /reachdata/mongo /reachbkups /mnt/AsperaShares /mnt/Editing /mnt/VOD-World/Movies_in_ProRes51_Archive /mnt/Production /mnt/ReachEngine /mnt/ITBackup /mnt/reach '/mnt/Ready for Air' '/mnt/Ready for Reach'; do mountpoint -q "$mnt" || echo "$TIMESTAMP $mnt missing"; done)
[ "$status" ] && echo "$status" >> $LOGFILE
[ "$status" ] && echo "$status" | mail -s "Missing mount" ####@###.##
done
答案 0 :(得分:1)
#!/bin/bash
logfile="/tmp/logs/mount.log" # add 1 quote
timestamp=$( date "+%Y-%m-%d %H:%M:%S" )
mounts=(
/reachengine
/reachdata/mongo
/reachbkups
/mnt/AsperaShares
/mnt/Editing
/mnt/VOD-World/Movies_in_ProRes51_Archive
/mnt/Production
/mnt/ReachEngine
/mnt/ITBackup
/mnt/reach
'/mnt/Ready for Air'
'/mnt/Ready for Reach'
)
while sleep 10m; do
status=$(
for mnt in ${mounts[@]}; do
mountpoint -q "$mnt" || echo "$timestamp $mnt missing"
done
)
if [ "$status" ]; then
echo "$status" >> $logfile
echo "$status" | mail -s "Missing mount" ####@###.##
fi
done
建议:
$( )
代替反对