Uppdatera dynamisk DNS

Tråden skapades och har fått 14 svar. Det senaste inlägget skrevs .
1

Hej.

Jag tänker köra en gammal Mac jag har stående som enkel webbserver. För att göra det någorlunda enkelt har jag satt upp en underdomän som jag pekat om till Loopias DNS, då den verkar vara ganska enkel att ha att göra med. Med en eller ett par dagars mellanrum får jag en ny IP-adress och måste därför ha ett sätt att meddela det. Det är ganska enkelt på Mac OS X, bara att köra curl genom cron så är det fixat.

Men Macen i fråga är gammal och kör Mac OS 8.6. Då blir det lite knepigare. I grunden är det dock ganska enkelt, man går in på en webbadress så ändras DNS-uppgiften. Så här ser adressen ut:

https://dns.loopia.se/XDynDNSServer/XDynDNS.p...

Det är ganska enkelt att fixa detta med ett AppleScript. Internet Explorer har användarnamn och lösenord i sin databas. Så allt som behövs är att en enkel adress öppnas.

Tell application "Internet Explorer" to OpenURL "https://dns.loopia.se/XDynDNSServer/XDynDNS.p..." toWindow 0

Jag tror även jag ska kunna fixa så att det repeteras med jämna mellanrum.

Men det stora problemet är hur jag ska få scriptet att veta vilken IP-adress som ska användas. Det är lätt att få från en annan server. Det räcker med en PHP-fil på en server och köra:

<?php echo getenv('REMOTE_ADDR'); ?>

Men hur får jag in resultatet av det i scriptet? Jag är inte särskilt kunnig i AppleScript, och de sökningar jag gjort har inte givit några bra resultat.

Eller finns det någon annan metod som kan vara bättre?

En metod, kanske inte den bästa, är att först i scriptet besöka denna adress, läsa av HTML-koden, dela upp den i bitar med Applescript Text Item Delimiters och på det viset få fram IP-numret.

http://whatismyip.com/

Det är så jag har tänkt göra. Förutom att jag kör ett eget PHP-script på en annan server som bara skickar tillbaka IP-adressen utan några andra tecken som behöver kastas bort. Men jag kommer inte på hur jag sen ska få in det i scriptet.

  • Medlem
  • International user
  • 2007-10-28 20:14
set theIP to do shell script "ifconfig | grep 'broadcast' | awk '{print $2}'"

Du kan även ställa in vilket NIC du vill ha; en0 eller en1 t.ex.

Du sätter en variabel?

Ursprungligen av Taz_1999:

Du sätter en variabel?

För er invigda AppleScriptare är det säkert busenkelt. Men jag greppar inte hur jag ska göra. Ska jag låta webbläsaren gå in på sidan som skickar tillbaka IP-adressen, och i så fall hur gör jag för att få det från webbläsaren till scriptet?

Ursprungligen av Marcus K:

För er invigda AppleScriptare är det säkert busenkelt. Men jag greppar inte hur jag ska göra. Ska jag låta webbläsaren gå in på sidan som skickar tillbaka IP-adressen, och i så fall hur gör jag för att få det från webbläsaren till scriptet?

Ledsen Marcus men det är ovanför min ambitionsnivå att ge dig en grundkurs i Applescript i ett forum som detta. Av det sätt du ställde frågan så fick jag för mig att du kunde en del grundläggande saker som tex sätta variabler, sök-ersätt i Applescript (via något som heter text item delimiters) och förstås att man kan öppna varje programs ordlista (Dictionary) och i den se vilka kommandon programmet förstår. I så fall så handlar uppgiften du försöker lösa om att kolla i ordlistan för Internet Explorer i din Mac OS 8.6 eller ordlistan för URL Access (har för mig det heter så), du öppnar dessa genom att i Manusredigerare välja Arkiv > Öppna ordlista.

Däri finns kommandon för att för det första öppna en webbsida som kanske heter något i stil med "open URL "blablabla" , men även att greppa sidan från webbläsaren, något i stil med kanske "set completeHTMLCode to source of window 1" (source refererar till HTML-koden för aktuell webbsida öppnad i IE men det kan förstås heta något helt annat) eller något i den stilen.

När du har all HTML-kod på sidan i en variabel på det viset så kan du sedan behöva strippa ut den biten som är IP-numret, du gör det genom att använda search-and-replace i Applescript (googla på det för massa exempel eller sök i forumet här). Så småningom med lite tricksande här har du endast IP-numret. Men du har ju skapat en websida som endast returernar IP-numret så det är enklare då.

Nästa steg är att ändra ip-numret för domänen, du sätter ihop en textsträng sålunda:

set URLToChangeIP to "http://lopia osv" & MittNyaIP

och sen

tell internet explorer
open URL URLToChangeIP
end tell

Ok, ungefär så. Enkelt om man kan det.

Men du har löst det på ett annat sätt, vilket också fungerar, men det är verkligen fullt möjligt att lösa detta i Applescript, men jag har liksom inte tid att lösa problemet åt dig och ge dig färdig kod. Ok?

Ursprungligen av Taz_1999:

Ok, ungefär så. Enkelt om man kan det.

Men du har löst det på ett annat sätt, vilket också fungerar, men det är verkligen fullt möjligt att lösa detta i Applescript, men jag har liksom inte tid att lösa problemet åt dig och ge dig färdig kod. Ok?

Helt ok. Tack för den ordentliga genomgången. Jag kom på nu att jag helt missförstått det fundamentala i hur AppleScript fungerar. Men nu tror jag att jag kan få det att fungera.

  • Medlem
  • International user
  • 2007-10-28 20:24

Javisst, och den variabeln kan du sätta in i http-anropet

Ursprungligen av Spiken:
set theIP to do shell script "ifconfig | grep 'broadcast' | awk '{print $2}'"

Du kan även ställa in vilket NIC du vill ha; en0 eller en1 t.ex.

Tack. Men tyvärr fungerar det inte. Dels på grund av att jag i så fall bara får tillbaka datorns privata IP-adress. Jag har tyvärr inte satt servern på en egen publik IP-adress. För det andra kör datorn som sagt Mac OS 8.6.

Jag lade ner mina försök att få till ett fungerande AppleScript och skrev ihop ett litet program i en gammal version av RealBasic som kollar upp IP-adressen var 20:e sekund och då den ändras säger åt webbläsaren att gå ut på uppdateringssidan.

Nu återstår att bestämma sig för om det är MacHTTP eller WebSTAR man ska köra. Just nu kör jag båda tills vidare.

MacHTTP: http://copland.aletes.se/
WebSTAR: http://copland.aletes.se:81/

  • Oregistrerad
  • 2007-10-31 10:16
Ursprungligen av Marcus K:

Jag lade ner mina försök att få till ett fungerande AppleScript och skrev ihop ett litet program i en gammal version av RealBasic som kollar upp IP-adressen var 20:e sekund och då den ändras säger åt webbläsaren att gå ut på uppdateringssidan.

Nu återstår att bestämma sig för om det är MacHTTP eller WebSTAR man ska köra. Just nu kör jag båda tills vidare.

MacHTTP: http://copland.aletes.se/
WebSTAR: http://copland.aletes.se:81/

mmm WebSTAR (minnas) hoppas du kan använda servern till något vettigt...

  • Oregistrerad
  • 2007-10-31 10:18

Det jag inte förstår är varför du inte använder DynDNS istället. Dom har ju tom en Mac klient (Classic och X). Eller varför Loopia inte själva läser av REMOTEIP på sin sida, då hade allt varit löst

Ursprungligen av studiox:

Det jag inte förstår är varför du inte använder DynDNS istället. Dom har ju tom en Mac klient (Classic och X).

Jag funderade på det, men såvitt jag förstod är det bara kostnadsfritt att använda DynDNS för deras domännamn. Om jag ville använda ett eget skulle det kosta pengar och det ville jag helst undvika.

  • Medlem
  • Mölndal
  • 2007-10-31 21:53

Det är ju bara att sätta ett CNAME i DNSen för din egen domän som pekar till den domän som du får via DynDNS, du kan se hur jag har det på min egen domän:

www.macexchange.se. 3600 IN CNAME macexchange.homeip.net.

Har också ställt in min router att den skall uppdatera min DynDNS vid behov (när jag får ny IP)

1
Bevaka tråden