亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標題: 12及13樓方案結(jié)貼。。。如何把點分十進制的掩碼轉(zhuǎn)化為 縮寫形式 [打印本頁]

作者: skylove    時間: 2010-10-19 14:36
標題: 12及13樓方案結(jié)貼。。。如何把點分十進制的掩碼轉(zhuǎn)化為 縮寫形式
本帖最后由 skylove 于 2010-10-20 12:16 編輯

如題,把類似 /255.255.255.0 轉(zhuǎn)化為 /24  ;/255.255.240.0 轉(zhuǎn)化為 /20  ?

我目前用的笨辦法 。。。vi 里用
  1. :%s/\/255.255.255.0/\/24/g
復(fù)制代碼
這樣的方式來操作的,缺點就是要執(zhí)行多次,而且還是非自動化的;

當(dāng)前想到的方案是

用case語句將 255=8,254=7,252=6 , 248=5,240=4。。128=1 這樣對應(yīng)起來,將 255.255.240.0 變成類似  8.8.4.0  再轉(zhuǎn)為 8+8+4+0 到 bc里去得到答案。。。

想請問有更好的解決方案么?
作者: expert1    時間: 2010-10-19 14:42
回復(fù) 1# skylove


   你ID那么老,應(yīng)該知道ipcalc這個吧?
作者: zgsboy    時間: 2010-10-19 14:43
/24 /20的原理是什么

你把地址轉(zhuǎn)換成二進制,然后再數(shù)后面0的個數(shù)就可以了吧,
作者: skylove    時間: 2010-10-19 14:51
回復(fù)  skylove


   你ID那么老,應(yīng)該知道ipcalc這個吧?
expert1 發(fā)表于 2010-10-19 14:42


慚愧,確實不知道。。。孤陋寡聞了。。。

測試了一下,能滿足偶需求

ipcalc -p  ip地址 255.254.0.0

這樣即可

多謝了
作者: expert1    時間: 2010-10-19 14:53
數(shù)制轉(zhuǎn)換,COPY記號一下

$echo "obase=16;255"|bc
FF
$echo "obase=2;255"|bc
11111111
$echo "obase=2;ibase=16;FF"|bc
11111111
$echo "obase=16;ibase=10;255"|bc
FF

echo $((2#101))
5

echo $((16#a))
10
作者: skylove    時間: 2010-10-19 15:00
數(shù)制轉(zhuǎn)換,COPY記號一下

$echo "obase=16;255"|bc
FF
$echo "obase=2;255"|bc
11111111
$echo "obas ...
expert1 發(fā)表于 2010-10-19 14:53



這個方式我一開始考慮過,畢竟是正統(tǒng)的算法,后來覺得相對于ip轉(zhuǎn)寫這個特定需求而言。。。效率太低而且繁復(fù)所以放棄了
作者: expert1    時間: 2010-10-19 15:04
回復(fù) 6# skylove


    關(guān)于IP計算的還是ipcalc來的方便,實在是IT民工居家旅行必備。

寫自己造輪子搞不好是個歪輪子
作者: skylove    時間: 2010-10-19 15:07
回復(fù)  skylove


    關(guān)于IP計算的還是ipcalc來的方便,實在是IT民工居家旅行必備。

寫自己造輪子搞 ...
expert1 發(fā)表于 2010-10-19 15:04



    慚愧,以前一直都是只有幾十條,而且地址蠻規(guī)范的,幾下用vi就替換完畢了。。。一直也沒起心去找找好工具。。。 這次一次對付600多條,才來補課。。。多謝兄弟了~~~
作者: lictans    時間: 2010-10-19 15:36
剛才造了個輪子,然后計算了一個IP和MARK的按位與,杯具的效率啊……
作者: iamkey9    時間: 2010-10-19 16:40
一點思路,查表法,如果系統(tǒng)不能安裝ipcalc的話,自己寫一個腳本全局替換也沒多少時間,畢竟 mask 全表只有 /0 - /32
0.0.0.0 /0
......
255.255.255.255 /32

給一個netmask input , 輸出一個 對應(yīng) CIDR output
作者: skylove    時間: 2010-10-20 11:52
又遭遇問題了。。。ipcalc 不支持直接批量輸入,重定向和管道也不ok,所以用了個依次按行讀的方式來操作。。。
  1. awk getline ip文件 | while read line ;
  2. do
  3. awk '{printf $1"/"}';
  4. ipcalc -p $line | cut -c8-;
  5. done
復(fù)制代碼
預(yù)期是讀取每行的時候都執(zhí)行
awk '{printf $1"/"}';
ipcalc -p $line | cut -c8-;

這兩句,前者取出ip部分,后后者配上掩碼。。。結(jié)果運行出來的結(jié)果卻仿佛只有第一句每次執(zhí)行了,第二句是在最后一次讀行才執(zhí)行一次。。。

源文件

202.127.0.0 255.255.192.0
202.127.128.0 255.255.128.0

執(zhí)行結(jié)果

202.127.0.0/202.127.128.0/25

無法達到

202.127.0.0/26202.127.128.0/25

這樣的效果(先沒考慮換行問題)
作者: skylove    時間: 2010-10-20 12:13
又換了種方式。。。
  1. awk '{cmd="ipcalc -p "$0"| cut -c8- ";printf $1"\/";system( cmd )}' ip文件名
復(fù)制代碼
這樣終于搞定了,呵呵呵
作者: ywlscpl    時間: 2010-10-20 12:13
while read v1 v2
do
  ipcalc -p $v1 $v2 | awk -F= -v v=$v1 '{print v"/"$2}'
done < file
作者: skylove    時間: 2010-10-20 12:15
while read v1 v2
do
  ipcalc -p $v1 $v2 | awk -F= -v v=$v1 '{print v"/"$2}'
done < file
ywlscpl 發(fā)表于 2010-10-20 12:13



    謝謝 ywlscpl 兄~~~ 感謝,又更加深刻地學(xué)習(xí)了。。。。




歡迎光臨 Chinaunix (http://72891.cn/) Powered by Discuz! X3.2