コマンド出力を編集するためのシェルスクリプト(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); }'