Hirdetés

Új hozzászólás Aktív témák

  • gra3o

    csendes tag

    válasz trance89 #62 üzenetére

    no-ip-t használok, de nem ez volt a lényeg, hanem, hogy a kívülre fwd-olt porton érjem el belülről is a service-t.

    Ez a script amúgy tudja mindkettőt, illetve publikus ipt is csekkolhatsz vele nem csak a külső láb ip-jét.

    #************************************************************************************************
    # Parameters
    #************************************************************************************************
    :local username "your username"
    :local password "password"
    :local hostname "hostname"

    #availabe options: "http" or "iface"
    # - http: will query an external server and discover you public ip (userful for NATted connections)
    # - iface: will use the ip address assigned to the $iface interface (see below)

    :local discoverBy "http"

    # interface used to get ip address from (only if discoverBy = iface)

    :local iface "public-dsl"

    # current available services: "dyndns", "noip" and "changeip"
    :local service "noip"

    # number of days to force an update if your IP did not change (helps keeping your account active)
    :local forceUpdate 15

    #************************************************************************************************
    # do not change below this unless you know what you are doing
    #************************************************************************************************

    :local force
    :global lastUpdate
    :local currentIP

    :if ($discoverBy="http") do={
    /tool fetch mode=http address="checkip.dyndns.org" src-path="/" dst-path="/dyndns.checkip.html"
    :local result [/file get dyndns.checkip.html contents]
    :local resultLen [:len $result]
    :local startLoc [:find $result ": " -1]
    :set startLoc ($startLoc + 2)
    :local endLoc [:find $result "</body>" -1]
    :set currentIP [:pick $result $startLoc $endLoc]
    } else={
    :set currentIP [ /ip address get [find interface=$iface disabled=no] address ]
    :for i from=( [:len $currentIP] - 1) to=0 do={
    :if ( [:pick $currentIP $i] = "/") do={ :set currentIP [:pick $currentIP 0 $i] }
    }
    }

    #get IP from DynDNS for our hostname
    :local resolvedIP [:resolve $hostname]

    # get current date in format mm/DD/YYYY
    :local date [ /system clock get date ]

    # convert to YYYYMMDD
    :local months ("jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec");
    :local month [ :pick $date 0 3 ]; :local day [ :pick $date 4 6 ]; :local year [ :pick $date 7 11 ];
    :local mm ([ :find $months $month -1 ] + 1);
    :if ($mm < 10) do={ :set month ("0" . $mm); } else={ :set month $mm; }
    :set date ($year . $month . $day);

    :if ([ :typeof $lastUpdate ]=[:nothing] || (($date-$lastUpdate) >= $forceUpdate && $forceUpdate > 0)) do={
    :set force true
    }

    :put ("Current IP: $currentIP ($discoverBy), Last update: $lastUpdate")

    # Determine if dyndns update is needed
    :if (($currentIP != $resolvedIP) || ($force = true)) do={

    :if ($service = "dyndns") do={
    /tool fetch user=$username password=$password mode=http address="members.dyndns.org" \
    src-path="/nic/update?hostname=$hostname&myip=$currentIP" dst-path="/output.txt"
    }
    :if ($service = "noip") do={
    /tool fetch user=$username password=$password mode=http address="dynupdate.no-ip.com" \
    src-path="/nic/update?hostname=$hostname&myip=$currentIP" dst-path="/output.txt"
    }
    :if ($service = "changeip") do={
    /tool fetch user=$username password=$password mode=http address="nic.changeip.com" \
    src-path="/nic/update?hostname=$hostname&myip=$currentIP" dst-path="/output.txt"
    }

    :local result [/file get output.txt contents]
    :log info ("dynamic-dns-updater: Service = $service, Hostname = $hostname")
    :log info ("dynamic-dns-updater: CurrentIP = $currentIP, Resolved IP = $resolvedIP")
    :log info ("dynamic-dns-updater: Update result: ".$result)
    /ip dns cache flush
    :set lastUpdate $date
    }

    [ Szerkesztve ]

    "Egy rossz óra is naponta kétszer jó időt mutat"

Új hozzászólás Aktív témák