.titleBar { margin-bottom: 5px!important; }

Kleine Skriptlösung zum Update der dyndns Adresse in Perl

Dieses Thema im Forum "Asterisk Allgemein" wurde erstellt von klingeljoe, 13 Feb. 2005.

  1. klingeljoe

    klingeljoe Neuer User

    Registriert seit:
    11 Feb. 2005
    Beiträge:
    21
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo Forum,

    nachdem ich mein * nun so halbwegs am laufen habe hat mich die dynupdate Geschichte auch erfasst.
    Ich habe einfach meinen Gesprächspartner nicht mehr gehört, wenn ich über sipgate telefoniert habe.
    Somit habe ich kurz im Forum geschaut und die Lösung auch schnell gefunden. Nach Update der IP-Adresse ist wohl ein reload des Asterisk nötig.
    Nun gibt es hier schon ein paar Lösungen und ich wollte meine einfach mal vorstellen.
    Sie müsste eigentlich auf jedem Asterisk laufen der das Programm dig und perl installiert hat, egal ob mit oder ohne Router.
    Im Header ist eine kleine Beschreibung in englisch. Kurz in deutsch:
    Ihr müßt checken ob ihr dig und perl auf eurem Rechner habt.
    Dann kopiert ihr das script zb. nach /usr/bin und macht es ausführbar.
    Im Skript passt Ihr die Variable "$dyndnsname" und eventuell noch "$checkintervall" euren Bedürfnissen entsprechend an.
    Zum starten schiebt man es am besten in den Hintergrund mit
    /usr/bin/checkip.pl &
    Somit prüft es nun ob sich eure IP ändert und gegebenenfalls reloaded es den Asterisk.

    Wenn Ihr Kritik oder Verbesserungen und Vorschläge habt dann nur zu.

    Falls ich hier in den falschen Bereich geposted habe, dann bitte verschieben.

    [hr:8c33e6b2e7]
    So hier das Skript.
    Code:
    #!/usr/bin/perl -w
    # /usr/bin/checkip.pl Version 0.0.1 by Martin Koester
    #
    # This is a little script that helps you solving the problem
    # with updating your new ip-address for your dyndns account.
    # Usually you have to reload asterisk after you`ve got a new
    # ip-address assigned by your ISP after a reconnect to hear your
    # called party on th other end of your phone when calling via
    # a SIP-Provider.
    # When this script is started in the background via
    # /usr/bin/checkip.pl &
    # it gets your current ip-address by the dig command (usually on
    # every linux install), when your ip gets changed the script
    # reloads your asterisk.
    #
    # You got to have in your path:
    # perl
    # dig
    #
    # You have to configure two variables.
    # The first is your dyndnsname and the second is the checkintervall.
    # checkintervall is the time in seconds the script should check your IP,
    # default is 60 seconds.
    # My script assumes that you have got asreisk installed under
    # /usr/sbin (default), and that you have admin rights to connect to your
    # Asterisk (I tested it as root ;) )
    #
    # Tested on SuseLinux 8.2 Kernel 2.4.27
    # Asterisk 1.0.5 on the same machine. No Nat.
    #
    # Feel free to use and change it.
    # On any questions you can contact me on the german ip-phone-forum
    # my nick is "klingeljoe"
    # Have fun and keep on ringing
    
    # configurable variables
    $dyndnsname = "hostname.dyndnsprovider.net";
    $checkintervall = 60;
    # end configurable variables
    
    $ip = `dig +short $dyndnsname a`;
    chomp $ip;
    $ipnew = $ip;
    
    ipisequal();
    
    sub ipisequal {
    while ($ip eq $ipnew) {
      $ipnew = `dig +short $dyndnsname a`;
      chomp $ipnew;
      sleep $checkintervall;
      }
    ipisnotequal();
    }
    
    sub ipisnotequal {
      `/usr/sbin/asterisk -r -x reload`;
      sleep $checkintervall;
      $ip = $ipnew;
      ipisequal();
    }
    
    
    Hier als Attachement.
     

    Anhänge: