LINUX.ORG.RU

Bash быдлокод


0

1

local_address=`ifconfig eth0 | awk '/inet /{i=split($2, arr, ":"); print(arr[2])}'`

можно ли получить IP адрес интерфейса не прибегая к таким извращениям? Делается на максимально покоцаном busybox, есть sed, grep, awk.

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

[code]
ifconfig eth0 | awk -F":" '/(inet addr:)/ {print $2}' | awk '{print $1}'
[/code]
or
[code]
ifconfig eth0 | awk -F":" '/(inet addr:)/ {print $2}' | sed 's/Bcast//'
[/code]

меньше вызовов наверно никак, если не извращатся как ты))

outsider ★★
()

дернуто из инета

#include <stdio.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <net/if.h>

int main( int argc, char *argv[] )
{
	int s;
	struct ifreq buffer;
	s = socket(PF_INET, SOCK_DGRAM, 0);
	memset(&buffer, 0x00, sizeof(buffer));
	strcpy(buffer.ifr_name, "eth0");
	ioctl(s, SIOCGIFADDR, &buffer);
	close(s);
	return 0;
}

http://unixhelp.ed.ac.uk/CGI/man-cgi?netdevice 7

как вытащить айпишник из структуры разберетесь, я думаю :)

Bad_Habit
()
Ответ на: комментарий от Deleted

тогда уж

 ip -4 addr show dev eth0 | awk '/inet /{print($2)}' | cut -d/ -f 1

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

это лишние байты, которых и так мало, да и пихать спецсофтину для таких вещей как-то очень уж по пацански :)

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

да конечно, awk это такой монстр что в один вызов можно что угодно написать, scalar (анализатор логов squid) тому пример

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

как из mini_snmpd используя только набор из sed, grep, awk получить локальный IP?

Dark_SavanT ★★★★★
() автор топика
Ответ на: [быдлокод] от snoopcat

it works?

root@gateway:~# uname -a
Linux gateway 2.6.32.16 #1 Sun Sep 26 16:05:11 MSD 2010 mips GNU/Linux
root@gateway:~# grep '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' /proc/net/arp -oE
192.168.10.157

snoopcat ★★★★★
()
Ответ на: it works? от snoopcat
 
# uname -a Linux ER75iXT 2.6.17-emb1 #79 Wed Dec 9 12:12:54 MSK 2009 armv4tl unknown 
# grep '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' /proc/net/arp -oE 
grep: invalid option -- E 
BusyBox v1.13.4 (2009-09-22 18:48:57 MSD) multi-call binary 
<skipped> 
# cat /proc/net/arp 
IP address HW type Flags HW address Mask Device 
192.168.1.10 0x1 0x2 00:11:6B:93:FA:04 * eth0 
# 

неа, не выйдет так цветок каменный, в ARP таблице нет локального ip адреса.

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

>> invalid option — E

root@gateway:~# busybox

BusyBox v1.15.3 (2010-09-26 15:27:43 MSD) multi-call binary


умвр

Бред :) Это арп табличка )

выше предложили просто —

awk '/eth0/ {print $1}' /proc/net/arp

вот я и попробовал (

snoopcat ★★★★★
()
Ответ на: а вот так? от outsider

можно sed`ом в одну команду

/sbin/ifconfig eth0 | sed -r '1 D ; 2 s/.*inet addr:(.*) Bcast.*/\1/g;3 Q'

MKuznetsov ★★★★★
()

А вот такой изврат?

 ifconfig eth0 | grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | grep -m 1 ""

kernelpanic ★★★★★
()

ip -4 addr show dev eth0 | awk '-F( +|/)' '/inet/ {print $3}'

Один вызов awk

AnDoR ★★★★★
()

главное, если это мелкий АРМ, лучше без пайпов, а присваивать переменные.

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

ну у меня там например мак шлюза... при том что моенр мака совсем нету

Jetty ★★★★★
()

ip addr show venet0 | grep -oE «[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+»

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