ここのコードが Linux で機能することを明確にする必要があります (コメントに注意し、他の Unice について投稿してください)。 OP は Linux のソリューションを求めましたが、質問を一般的に「ネットマスクを取得する方法」に変更し、より多くの Unix フレーバーに最適な方法を組み合わせて回答することをお勧めします。
#!/bin/sh
ifconfig "$1" | sed -rn '2s/ .*:(.*)$/\1/p'
<ブロック引用> ./script eth0
Linux の ifconfig について
netstat、arp、rarp、route などの他の従来のネットワーク コマンドと同様に、ifconfig は net-tools の一部です。 パッケージ。 Net-tools は非常に長い間積極的に開発されておらず、新しい iproute2 を優先して非推奨にする取り組みが行われています パッケージ。簡潔にするために、この基本的な移行について詳しく知りたい場合は、関連するリンクを次に示します。
事例:Debian Linux
事例:Arch Linux
net-tools ifconfig のマニュアル ページ (バグ セクションを参照)
ユーザーの視点から見たフレームワークの分析と比較
/sbin/ifconfig eth0 | awk '/Mask:/{ print $4;} '
?
本当にマスクだけ欲しいのかしら。おそらく、ネットワーク (または IP) をマスク付きで、構成ファイルで使用するために nmap
を使用する必要があるかもしれません。 、または何でも。
その場合、Linux では ip ...
の出力を解析することもできます。 指図。
アドレスとマスクを含むすべてのインターフェイスを CIDR 表記で一覧表示するには:
ip -o -f inet addr show | awk '/scope global/ {print $2, $4}'
または、デフォルトのインターフェースに制限するには:
default_if=$(ip route list | awk '/^default/ {print $5}')
ip -o -f inet addr show $default_if | awk '{print $4}'
私のマシンでは "192.168.1.61/24" になります。