LINUX.ORG.RU

[Linux] как можно получить дефолтный адрес интерфейса?

 


0

0

стандартными средствами. Нужен аналог вот такого питоновского кода

#!/usr/bin/python

from sys        import argv
from socket     import socket, inet_ntoa
from socket     import AF_INET, SOCK_DGRAM
from fcntl      import ioctl
from struct     import pack


name = argv[1][:15]

s = socket(AF_INET, SOCK_DGRAM)

ip =  inet_ntoa(ioctl( s.fileno(), 0x8915,  # SIOCGIFADDR
    pack('256s', name) )[20:24] )

print ip

Ответ на: комментарий от gh0stwizard

gateway (vpnc-script):

netstat -r -n | awk '/:/ { next; } /^(default|0\.0\.0\.0)/ { print $2; }'

gh0stwizard ★★★★★
()
Ответ на: комментарий от gh0stwizard

>ifconfig eth0 | grep 'inet addr' | awk -F: '{print $2}' | sed s/\ .*//

Не проверяя правильность, могу упростить:

ifconfig eth0 | awk -F: 'match($0, «inet addr»){ print substr($2, 1, index($2, " ") - 1) }'


//М-да. Вышло ненамного проще.

proud_anon ★★★★★
()

Мда... как всё печально. А может как-то с помощью iproite2 красивее можно сделать? Посмотрел ip addr, но там тоже много мусора пишет.

mikki
() автор топика

mikki> дефолтный адрес интерфейса
Я, например, такую фразу не понимаю.

sdio ★★★★★
()

bash:

function get_addr()
{
IFCONFIG='/sbin/ifconfig';
HEAD='head -2';
TAIL='tail -1';
CUT='cut -d: -f2';
IP=`$IFCONFIG $1 | $HEAD | $TAIL | awk '{print $2}' | $CUT`;
echo $IP;
}

EXTDEV=eth0
EXTERNALIP=`get_addr $EXTDEV`

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

C:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/ioctl.h>
#include <net/if.h>
#include <unistd.h>

char ip[24];

void get_ip ( void ) {
int s;
struct ifreq ifr = {};
s = socket(PF_INET, SOCK_DGRAM, 0);
strncpy(ifr.ifr_name, «eth0», sizeof(ifr.ifr_name));
if (ioctl(s, SIOCGIFADDR, &ifr) >= 0)
snprintf(ip, 23, «%s», inet_ntoa(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr));
if (s) close (s); }

Sylvia ★★★★★
()
Ответ на: комментарий от proud_anon

А что именно пишет и чем предложенные варианты не устраивают?

В общем то устраивают, надеялся обойтись без шеловского BDSM (ради своего чувства прекрасного).

mikki
() автор топика
Ответ на: комментарий от Sylvia

Sylvia> если гнаться за лаконичностью,
А иначе в первом же ответе есть решения. Зачем тогда все остальные? ЧСВ потешить?

sdio ★★★★★
()
Ответ на: комментарий от Sylvia

На си и так ясно как сделать. Всем thx, буду считать проблему решённой

mikki
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.