Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: jany 26 Října 2010, 13:05:09

Název: skript pre zistenie a ulozenie ip adresy
Přispěvatel: jany 26 Října 2010, 13:05:09
Najprv napisem, ze som uplny laik v problematike programovania a skriptovania, nikdy v zivote som nic nenapisal  :'(
Mam ADSL linku s dinamickou verejnou IP adresou.
Mam modem asus, nastaveny v mode bridge ktory je napojeny na hlavny router so systemom mikrotik (MK)
Zrejme by sa taky skript dal prevazkovat aj na (MK), ale radsej by som to mal na PC s linuxom.
V sieti mam ubuntu server 9.04.
Predstavoval by som si to tak:
1."ze ten skript sa musi dostat" na MK na WAN rozhranie
2. checkne IP adresu
3. ak sa nezmenila, tak neurobi nic
4. ak sa zmenila, tak zapise novu do suboru aj s datumom a casom, kedy bola zmenena
5. skript by sa mohol spustat raz za 5-10 min

Je mozne take nieco spravit ? a ak ano, poradil by niekto ?
Název: Re: skript pre zistenie a ulozenie ip adresy
Přispěvatel: starenka 26 Října 2010, 15:11:48
a co potrebujes, public ip? proc to potrebujes zapisovat? nestaci ti neco jako 

http://starenka.net/ip
http://starenka.net/ip/?out=json
http://starenka.net/ip/?out=xml

?
Název: Re: skript pre zistenie a ulozenie ip adresy
Přispěvatel: Tomáš Břinčil 26 Října 2010, 20:27:42
Nebylo by jednodušší napsat čeho chceš dosáhnout?
Název: Re: skript pre zistenie a ulozenie ip adresy
Přispěvatel: jany 27 Října 2010, 08:18:30
Nebylo by jednodušší napsat čeho chceš dosáhnout?
No uz som to popisal v prvom prispevku.
1.Takze IP a cas by uz bol vyrieseny http://jany.wz.cz/ip_address.php
2. Teraz potrebujem skript, ktory na tejto stranke preveri IP a ulozi do suboru (ak sa IP nezmenila, tak nic, ak sa zmenila, nech zapise do dalsieho riadku novu aj s casom)
Název: Re: skript pre zistenie a ulozenie ip adresy
Přispěvatel: GdH 27 Října 2010, 10:28:52
Třeba takto:
Kód: [Vybrat]
n=`wget -O - http://jany.wz.cz/ip_address.php`; [[ `echo $n|awk '{print $1}'` == `cat file|awk 'END{print $1}'` ]] || echo $n >> file
Název: Re: skript pre zistenie a ulozenie ip adresy
Přispěvatel: Peterx 27 Října 2010, 10:53:28
Co ak http://jany.wz.cz/ip_address.php prestane fungovat?
Název: Re: skript pre zistenie a ulozenie ip adresy
Přispěvatel: GdH 27 Října 2010, 10:59:49
Co ak http://jany.wz.cz/ip_address.php prestane fungovat?

jany si bude muset přečíst nějaký ten manuál a ošetřit si výjimky :)
Název: Re: skript pre zistenie a ulozenie ip adresy
Přispěvatel: starenka 27 Října 2010, 11:12:22
nechces uz konecne napsat o co ti jde? na co potrebujes historii svojich ip?
Název: Re: skript pre zistenie a ulozenie ip adresy
Přispěvatel: jany 27 Října 2010, 15:21:28
nechces uz konecne napsat o co ti jde? na co potrebujes historii svojich ip?
Nejde mi o nic. Jednoducho sa chcem trocha naucit pisat skripty, tak som si zadal takuto ulohu (sam, sebe).  :)
Tento skript od GdH
Kód: [Vybrat]
n=`wget -O - http://jany.wz.cz/ip_address.php`; [[ `echo $n|awk '{print $1}'` == `cat a|awk 'END{print $1}'` ]] || echo $n >> file funguje dobre, ale zapisuje aj ked sa IP nezmeni, to by nevadilo.
Skusal som to zapisat do cronu, ale nejak to nefunguje.
Takze do /etc/crontab som si vlozil riadok
Kód: [Vybrat]
*/2 * * * * /usr/bin/ip_address.shA v /usr/bin/ip_address.sh mam toto
Kód: [Vybrat]
#!/bin/sh
n=`wget -O - http://jany.wz.cz/ip_address.php`; [[ `echo $n|awk '{print $1}'` == `cat a|awk 'END{print $1}'` ]] || echo $n >> /home/jany/ip.log
ale nezapisuje sa nic
Název: Re: skript pre zistenie a ulozenie ip adresy
Přispěvatel: GdH 27 Října 2010, 15:53:41
Zapisovat by to mělo pouze pokud se adresa změní, mně to tak funguje. Samozřejmě poprvé zapíše vždy, neb nemá s čím porovnávat. Cron se edituje pomocí příkazu crontab -e, pro aktuálně přihlášeného uživatele. Jinak k tomu wgetu si přidej zmíněný přepínač -q, ať zbytečně nevypisuje, když se na to stejně nikdo nedívá a skript bych začal #!/bin/bash, protože pro dash jsem to nepsal, neznám ho, nemusí to fungovat.

Edit: v tom mém skriptu jsem zapoměl přepsat u cat název souboru, a je můj zkušební, takže sorry.