Saya ingin mendapatkan netmask saya di Linux. Ini dihasilkan dengan ifconfig
tetapi saya ingin mengekstrak string.
linux
text-processing
ip
michelemarcon
sumber
sumber
ifconfig
baris netmask FreeBSD adalah :,inet 192.168.144.120 netmask 0xffffff00 broadcast 192.168.144.255
jadi sementara jawabannya dapat dengan mudah disesuaikan, mungkin tidak ada satu ukuran yang cocok untuk semua (menggunakan Bash / ifconfig saja) .Jawaban:
Saya harus mengklarifikasi bahwa kode di sini berfungsi untuk Linux, (perhatikan komentar dan pos tentang Unix lainnya). OP meminta solusi Linux, tetapi akan lebih baik untuk mengubah pertanyaan menjadi "cara mendapatkan netmask" secara umum, dan mintalah jawabannya menggabungkan cara terbaik untuk lebih banyak rasa Unix.
Tentang ifconfig di Linux
Bersamaan dengan perintah jaringan tradisional lainnya seperti netstat, arp, rarp dan route, ifconfig adalah bagian dari paket net-tools . Net-tools belum dikembangkan secara aktif dari waktu yang sangat lama dan ada upaya untuk mencabutnya dari paket iproute2 yang lebih baru . Demi singkatnya, jika Anda ingin detail lebih lanjut tentang transisi mendasar ini, berikut adalah beberapa tautan yang relevan:
Contoh kasus: Debian Linux
Contoh kasus: Arch Linux
Halaman manual untuk net-tools ifconfig (lihat bagian BUGS)
Analisis dan perbandingan kerangka kerja dari perspektif pengguna
sumber
?
sumber
/sbin/ifconfig eth0 | awk -F: '/Mask:/{print $4}'
/sbin/ifconfig eth0 | awk '/netmask/{print $4}'
Saya ingin tahu apakah Anda benar-benar hanya menginginkan topeng. Mungkin Anda benar-benar menginginkan jaringan (atau IP) dengan mask, untuk digunakan dalam file konfigurasi, dengan
nmap
, atau apa pun.Dalam hal itu, di Linux, Anda juga dapat mengurai output dari
ip ...
perintah.Untuk membuat daftar semua antarmuka dengan alamat dan penutupnya dalam notasi CIDR:
Atau untuk membatasi ke antarmuka default:
yang memberi saya "192.168.1.61/24" di komputer saya.
sumber
ip -o -f inet addr show scope global
danip route list default
.jika Anda menggunakan OS yang menampilkan mask dalam hex, Anda dapat melakukan sesuatu seperti:
sumber
sumber
awk
yang bukan kasus nyata dalam kehidupan nyataifconfig
. Saya akan menyarankan beberapa perubahan meskipun:ifconfig eth0 | grep -o 'Mask:[^\s]*' | cut -d':' -f2
. The-o
sehinggagrep
hanya kembali bagian dari garis daripada seluruh banyak (lebih efisien). Cocokkan karakter non-spasi putih ([^\s]*
) untuk menemukan akhir token netmask. Kutipan tunggal di sekitar pembatas lapangan untuk keselamatan./sbin/ifconfig | grep ask | sed -e 's/.*netmask //g' | sed -e 's/ .*//g'
menampilkan topeng dalam hex.Jika Anda mencari netmask untuk perangkat jaringan default, perintah ini mengembalikan perangkat default karena perangkat default mungkin bukan eth0
Dan perintah ini mengambil topeng:
Terima kasih kepada Eliah Kagan dan Paulo Tome yang membantu saya menyederhanakan dan mengklarifikasi jawabannya. Pada mesin pribadi saya, perangkat ethernet default adalah "wlx504654c1a91" yang terlalu rumit untuk diingat dan diketik secara akurat, karenanya proses dua langkah.
sumber
grep 'pattern' | awk '{ action }'
biasanya dapat direduksi menjadiawk '/pattern/ { action }'