Saya harus mengklarifikasi bahwa kode di sini berfungsi untuk Linux, (perhatikan komentar dan posting tentang Uni lain). OP meminta solusi Linux, tetapi akan baik untuk mengubah pertanyaan menjadi "bagaimana cara mendapatkan netmask" secara umum, dan minta jawabannya menggabungkan cara terbaik untuk lebih banyak rasa Unix.
#!/bin/sh
ifconfig "$1" | sed -rn '2s/ .*:(.*)$/\1/p'
./skrip eth0
Tentang ifconfig di Linux
Bersama dengan perintah jaringan tradisional lainnya seperti netstat, arp, rarp dan route, ifconfig merupakan bagian dari net-tools kemasan. Net-tools belum dikembangkan secara aktif sejak lama dan ada upaya untuk menghentikannya demi mendukung iproute2 yang lebih baru kemasan. Demi singkatnya, jika Anda menginginkan detail lebih lanjut tentang transisi mendasar ini, berikut beberapa link yang relevan:
Contoh kasus:Linux Debian
Contoh kasus:Arch Linux
Halaman manual untuk net-tools ifconfig (lihat bagian BUGS)
Analisis dan perbandingan kerangka kerja dari perspektif pengguna
/sbin/ifconfig eth0 | awk '/Mask:/{ print $4;} '
?
Saya ingin tahu apakah Anda benar-benar hanya menginginkan topeng. Mungkin Anda benar-benar menginginkan jaringan (atau IP) dengan topeng, untuk digunakan dalam file konfigurasi, dengan nmap
, atau apa pun.
Dalam hal ini, di Linux, Anda juga dapat mengurai keluaran dari ip ...
memerintah.
Untuk mencantumkan semua antarmuka dengan alamat dan topengnya dalam notasi CIDR:
ip -o -f inet addr show | awk '/scope global/ {print $2, $4}'
Atau untuk membatasinya ke antarmuka default:
default_if=$(ip route list | awk '/^default/ {print $5}')
ip -o -f inet addr show $default_if | awk '{print $4}'
yang memberi saya "192.168.1.61/24" di komputer saya.