Portál AbcLinuxu, 13. května 2025 22:16

Dotaz: Zjištění ip adresy, network a masky pomocí skriptu

29.10.2006 19:44 Thunder.m | skóre: 35 | blog: e17
Zjištění ip adresy, network a masky pomocí skriptu
Přečteno: 1470×
Odpovědět | Admin
Nevíte jak bych mohl snadno zjistit tyto údaje na nějaké kartě?
příklad:
Mam eth0 nastavené na ip adresu 10.10.10.24 masku 255.255.255.128

Z toho bych rád zjistil toto:
adresa - 10.10.10.24
síť - 10.10.10.0/25
maska - 255.255.255.128
Dělám to docela složitým skriptem, nejde to nějak jednodušeji?

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

29.10.2006 19:45 Thunder.m | skóre: 35 | blog: e17
Rozbalit Rozbalit vše Re: Zjištění ip adresy, network a masky pomocí skriptu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zapoměl jsem napsat že ideálně přes bash ne perl ani nic vyššího (samozřejmě příkazy jako expr ano).
Řešení 1× (MMMMMMMMM)
29.10.2006 20:55 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Zjištění ip adresy, network a masky pomocí skriptu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Třeba takhle? Je to tedy poněkud neučesané…
#!/bin/bash
DEV='eth0'
IP_M=`ip -o addr show dev $DEV | awk '$3 ~ /inet/ {print $4}'`
IP=`echo "$IP_M" | awk -F/ 'NR == 1 {print $1}'`
MASK=`echo "$IP_M" | awk -F/ 'NR == 1 {print $2}'`
if let $(( (32-${MASK}) > 0))
then
        MASK4=$(( (255 << (32-${MASK})) & 255))
else
        MASK4=255
fi
if let $(( (24-${MASK}) > 0))
then
        MASK3=$(( (255 << (24-${MASK})) & 255))
else
        MASK3=255
fi
if let $(( (16-${MASK}) > 0))
then
        MASK2=$(( (255 << (16-${MASK})) & 255))
else
        MASK2=255
fi
if let $(( (8-${MASK}) > 0))
then
        MASK1=$(( (255 << (8-${MASK})) & 255))
else
        MASK1=255
fi
IP1=`echo "$IP" | awk -F. '{print $1}'`
IP2=`echo "$IP" | awk -F. '{print $2}'`
IP3=`echo "$IP" | awk -F. '{print $3}'`
IP4=`echo "$IP" | awk -F. '{print $4}'`
echo "ip: $IP"
echo "síť: $(($IP1 & $MASK1)).$(($IP2 & $MASK2)).$(($IP3 & $MASK3)).$(($IP4 & $MASK4))"
echo "maska: $MASK1.$MASK2.$MASK3.$MASK4"
29.10.2006 23:25 Thunder.m | skóre: 35 | blog: e17
Rozbalit Rozbalit vše Re: Zjištění ip adresy, network a masky pomocí skriptu
Díky, sice jsem si představoval že například na tu masku bude jednodušší příkaz, ale i tak mi to moc pomohlo.
29.10.2006 22:01 XMurder | skóre: 25 | blog: introvert
Rozbalit Rozbalit vše Re: Zjištění ip adresy, network a masky pomocí skriptu
Odpovědět | | Sbalit | Link | Blokovat | Admin
no hledal sem jak to vyřešit v pythonu, ale nic moc, dal sem dohromady jenom tohle:
#!/usr/bin/env python
import socket

hostname = socket.gethostname()
ip = socket.gethostbyname( socket.gethostname() )

print 'Hostname:', hostname
print 'IP adresa:', ip
:-(
V Céčku nebo Perlu by to šlo v pohodě...
25.8.2011 21:31 Ponyta
Rozbalit Rozbalit vše Re: Zjištění ip adresy, network a masky pomocí skriptu
Zrovna je nuda, tak pracuju na DoS prográmku pro Call of Duty 2... nevím jestli ti to nějak pomůže, Navíc po 5 letech :P ale co třeba:

IP = str(str(os.popen("ifconfig").readlines()).split("addr:")[1]).split(" ")[0]

pro masku by to bylo podobné...
Jendа avatar 25.8.2011 21:43 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Zjištění ip adresy, network a masky pomocí skriptu
Pozor, ifconfig v Linuxu už 12 let vrací nesmysly.
25.8.2011 21:50 Ponyta
Rozbalit Rozbalit vše Re: Zjištění ip adresy, network a masky pomocí skriptu
Aha, tak to sem netušil, nejsem totiž přespříliš zdatný linuxák, používám ho defaultně docela krátkou dobu... Takže, proč vrací nesmysly? Myslíš to snad tak, že na různých distrech to vrací data jinak, nebo v čem je problém?
Jendа avatar 25.8.2011 21:56 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Zjištění ip adresy, network a masky pomocí skriptu
Viz diskuzi k tomuhle zápisku.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.