原文:
1. ip轉換為整數
> vi ip2num.sh
#!/bin/bash
# 所有用到的命令全是bash內建命令
ip_addr=$1
[[ "$ip_addr" =~ "^[0-9]\.[0-9]\.[0-9]\.[0-9]$" ]] ||
ip_list=$;
read -a ip_array <<<$; # 把點分十進位制位址拆成陣列(read的-a選項表示把輸入讀入到陣列, 下標從0開始)
echo $(( $<<24 | $<<16 | $<<8 | $ )); # bash的$(()) 支援位運算
hex_string=$(printf "0x%02x%02x%02x%02x\n" $ $ $ $); # 這裡演示另外一種不使用位運算的方法
printf "%d\n" $;
# 參考自:
# 可以使用mysql的select inet_aton('$'); 來驗證結果是否正確。
2. 整數轉換為ip
> vi num2ip.sh
#!/bin/bash
n=$1
h1=$(($n & 0x000000ff))
h2=$((($n & 0x0000ff00) >> 8))
l1=$((($n & 0x00ff0000) >> 16))
l2=$((($n & 0xff000000) >> 24))
echo $l2.$l1.$h2.$h1
或者#!/bin/bash
n=$1
declare -i h1="$n & 0x000000ff"
declare -i h2="($n & 0x0000ff00) >> 8"
declare -i l1="($n & 0x00ff0000) >> 16"
declare -i l2="($n & 0xff000000) >> 24"
echo "$l2.$l1.$h2.$h1"
# the variable is treated as an integer; arithmetic evaluation (see arithmetic evaluation ) is performed when the variable is assigned a value.
# 參考自:
3. 把掩碼長度轉換成掩碼
# 可以根據2修改下, 255.255.255.255的整型值是4294967295
#!/bin/bash
declare -i full_mask_int=4294967295
declare -i mask_len=$1
declare -i left_move="32 - $"
declare -i n="$ << $"
declare -i h1="$n & 0x000000ff"
declare -i h2="($n & 0x0000ff00) >> 8"
declare -i l1="($n & 0x00ff0000) >> 16"
declare -i l2="($n & 0xff000000) >> 24"
echo "$l2.$l1.$h2.$h1"
彙總下幾個IP計算 轉換的shell小指令碼
1.ip轉換為整數 vi ip2num.sh bin bash 所有用到的命令全是bash內建命令 ip addr 1 ip addr 0 9 0 9 0 9 0 9 ip list read a ip array 把點分十進位制位址拆成陣列 read的 a選項表示把輸入讀入到陣列,下標從0開始 e...
linux下的幾個小技巧
在linux下啟用彩色文字 操作過程 很簡單 我用的是red hat 企四版的,這個rpm包在第二張安裝光碟裡,是vim enhanced 6.3.035 3.i386.rpm 1.放入第二張安裝盤 2.mount dev cdrom 3.rpm ivh media cdrom redhat rpm...
source insight下幾個實用的小工具
1 sourcemonitor使用 c語言度量值 c metrics 舉例1 函式為 舉例2 函式為 這個工具可以對c語言進行規則對齊。3 sourceinsight scan sourceinsight scan 是一款整合在 sourceinsight 中的c c 靜態分析外掛程式,整合了cpp...