Portál AbcLinuxu, 8. listopadu 2025 23:58
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.128Dělám to docela složitým skriptem, nejde to nějak jednodušeji?
Řešení dotazu:
#!/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"
#!/usr/bin/env python import socket hostname = socket.gethostname() ip = socket.gethostbyname( socket.gethostname() ) print 'Hostname:', hostname print 'IP adresa:', ip

Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.