Уведомлять только при изменении IP - PullRequest
0 голосов
/ 07 августа 2020

Я использую этот сценарий для регистрации изменений IP-адресов.

host myip.opendns.com resolver1.opendns.com | sed -n -e 's/^\(.*\)\(myip.opendns.com has address \)/\1/p' | sed "s/^/`date` /" » /DataVolume/shares/Public/MyIP.txt

Как я могу создать предупреждение (возможно, создать отдельный файл журнала или отправить письмо) только при изменении IP-адреса?

1 Ответ

1 голос
/ 07 августа 2020

Что-то вроде этих строк:

#!/bin/bash

previp=

while :; do
    ip=$(host myip.opendns.com resolver1.opendns.com |
        sed -n '/.* has address \(.*\)/ { s//\1/; p; q; }' )
    if [[ $previp != "$ip" ]]; then
        msg="$(date): IP change from '$previp' to '$ip'"
        echo "$msg" >> logfile
        mail -s "IP change" somebody@somewhere <<< "$msg"
        previp=$ip
    fi  
    sleep 60
done

Если вы хотите, чтобы он запускался только один раз (например, из crontab):

#!/bin/bash

ipfile='/tmp/previous_ip'

ip=$(host myip.opendns.com resolver1.opendns.com |
    sed -n '/.* has address \(.*\)/ { s//\1/; p; q; }' )

if ! [[ -f $ipfile ]]; then
    echo "$ip" > "$ipfile"
fi

read -r previp < "$ipfile"

if [[ $previp != "$ip" ]]; then
    msg="$(date): IP change from '$previp' to '$ip'"
    echo "$msg" >> logfile
    mail -s "IP change" somebody@somewhere <<< "$msg"
    echo "$ip" > "$ipfile"
fi  
...