IP Adresse
IP Adresse
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?
Re: IP Adresse
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
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?
Re: IP Adresse
Hat mich zwar bis jetzt noch nicht großartig weitergebracht, aber trotzdem dank hjb
Re: IP Adresse
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
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
Re: IP Adresse
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
cya
Re: IP Adresse
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;
}
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;
}
Re: IP Adresse
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
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
-
- Posts: 29
- Joined: 08. Aug 2000 20:53
- Location: Oberhausen
- Contact:
Re: IP Adresse
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 /
<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-->
Re: IP Adresse
Hi all,
endlich tut es und langsam verstehe ich den Code auch.
Danke nochmal an alle
endlich tut es und langsam verstehe ich den Code auch.
Danke nochmal an alle