Может ли Mail/Mailx использоваться с информацией почтового сервера в строке?

Я пытаюсь создать 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

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 

предложения с:

  • исправление закрыть двойную кавычку в лог-файле =
  • строчные переменные
  • $( ) вместо клюшки
  • массив для сканирования креплений, проще в обслуживании
  • лучший отступ

просто быстрое чтение, а не тест
возьми то, что тебе нравится

Другие вопросы по тегам