IP Adresse

Post Reply
Message
Author
Schlumpf

IP Adresse

#1 Post by Schlumpf »

Wie kann ich unter Linux meine IP-Adressen (eth0, eth1, ippp0, ...)auslesen lassen bzw. eine Bestimtme bzw. auswählen kann welche ich will und in einer long int Variable speichern?

User avatar
hjb
Pro-Linux
Posts: 3264
Joined: 15. Aug 1999 16:59
Location: Bruchsal
Contact:

Re: IP Adresse

#2 Post by hjb »

Hi,

ich weiß es auch nicht auswendig, aber da müßte es ioctl-Aufrufe dafür geben. Oder muß man die Devices aus /proc/net/dev ermitteln? Als Einstieg empfehle ich dir dir Manpages zu ip(7), tcp(7) und socket(7). Im Quellcode von Programmen wie z.B. ethereal findest du Beispiele, wie es implementiert wird.

Gruß,
hjb
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?

Schlumpf

Re: IP Adresse

#3 Post by Schlumpf »

Hat mich zwar bis jetzt noch nicht großartig weitergebracht, aber trotzdem dank hjb

tkortkamp
Posts: 143
Joined: 08. Apr 2001 22:56
Location: Bremen

Re: IP Adresse

#4 Post by tkortkamp »

Hi!
Du könntest mit Hilfe von ifconfig und gawk die IP-Addresse herausfinden:
<blockquote><hr>/sbin/ifconfig eth0 | gawk /inet\ addr:/ | gawk '{ x = $2 } ; { y = substr(x,6) } ; { print y}'<hr></blockquote>

Für den Broadcast:
<blockquote><hr>/sbin/ifconfig eth0 | gawk /inet\ addr:/ | gawk '{ x = $3 } ; { y = substr(x,7) } ; { print y} '<hr></blockquote>
Für Netmask:
<blockquote><hr>/sbin/ifconfig eth0 | gawk /inet\ addr:/ | gawk '{ x = $4 } ; { y = substr(x,6) } ; { print y}'<hr></blockquote>

Das könnte man dann doch von dem C-Programm aus aufrufen. (Ich weiß das mit dem doppelten Aufruf von gawk ist nicht profesionell <img src="http://www.pl-forum.de/UltraBoard/Images/Sad.gif" border="0" align="middle">. Hab mich aber auch erst seit gestern mit gawk beschäftigt.<img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">)

Viel Glück,
Tobias
dude i'm pretty damn sure you could script somebody back to life

Schlumpf

Re: IP Adresse

#5 Post by Schlumpf »

Der Aufruf tut bei mir leider net, aber ist nicht so schlimm. Bin gerade dabei die Quellen von ifconfig durchzulesen, es muss da ja irgendwo drinstehen wie ifconfig das macht. Nochmals vielen Dank an alle.

cya

Christian Thurner

Re: IP Adresse

#6 Post by Christian Thurner »

Hi,

dieses kleine Programm sollte in etwa das tun, was Du willst.

CU
Christian


#include <stdio.h>
#include <sys/ioctl.h>
#include <string.h>
#include <net/if.h>
#include <arpa/inet.h>

int printIP(const char *interface)
{
struct ifreq ifr;
struct sockaddr_in *addr_ptr;
int sock_fd;

if( (sock_fd = socket( AF_INET, SOCK_STREAM, 0 )) < 0 )
return -1;

memset( &ifr, 0, sizeof(ifr) );
strcpy( ifr.ifr_name, interface );
if( ioctl(sock_fd, SIOCGIFADDR, &ifr) == 0 ) {
addr_ptr = (struct sockaddr_in *) &ifr.ifr_addr;
addr_ptr->sin_family = AF_INET;
printf("Interface : %s
IP : %s
", interface, inet_ntoa(addr_ptr->sin_addr) );
return 0;
}

return -1;
}


int main(int argc, char** argv)
{
if( argc < 2 ) {
printf( "USAGE : getip <INTERFACE>
" );
return -1;
}

if( printIP( argv<font size="1"> ) != 0 ) {
printf( "ERROR
");
return -1;
}

return 0;
}

weissi
Posts: 40
Joined: 24. Mar 2001 20:16
Location: Freiburg
Contact:

Re: IP Adresse

#7 Post by weissi »

Super das Proggi!!! Das habe ich schon länger mal gesucht :)))
Aber du hast in der Zeile
if( printIP( argv ) != 0 ) {
was vergessen, das muss
if( printIP( argv<font size="1"> ) != 0 ) {
heissen. Ich würde das ganze in eine for schleife packen, je nach dem wie viele Argumente ;)
Weissi

germannightwing
Posts: 29
Joined: 08. Aug 2000 20:53
Location: Oberhausen
Contact:

Re: IP Adresse

#8 Post by germannightwing »

Hallo,

<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">if( printIP( argv[ 1 ] ) != 0 )</font><hr></pre></blockquote>

sollte es eigentlich heißen. Löscht die Leerzeichen in den eckigen Klammer, das Boardsystem hat ne Macke und meint das währe UBB Code.

bye
/ Bernd /
Last edited by germannightwing on 25. Apr 2001 23:25, edited 4 times in total.
<!--http--><a href="http://www.blue-temple.de" target="_blank"><img src="http://www.blue-temple.de/footer.png" border="0"></a><!--url-->

Schlumpf

Re: IP Adresse

#9 Post by Schlumpf »

Hi all,

endlich tut es und langsam verstehe ich den Code auch.

Danke nochmal an alle

Post Reply