#!/bin/sh logger -t ipupdate "UPDATING IP START" # HOSTNAME is your DynDNS hostname HOST2=my-remote-server.dyndns.org HOST3=my-remote-server-other.dyndns.org # NSLOOKUP is the current DNS entry for your DynDNS hostname OLD_IP2=`/usr/bin/nslookup -sil $HOST2 | tail -2 | head -1 | cut -d" " -f2 | grep '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'` if [ "$OLD_IP2" = "" ] ; then logger -t ipupdate "Not entry IP for $HOST2. Second empty..." OLD_IP2=`ping $HOST2 -c 1 | head -1 | cut -d" " -f3 | sed 's/(//' | sed 's/)//' | grep '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'` fi if [ "$OLD_IP2" = "" ] ; then logger -t ipupdate "Not entry IP for $HOST2. Second empty: FAILED" fi OLD_IP3=`/usr/bin/nslookup -sil $HOST3 | tail -2 | head -1 | cut -d" " -f2 | grep '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'` if [ "$OLD_IP3" = "" ] ; then logger -t ipupdate "Not entry IP for $HOST3. Second empty..." OLD_IP3=`ping $HOST3 -c 1 | head -1 | cut -d" " -f3 | sed 's/(//' | sed 's/)//' | grep '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'` fi if [ "$OLD_IP3" = "" ] ; then logger -t ipupdate "Not entry IP for $HOST1. Second empty: FAILED." fi if [ "$OLD_IP2" = "" ] && [ "$OLD_IP3" = "" ] ; then logger -t ipupdate "CHECKING INTENAL IP FAILED" logger -t ipupdate "EXIT" exit fi # Services for check external ip CHECK_IP0='ifconfig.me/ip' CHECK_IP1='http://checkip.dyndns.com' CHECK_IP2='http://2ip.ru' CHECK_IP3='http://www.netins.net/dialup/tools/my_ip.shtml' logger -t ipupdate "$HOST2 has IP: $OLD_IP2" logger -t ipupdate "$HOST3 has IP: $OLD_IP3" logger -t ipupdate "Check external IP throw $CHECK_IP0" CURRENT_IP=`/usr/bin/curl $CHECK_IP0 | grep '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'` if [ "$CURRENT_IP" = "" ]; then logger -t ipupdate "Checking external IP throw $CHECK_IP0 FAILED" logger -t ipupdate "Check external IP throw $CHECK_IP2" CURRENT_IP=`/usr/bin/lynx -dump $CHECK_IP1 | awk '/Current IP Address:/ { print $4; }' | grep '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'` fi if [ "$CURRENT_IP" = "" ]; then logger -t ipupdate "Checking external IP throw $CHECK_IP1 FAILED" logger -t ipupdate "Check external IP throw $CHECK_IP2" CURRENT_IP=`/usr/bin/lynx -dump $CHECK_IP2 | awk '/ IP :/ { print $4; }' | grep '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'` fi if [ "$CURRENT_IP" = "" ]; then logger -t ipupdate "Checking external IP throw $CHECK_IP2 FAILED" logger -t ipupdate "Check external IP throw $CHECK_IP3" CURRENT_IP=`/usr/bin/lynx -dump $CHECK_IP3 | grep -A2 "Your current IP Address is:" | tail -n1 | tr -d ' '|sed '/^$/d'| sed 's/^ *//g' | grep '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'` fi if [ "$CURRENT_IP" = "unknown" ] || [ "$CURRENT_IP" = "" ] ; then logger -t ipupdate "Checking external IP throw $CHECK_IP3 FAILED" logger -t ipupdate "CHECKING EXTERNAL IP FAILED" logger -t ipupdate "EXIT" exit fi logger -t ipupdate "Real IP: $CURRENT_IP" if [ "$OLD_IP2" != "$CURRENT_IP" ] || [ "$OLD_IP3" != "$CURRENT_IP" ] ; then logger -t ipupdate "IP need to update" if [ "$OLD_IP2" != "$CURRENT_IP" ] ; then inadyn --input_file /etc/inadyn/remote1.conf fi if [ "$OLD_IP3" != "$CURRENT_IP" ] ; then inadyn --input_file /etc/inadyn/remote2.conf fi logger -t ipupdate "sleeping for 30 sec" sleep 30 logger -t ipupdate "daemon for updating has stoped" killall inadyn # Flush local DNS cache of $HOSTNAME /sbin/service named restart else logger -t ipupdate "Current IP is actual" fi logger -t ipupdate "UPDATING IP FINISHED" exit
#!/bin/sh logger -t ipupdWeek "WEEK UPDATING IP START" # script name of updating IP script='ipupdate' # check for running of script of update IP scriptRunning=`/bin/ps aux | grep $script | grep -v 'grep'` if [ "$scriptRunning" = "" ]; then logger -t ipupdWeek "Script of updating IP IS NOT running" echo "Not running" else logger -t ipupdWeek "Script of updating IP IS RUNNING, killall it" killall $script fi logger -t ipupdWeek "Start inadyn to update all IP" inadyn --input_file /etc/inadyn/remote1.conf inadyn --input_file /etc/inadyn/remote2.conf logger -t ipupdWeek "Sleeping 10 sec" sleep 10 logger -t ipupdWeek "Stop inadyn" killall inadyn logger -t ipupdWeek "WEEK UPDATING IP STOP" exit
Source: https://habr.com/ru/post/178327/
All Articles