彙總下幾個IP計算 轉換的shell小指令碼

2021-09-20 19:56:26 字數 1945 閱讀 7463

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.

# 參考自:

下面這個是對的

#!/bin/bash

for a in `cat ./20150427-num-ip.txt`

don=$a

l2=$((($n & 0x000000ff) ))

l1=$((($n & 0x0000ff00) >> 8))

h2=$((($n & 0x00ff0000) >> 16))

h1=$((($n & 0xff000000) >> 24))

echo $a " " $l2.$l1.$h2.$h1  >> ./20150427-ip.txt

done

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開...

socket結構和幾個IP位址轉換函式

通用的結構體 struct sockaddr s un b struct s un w unsigned long s addr s un in addr 某些函式呼叫時的引數必須是指向通用結構體的指標,到時乙個強制轉換即可 in addr t inet addr const char cp in ...

socket結構和幾個IP位址轉換函式

通用的結構體 struct sockaddr 程式設計時常用的 struct sockaddr in 其中struct in addr typedef struct in addr s un b struct s un w unsigned long s addr s un in addr 某些函式...