根据IP地址换算出broadcast(广播地址)的shell脚本

发布时间:2020-10-11编辑:脚本学堂
本文介绍下,根据IP地址换算出广播地址的一个shell脚本,对于研究网络地址转换与shell脚本,都是不错的。建议朋友们参考下。

脚本内容如下:
 

复制代码 代码示例:

#!/bin/bash

# 將參數值裡的非數字全部換成空白鑑
# edit www.jb200.com

all=(${@//[!0-9]/ })

# 要是處理過的參數量不是 8 個的話... 送出錯誤信息,告知命令可接受的參數格式。並退出。
[ "${#all[@]}" != "8" ] && {
        echo "Usage: "
        echo "${0##*/} ip.ip.ip.ip/mask.mask.mask.mask"
        exit 1
}

# 定義一個 get_add 的 function
get_addr () {

# 要是讀進的第一個 function 參數為 -b ,則設定 op, op1, 與 arg 的變量,以供後面的 $(( $1 $op ($5 $op1 $arg) )) 計算用。
        if [ "$1" = "-b" ]; then
# 其結則為 $(( $1 | ($5 ^ 255) )),也就是逐個算出 broadcast address 。
                op='|'; op1='^'; arg='255'
# 然後用 shift 拿掉這個 -b 。
                shift

# 若沒有 -b 參數,則只定義 op 變量。然則,$(( $1 $op ($5 $op1 $arg) )) 的實際算式就變成 $(( $1 & $5)),這會逐個算出 network address 。
        else
                op='&'
        fi

# 取消變量 address ,以免影嚮其後於 while loop 的咚恪