コマンド出力を編集するためのシェルスクリプト(Bash)

コマンド出力を編集するためのシェルスクリプト(Bash)

コマンド出力を編集するためのシェルスクリプト(Bash)

私の個人的なワイヤレスネットワークでIPアドレス範囲を決定するためのシェルスクリプトを作成しようとしています。このコマンドを実行するとき:

ifconfig

私は次のコアメッセージを受け取りました。

inet 192.168.1.228

broadcast 192.168.1.255

netmask 255.255.255.0

これで、範囲が192.168.1.0-255(または192.168.1.0/24)であることがわかります。私が作成したこのスクリプトを実行しようとしています。

#!/bin/bash

ifconfig | awk '/broadcast/ {print $6}'

これにより最大IP範囲が出力されます。

192.168.1.255

このスクリプトが次のように最大範囲を見つけるようにするにはどうすればよいですか?ただし、次のように書かれています。

192.168.1.0-255

または

192.168.1.0/24

どんな助けでも大変感謝します!

答え1

最も簡単な解決策はip addressとにかくifconfig何をすべきかを使うことです。

ifconfig出力からネットマスクを取得し、1ビット数を計算できます。

echo 255.255.255.0 |
    awk -F. '{print "obase=2;" $1 "*2^24+" $2 "*2^16+" $3 "*2^8+" $4}' |
    bc |
    awk '{ sub("10*$","1", $0); print length($0); }'

関連情報