PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Q:Shellscript: Wie ermittle ich IP-Adresse?


micha
10-05-2001, 13:16
Hallole,

sorry, hab mich verlesen, moment, neues kommt sofort....

[ 10. Mai 2001: Beitrag editiert von: micha ]

thommy
10-05-2001, 13:19
nslookup Rechnername | sed -n '3,7{s/Address: \(.*\)/\1/p;}'

Soweit ich weiß, gibt nslookup immer zunächst die Adresse des befragten DNS-Servers aus, deshalb überspringt obiger sed-Aufruf die ersten beiden Zeilen. Auf den nächsten 4 Zeilen sollte dann die Adresse zu finden sein. Prüfe aber die Ausgabe, ob sie leer ist!

Thomas

[ 10. Mai 2001: Beitrag editiert von: thommy ]

micha
10-05-2001, 13:26
Hallole,

s könnt ne einfachere Lösung geben, hab ich aber net drüber nachgedacht, da ich mich mit dem hier gerade beschäftige ;) :

----------- lookup.c -----------------------
#include <stdio.h>
#include <arpa/inet.h>
#include <netdb.h>

int main( int argc, char **argv )
{
struct in_addr addr, **ptr;
struct hostent *host;
int sock;

if( argc != 2 )
exit(1);

if( inet_aton(argv[1], &addr))
host = gethostbyaddr((char*)&addr, sizeof(addr), AF_INET );
else
host = gethostbyname(argv[1]);

if(!host)
exit(1);
else {
ptr = (struct in_addr**)host->h_addr_list;
fprintf( stdout, "%s\n", inet_ntoa(**ptr) );
fflush(stdout);
}
return 0;
}
-----------------------------------------

Speicher das Ding als lookup.c und kompilier es mit "gcc -o lookup lookup.c". Dann kannst Du mit "./lookup 192.168.7.1" den Rechnernamen bekommen. Ich habs so geschrieben, das es überhaupt keine Fehlermeldung ausgibt, dann kannst Du´s in Deinem Script auf Null überprüfen:
---------------------------------------
#! /bin/sh
#
IP="192.168.7.1"
NAME=`lookup $IP`

if[ -z $NAME ]; then
......
else
......
fi
---------------------------------------

Ich weiss, ist kein Shellscript, mir is aber grad nix anderes eingefallen ;)

Gruß micha

[ 10. Mai 2001: Beitrag editiert von: micha ]

micha
10-05-2001, 13:31
wieso schluckt der die "kleiner-größer-als" net ??
Die drei ersten Zeilen abändern mit:

#include "stdio.h"
#include "arpa/inet.h"
#include "netdb.h"

und anstatt den "" jeweils ein kleiner-als und größer-als zeichen...

Gruß micha

thommy
10-05-2001, 14:12
@micha

In &lt; und &gt; werden HTML-Tags eingeschlossen. Ein &lt;stdio&gt; versucht der Browser als Tag zu verarbeiten, da dies nicht klappt, ignoriert er's einfach ;)

Also HTML-Tags immer im Uni-Code angeben:

&lt; als &amp;lt;
&gt; als &amp;lt;

und... nette C-Übung... ;)

Thomas

tkortkamp
10-05-2001, 15:59
Hi!
Also, ich habe das mal so gelöst:


/sbin/ifconfig eth0 | gawk /inet\ addr:/ | gawk '{ x = $2 } ; { y = substr(x,6) } ; { print y}'

Wenn du das eth0 wegläßt, dann zeigt er alle IP-Adressen des Systems an. Für die dynamische IP-Adresse einfach ppp0 oder ippp0 angeben usw.

cu,
Tobias

micha
10-05-2001, 18:29
@thommy

zu den tags:
nachdem ich jetzt die Erklärung hab, ists mir ja fast schon peinlich...danke ;)

zu der Übung:
fällt mir nix dazu ein ;)

Gruß micha

rbla
10-05-2001, 19:03
alles irgendwie sehr umständlich

IP=`host www.foo.com (http://www.foo.com) | head --lines=1 | cut -d" " -f4`

FQDN=`host 1.2.3.4 | head --lines=1 | cut -d" " -f5`

@tobias
und mit ifconfig kriegt man die eigene ip, das wollte ralf nicht

[ 10. Mai 2001: Beitrag editiert von: Ronny Buchmann ]

tkortkamp
10-05-2001, 21:09
@Ronny Buchmann
Upps, hast recht. Manchmal antworte ich ohne nachzudenken/lesen. :rolleyes:

Ralf Bender
11-05-2001, 00:48
Hallo,

kann mir jemand verraten wie ich die IP-Adresse mit einem Shell-Script herrausbekomme, wenn ich den Hostname habe?

Danke
Ralf

Ralf Bender
11-05-2001, 07:27
Hi,

danke fuer eure rege Hilfe. War doch sehr fruchtbar!

ralf