Chcę pobrać moją maskę sieciową w systemie Linux. Jest wyprowadzane za pomocą, ifconfig
ale chcę wyodrębnić ciąg.
linux
text-processing
ip
michelemarcon
źródło
źródło
ifconfig
Linia maski sieci FreeBSD brzmi:,inet 192.168.144.120 netmask 0xffffff00 broadcast 192.168.144.255
więc chociaż odpowiedzi można łatwo dostosować, prawdopodobnie nie ma jednego uniwersalnego rozwiązania (tylko przy użyciu Bash / ifconfig) .Odpowiedzi:
Powinienem wyjaśnić, że kod tutaj działa dla Linuksa (uwaga na komentarze i posty na temat innych Uniksów). OP poprosił o rozwiązanie dla Linuksa, ale dobrze byłoby zmienić pytanie na „jak uzyskać maskę sieci” i dać odpowiedź łączącą najlepszy sposób na więcej uniksowych smaków.
O ifconfig w Linuksie
Oprócz innych tradycyjnych poleceń sieciowych, takich jak netstat, arp, rarp i route, ifconfig jest częścią pakietu net-tools . Net-tools nie było aktywnie rozwijane od bardzo dawna i istnieją starania, aby przestać go używać na rzecz nowszego pakietu iproute2 . Ze względu na zwięzłość, jeśli chcesz uzyskać więcej informacji na temat tego podstawowego przejścia, oto kilka odpowiednich linków:
Przykład przypadku: Debian Linux
Przykład przypadku: Arch Linux
Strona podręcznika dla net-tools ifconfig (patrz sekcja BŁĘDY)
Analiza i porównanie ram z perspektywy użytkowników
źródło
?
źródło
/sbin/ifconfig eth0 | awk -F: '/Mask:/{print $4}'
/sbin/ifconfig eth0 | awk '/netmask/{print $4}'
Zastanawiam się, czy naprawdę chcesz tylko maski. Może naprawdę chcesz, aby sieć (lub adres IP) z maską była używana w plikach konfiguracyjnych, z
nmap
, lub czymkolwiek.W takim przypadku w systemie Linux można również przeanalizować dane wyjściowe
ip ...
polecenia.Aby wyświetlić listę wszystkich interfejsów wraz z ich adresem i maską w notacji CIDR:
Lub ograniczyć go do domyślnego interfejsu:
co daje mi „192.168.1.61/24” na moim komputerze.
źródło
ip -o -f inet addr show scope global
iip route list default
.jeśli używasz systemu operacyjnego, który wyświetla maskę w postaci szesnastkowej, możesz zrobić coś takiego:
źródło
źródło
awk
których nie korzysta się w rzeczywistościifconfig
. Chciałbym zaproponować kilka zmian ale:ifconfig eth0 | grep -o 'Mask:[^\s]*' | cut -d':' -f2
.-o
Tak żegrep
zwraca tylko część linii, a nie całej partii (bardziej wydajne). Dopasuj znaki spoza ([^\s]*
), aby znaleźć koniec tokena maski sieci. Pojedyncze cudzysłowy wokół separatora pola dla bezpieczeństwa./sbin/ifconfig | grep ask | sed -e 's/.*netmask //g' | sed -e 's/ .*//g'
wyprowadzić maskę w postaci szesnastkowej.Jeśli szukasz maski sieci dla domyślnego urządzenia sieciowego, to polecenie zwraca urządzenie domyślne, ponieważ domyślnym urządzeniem może nie być eth0
A to polecenie pobiera maskę:
Dzięki Eliahowi Kaganowi i Paulo Tome, którzy pomogli mi zarówno uprościć, jak i wyjaśnić odpowiedź. Na mojej osobistej maszynie domyślnym urządzeniem ethernetowym było „wlx504654c1a91”, co było zbyt skomplikowane, aby zapamiętać i wpisać dokładnie, stąd proces dwuetapowy.
źródło
grep 'pattern' | awk '{ action }'
zwykle można zmniejszyć doawk '/pattern/ { action }'