/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
Verdens grimmeste shell-script
Fra : Niels Callesøe


Dato : 24-09-05 07:55

Jeg har hakket et shell-script sammen, der laver noget DNS-massage på
inputtet, som følger nedenfor. Det virker i og for sig fint. Men det er
nok noget nær verdens grimmeste shell-script, og må kunne gøres meget
lettere/pænere og med færre operationer.

Har nogen lyst til at hjælpe mig forbedre det lidt?

[nica@eureka:nica]$ cat /home/nica/bin/dns
#!/bin/sh
#
# usage 'dns <sld.tld>'
#
# attach www. to input (domain name)
TEMP=www.$1
# output what we're working with
echo $TEMP
# output IP
host $TEMP | grep address | sed /.*has\ address\ /s///
# output PTR record of IP
host $TEMP | grep address | sed /.*has\ address\ /s/// | nslookup | grep Name
# cleanup
unset TEMP
# output date
date "+i dag er det %d%m%Y nica"

Eksempler på output:

[nica@eureka:nica]$ dns t29.dk
www.t29.dk
62.242.21.10
Name: t29.dk
i dag er det 24092005 nica

[nica@eureka:nica]$ dns findesikke.dk
www.findesikke.dk
Host not found.
Host not found.
i dag er det 24092005 nica

--
Niels Callesøe - dk pfy
pfy[at]nntp.dk - http://www.t29.dk/~nica/disclaimer.php

Apathy is Death

 
 
Klaus Alexander Seis~ (24-09-2005)
Kommentar
Fra : Klaus Alexander Seis~


Dato : 24-09-05 08:10

Niels Callesøe skrev:

> Har nogen lyst til at hjælpe mig forbedre det lidt?

Hvordan reagerer dit script hvis et opslag returnerer mere end én IP-
adresse? Det kunne være fx google.com eller pool.ntp.org. Ideelt set
burde scriptet loope gennem alle linjer returneret af host.

(Der er vist i øvrigt flere version af kommandoen host, og den jeg
bruger har åbenbart ikke samme output som din.)

Mvh,

--
Klaus Alexander Seistrup
Copenhagen, Denmark
http://seistrup.dk/

Niels Callesøe (24-09-2005)
Kommentar
Fra : Niels Callesøe


Dato : 24-09-05 08:18

Klaus Alexander Seistrup wrote:

>> Har nogen lyst til at hjælpe mig forbedre det lidt?
>
> Hvordan reagerer dit script hvis et opslag returnerer mere end én
> IP- adresse? Det kunne være fx google.com eller pool.ntp.org.
> Ideelt set burde scriptet loope gennem alle linjer returneret af
> host.

Hm, det gør det vist allerede. Selvom jeg ikke specifikt havde tænkt
over situationen, den kan normalt ikke opstå for de domæner jeg skal
slå op.

[nica@eureka:nica]$ dns google.com
www.google.com
66.249.93.99
66.249.93.104
*** ns3.tele.dk can't find 66.249.93.104: Non-existent host/domain
*** ns3.tele.dk can't find 66.249.93.99: Non-existent host/domain
det er i dag 24092005 nica

> (Der er vist i øvrigt flere version af kommandoen host, og den jeg
> bruger har åbenbart ikke samme output som din.)

Output fra min host ser således ud:

[nica@eureka:nica]$ host google.com
google.com has address 216.239.37.99
google.com has address 216.239.57.99
google.com mail is handled (pri=10) by smtp1.google.com
google.com mail is handled (pri=10) by smtp2.google.com
google.com mail is handled (pri=10) by smtp4.google.com
google.com mail is handled (pri=40) by smtp3.google.com

[nica@eureka:nica]$ file /usr/bin/host
/usr/bin/host: ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), for FreeBSD 4.9.2, dynamically linked (uses shared libs), stripped

--
Niels Callesøe - dk pfy
pfy[at]nntp.dk - http://www.t29.dk/~nica/disclaimer.php

Apathy is Death

Klaus Alexander Seis~ (24-09-2005)
Kommentar
Fra : Klaus Alexander Seis~


Dato : 24-09-05 08:32

Niels Callesøe skrev:

> Output fra min host ser således ud:
>
> [nica@eureka:nica]$ host google.com
> google.com has address 216.239.37.99
> google.com has address 216.239.57.99
> google.com mail is handled (pri=10) by smtp1.google.com
> google.com mail is handled (pri=10) by smtp2.google.com
> google.com mail is handled (pri=10) by smtp4.google.com
> google.com mail is handled (pri=40) by smtp3.google.com

Og her:

#v+

$ host google.dk
google.dk    A   216.239.59.104
google.dk    A   216.239.39.104
google.dk    A   216.239.57.104
$ host --version
host version 991529
$

#v-

Min host er den der følger med BIND9 (fra pakken bind9-host i Ubuntu).

Mvh,

--
Klaus Alexander Seistrup
Copenhagen, Denmark
http://seistrup.dk/

Niels Callesøe (24-09-2005)
Kommentar
Fra : Niels Callesøe


Dato : 24-09-05 12:47

Klaus Alexander Seistrup wrote:

> Min host er den der følger med BIND9 (fra pakken bind9-host i
> Ubuntu).

Hm. Din er oplagt en GNU-compatible version (fremgår af at den æder --
version). Det er min åbenbart ikke, sikkert fordi det er den der følger
med FreeBSD. Faktisk kan jeg slet ikke få den til at fortælle mig mere
om den selv end jeg kunne finde ud af med file.

Nå, men det er underordnet, jeg er nu skiftet til at bruge resolveip i
stedet, efter Kaspers forslag. Findes resolveip default på en Linux-
dåse?

--
Niels Callesøe - dk pfy
pfy[at]nntp.dk - http://www.t29.dk/~nica/disclaimer.php

Apathy is Death

Klaus Alexander Seis~ (24-09-2005)
Kommentar
Fra : Klaus Alexander Seis~


Dato : 24-09-05 13:03

Niels Callesøe skrev:

> Findes resolveip default på en Linux-dåse?

Ikke på Ubuntu (og altså sikkert heller ikke på Debian).

Mvh,

--
Klaus Alexander Seistrup
Magnetic Ink, Copenhagen, Denmark
http://magnetic-ink.dk/

Jacob Tranholm (24-09-2005)
Kommentar
Fra : Jacob Tranholm


Dato : 24-09-05 13:34

Niels Callesøe wrote:
>
> Nå, men det er underordnet, jeg er nu skiftet til at bruge resolveip i
> stedet, efter Kaspers forslag. Findes resolveip default på en Linux-
> dåse?
>

Absolut ikke!!! Jeg har flere Linux installationer stående (Gentoo og
Ubuntu) og ingen af dem har 'resolveip' installeret. Til forklaring af
dette skal det muligvis siges, at 'resolveip'-kommandoen tilsyneladende
er bundet til MySQL-serverinstallationen, og da jeg personligt
foretrækker PostgreSQL er der gode ods for, at jeg aldrig vil anvende
'resolveip' kommandoen.

--
Mvh. Jacob Tranholm
http://jtranholm.dk/

Kasper Dupont (24-09-2005)
Kommentar
Fra : Kasper Dupont


Dato : 24-09-05 08:30

"Niels Callesøe" wrote:
>
> Jeg har hakket et shell-script sammen, der laver noget DNS-massage på
> inputtet, som følger nedenfor. Det virker i og for sig fint. Men det er
> nok noget nær verdens grimmeste shell-script, og må kunne gøres meget
> lettere/pænere og med færre operationer.

Kalder du det grimt? Så skulle du se nogen af dem jeg har skrevet!

Men det kan muligvis simpliciferes lidt ved brug af resolveip -s
(hvis du har den kommando installeret). Men den slår så kun en IP
adresse op for hvert domæne.

--
Kasper Dupont
Note to self: Don't try to allocate
256000 pages with GFP_KERNEL on x86.

Niels Callesøe (24-09-2005)
Kommentar
Fra : Niels Callesøe


Dato : 24-09-05 12:38

Kasper Dupont wrote:

>> Jeg har hakket et shell-script sammen, der laver noget
>> DNS-massage på inputtet, som følger nedenfor. Det virker i og for
>> sig fint. Men det er nok noget nær verdens grimmeste
>> shell-script, og må kunne gøres meget lettere/pænere og med færre
>> operationer.
>
> Kalder du det grimt? Så skulle du se nogen af dem jeg har skrevet!

Heh, tak, det tager jeg som et 'backhand compliment'.

> Men det kan muligvis simpliciferes lidt ved brug af resolveip -s
> (hvis du har den kommando installeret). Men den slår så kun en IP
> adresse op for hvert domæne.

Hm, ja, med -s får man kun 1 addresse, selvom der er flere. Nu har det
jo vist sig -- nærmest utilsigtet -- at mit script fint håndterer
addresser med flere A-records, så det ville næsten være synd at pille
ved det.

Men jeg kan vist undvære et enkelt grep ved bare at bruge resolveip.
resolveip kan dog ikke erstatte nslookup, da den (ligesom host og dig)
ikke vil æde input direkte fra en pipe.

Revideret script:

#!/bin/sh
#
# usage 'dns <sld.tld>'
#
# attach www. to input (domain name)
TEMP=www.$1
# output what we're working with
echo $TEMP
# output IP
resolveip $TEMP | sed /IP\ address\ of.*is\ /s///
# output PTR record of IP
resolveip $TEMP | sed /IP\ address\ of.*is\ /s/// | nslookup | grep Name
# cleanup
unset TEMP
# output date
date "+nedlagt %d%m%Y nica"

--
Niels Callesøe - dk pfy
pfy[at]nntp.dk - http://www.t29.dk/~nica/disclaimer.php

Apathy is Death

Peter Larsen (24-09-2005)
Kommentar
Fra : Peter Larsen


Dato : 24-09-05 13:36

Niels Callesøe wrote:

> Jeg har hakket et shell-script sammen, der laver noget DNS-massage på
> inputtet, som følger nedenfor. Det virker i og for sig fint. Men det er
> nok noget nær verdens grimmeste shell-script, og må kunne gøres meget
> lettere/pænere og med færre operationer.
>
> Har nogen lyst til at hjælpe mig forbedre det lidt?

Helt klart skal du lærer at bruge "dig"

det er meget nemmere at få et ordentligt output du kan parse på

feks:
#!/bin/sh
#
# usage 'dns <sld.tld>'
#
# attach www. to input (domain name)
DOMAIN=www.$1
FORWARD=`dig $DOMAIN +short A`
REVERSE=`dig -x $FORWARD +short PTR`

# output what we're working with
echo $DOMAIN
# output IP
echo $FORWARD
# output PTR record of IP
echo $REVERSE
# cleanup
unset DOMAIN
unset FORWARD
unset REVERSE
# output date
date "+i dag er det %d%m%Y nica"


nu ved jeg ikke hvad scriptets formål er, men der er flere ting du så skal
tage høje for, feks:

nina# dig www.gratisdns.dk +short
gratisdns.dk.
194.192.15.132

der skal du have pillet "gratisdns.dk." ud.. (www.gratisdns.dk er en cname)



--
Regards, Peter Larsen - GratisDNS.dk / MXHotel.dk / Domæne.dk

Niels Callesøe (25-09-2005)
Kommentar
Fra : Niels Callesøe


Dato : 25-09-05 13:10

Peter Larsen wrote:

> Niels Callesøe wrote:
>
>> Jeg har hakket et shell-script sammen, der laver noget
>> DNS-massage på inputtet, som følger nedenfor. Det virker i og for
>> sig fint. Men det er nok noget nær verdens grimmeste
>> shell-script, og må kunne gøres meget lettere/pænere og med færre
>> operationer.
>>
>> Har nogen lyst til at hjælpe mig forbedre det lidt?
>
> Helt klart skal du lærer at bruge "dig"

Deri har du sikkert ret, som en generel betragtning. Men til mit formål
virker dig ikke særlig godt, indtil videre.

> det er meget nemmere at få et ordentligt output du kan parse på

Måske, men ikke for mig. Jeg synes dig har en tendens til at kaste op
udover skærmen med linie efter linie af informationer jeg ikke har brug
for eller bedt om.

Min version af dig kender i øvrigt ikke +short (<<>> DiG 8.3 <<>>), og
selvom jeg prøver med diverse andre options til at mindske output, får
jeg stadig langt mere overflødigt ud end med for eksempel host.

Det er lidt ærgeligt, dog, for det viser sig jo at med de mange
forskellige versioner af programmerne og default-konfigurationer de
forskellige *nix'er kommer med, er mit script indtil videre mege lidt
portabelt.

--
Niels Callesøe - dk pfy
pfy[at]nntp.dk - http://www.t29.dk/~nica/disclaimer.php

Apathy is Death

Peter Larsen (25-09-2005)
Kommentar
Fra : Peter Larsen


Dato : 25-09-05 13:26

Niels Callesøe wrote:

> Min version af dig kender i øvrigt ikke +short (<<>> DiG 8.3 <<>>), og

det er en 9.x feature..



--
Regards, Peter Larsen - GratisDNS.dk / MXHotel.dk / Domæne.dk

Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408942
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste