Jump to content

meigrafd

Full Member
  • Gesamte Inhalte

    5
  • Benutzer seit

Beiträge erstellt von meigrafd

  1. Wenn mein script kein auto update macht dann gibt es nix zu updaten weil es NUR ein update ausführt wenn dies auch erfoderlich ist!

    Also wenn sich die IP deiner dyndnshost von deiner derzeitigen IP deines Internertanschlusses UNTERSCHEIDEN - erst dann macht er ein update

     

     

    Du kannst das natürlich auch erzwingen bishin zur abuse Meldung mit: ./dyndsupdater.sh now

    wenn das auch nicht funktioniert, dann muss eine Fehlermeldung kommen oder du hast das script nicht wirklich/richtig konfiguriert!

  2. Es ist egal wo das script abgelegt wird, hauptsache nicht in /tmp weil dort ist nach einem Reboot nix mehr von vorher :D

     

    Also du kannst es zb in /bin legen oder auch in /var/bin ... das ist absolut egal

     

    Ausführbar machen, also mind chmod 700 setzen, und den Header vom Script natürlich noch anpassen und starten, das wars :thumbsu:

     

    Damit es auch beim Reboot gestartet wird kannst du es zb in /etc/rc.local vor dem exit 0 eintragen: /path/to/script.sh &

  3. Auch wenn das hier schon ein wenig aelter ist...

     

    Ich habe mir erlaubt aus den codezeilen aus diesem Thread ein Script zu basteln - ich hoffe das ist Oke? :D

     

    Es Pingt den DynDNS host an, vergleicht die IP mit der des Internetanschlusses und wenn diese abweichen, wird der DynDNS Host aktuallisiert und bei bedarf wird auch eine Logdatei in /tmp geschrieben

    Der DynDNS Host kann auch manuell aktuallisiert werden und man kann das script auch bequem beenden fals man ohne zu rebootn was aendern moechte

     

    #!/bin/sh
    #
    # v0.3
    #
    # credits: Didge2002, SnowHead, meigrafd
    #
    
    USER="benutzer"       # DynDNS Benutzername
    PASS="password"       # DynDNS Passwort
    HOST="host.ath.cx"    # DynDNS Hostname
    EVERY="300"           # Zeit in Sekunden zwischen den Abfragen
    LOG="1"               # Erstelle Logfile /tmp/log.dyndns? (wenn möglich aus lassen) [0=nein; 1=ja]
    WILDCARD="1"          # Sind Wildcards enabled, können auch Adressen wie "bla.host.dyndns.org" angesprochen werden
    
    ###
    
    
    #CHECKIPURL="http://www.myip.ch/"
    CHECKIPURL="http://checkip.dyndns.org/"
    URL="http://members.dyndns.org/nic/update?hostname=$HOST"
    if [ "$WILDCARD" = "1" ]; then
       URL="$URL&wildcard=ON"
    fi
    LOGFILE="/tmp/log.dyndns"
    
    LOG_update() {
       if [ $LOG = "1" ]; then
           _DT=$(date +"%d.%m.%Y %H:%M:%S")
           dyndns_answer=$(cat /tmp/dyndns_answer)
           echo "$_DT: HOSTIP: $HOSTIP - CURRENTIP: $CURRENTIP - DynDNS answer: $dyndns_answer" >> $LOGFILE
       fi
    }
    
    abuse_check() {
       dyndns_answer=$(cat /tmp/dyndns_answer)
       if [ "$dyndns_answer" = "abuse" ]; then
           if [ -z "$1" -a $LOG = "1" ]; then
               echo "WARNING!! You abused the DynDNS update function! You must Unlock your domain $HOST !" >> $LOGFILE
           fi
           echo "WARNING!! You abused the DynDNS update function! You must Unlock your domain $HOST !"
       fi
    }
    
    get_IPs() {
       HOSTIP=$(ping -c 1 "$HOST" | sed -n 1p | sed -e 's/(//g' -e 's/)//g' | awk '{ print $3 }')
       wget -q -O /tmp/dyndns_current_ip $CHECKIPURL
       CURRENTIP=$(cat /tmp/dyndns_current_ip | cut -d ' ' -f 6 | cut -d '<' -f 1)
    }
    
    do_update() {
       wget -q -O /tmp/dyndns_answer --user="$USER" --password="$PASS" $URL
    }
    
    update_interval() {
       while true
       do
           get_IPs
           if [ "$HOSTIP" != "$CURRENTIP" ]; then
               do_update
               abuse_check
               LOG_update
           fi
           sleep $EVERY
       done
    }
    
    kill_script() {
       PID=$(pidof $0)
       if [ -z "$PID" ]; then
           PID=$(cat /tmp/.dyndns.pid)
       fi
       if [ ! -z "$PID" ]; then
           echo "PID: $PID"
           kill -9 $PID >/dev/null 2>&1
           killall -9 sleep >/dev/null 2>&1
           echo "Should be killed..."
           rm -f /tmp/.dyndns.pid
       else
           echo "Nothing to $1!"
       fi
    }
    
    case "$1" in
       ""|auto)
           echo ${$} >/tmp/.dyndns.pid
           update_interval
       ;;
       stop|kill)
           kill_script $1
       ;;
       help|hilfe|?)
           echo "Usage: $0 [now|auto|kill|help]"
       ;;
       *)
           get_IPs
           do_update
           abuse_check
           echo "HOST: $HOST - HOSTIP: $HOSTIP - CURRENTIP: $CURRENTIP"
           echo "DynDNS answer: $dyndns_answer"
       ;;
    esac
    
    exit 0
    

×
×
  • Neu erstellen...