• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      AWK語言在網(wǎng)絡(luò)維護(hù)工作中的運(yùn)用

      2016-10-21 04:55:23董洪蒙
      科學(xué)與財(cái)富 2016年9期
      關(guān)鍵詞:網(wǎng)段網(wǎng)關(guān)交換機(jī)

      董洪蒙

      AWK是一種優(yōu)良的文本處理工具,自Linux出名,而后因其出色的性能,為Windows所支持。我們可以下載Cygwin來提供AWK支持。Cygwin是一個(gè)在windows平臺(tái)上運(yùn)行的類UNIX的模擬環(huán)境,它對(duì)于學(xué)習(xí)UNIX/Linux操作環(huán)境,或者從UNIX到Windows的應(yīng)用程序移植,或者進(jìn)行某些特殊的開發(fā)工作,非常有用。下載安裝完成后,應(yīng)在系統(tǒng)路徑PATH里加上“C:\cygwin”,以方便調(diào)用,打開CMD窗口,鍵入gawk可看到相關(guān)幫助信息。

      下面筆者以工作中實(shí)際遇到的例子,講述如何使用AWK大幅提高文本處理的速度,是怎樣使枯燥的重復(fù)勞動(dòng)變成一蹴而就、輕而易舉的:

      在交換機(jī)配置一個(gè)新vlan時(shí),一般是如下的格式:

      vlan 2

      name networkcenter

      interface VLAN 2

      ip address 192.168.2.1 255.255.255.0

      !

      ip dhcp pool pool_networkcenter

      network 192.168.2.0 255.255.255.0

      default-router 192.168.2.1

      dns-server 61.147.37.1

      !

      ip dhcp excluded-address 192.168.2.1 192.168.2.10

      !

      以上是一個(gè)網(wǎng)段在核心交換機(jī)開啟DHCP分配時(shí)的典型配置。試想如果有十幾個(gè)這樣的網(wǎng)段,復(fù)制粘貼還能應(yīng)付,如果有幾百個(gè),就讓人頭大了,而且還不能保證不出絲毫差錯(cuò)。我們可以看出每個(gè)網(wǎng)段的配置有重復(fù)性,為此可編寫如下序列文件vlan.txt:

      2 networkcenter 10

      3 xzl_db 20

      4 xzl_xb 20

      5 xzl_dn 20

      6 xzl_xn #

      7 jxl_a 30

      8 jxl_b 20

      9 jxl_c 20

      10 # 20

      11 syl_n 100

      12 syl_b 20

      13 shi_tang 20

      ……

      第1列表示vlan號(hào),第2列表示vlan name,第3列是從網(wǎng)關(guān)1一直排除到的地址范圍。此時(shí)我們可以編輯如下vlan.awk模板文件(純文本),以便自動(dòng)生成相關(guān)配置:

      #!/bin/awk -f

      BEGIN{

      # 指定第一行判斷如何分字段的字段分隔符(FS即field separator的英文縮寫)

      FS="[ \t:]+";

      }

      {

      # 循環(huán)判斷每一行(正則方式),如第1列是個(gè)數(shù)字,表示是vlan號(hào),讀取本行進(jìn)行生成

      if($1~/^[0-9]+$/){

      # 輸出vlan段

      # 判斷第2列是否為#(空),生成正確的vlan name

      if($2=="#") { name="no name"; }

      else { name=sprintf("name %s", $2); }

      printf("vlan %d\n\t%s\n\t?。躰", $1, name);

      # 輸出interface VLAN段

      printf("interface VLAN %d\n\tip address 192.168.%d.1 255.255.255.0\n\t!\n", $1, $1);

      # 輸出ip dhcp pool段

      printf("ip dhcp pool pool_%d\n\tnetwork 192.168.%d.0 255.255.255.0\n\tdefault-router 192.168.%d.1\n\tdns-server 61.147.37.1\n\t?。躰", $1, $1, $1);

      # 輸出ip dhcp excluded-address段

      if($3!="#") {

      # 如果第3列不為#(空),排除明文的要排除的IP

      printf("ip dhcp excluded-address 192.168.%d.1 192.168.%d.%d\n\t?。躰", $1, $1, $3);

      }

      else {

      # 否則排除網(wǎng)關(guān)IP

      printf("ip dhcp excluded-address 192.168.%d.1\n\t?。躰", $1);

      }

      # 每個(gè)網(wǎng)段生成后的空行

      printf("\n\n");

      }

      }

      上面所列的模板文件中,其中的注釋已部分闡述了AWK的運(yùn)作機(jī)理及語言特性,筆者僅就一些要點(diǎn)加歸納總結(jié):

      ·第一行#!/bin/awk –f作用類似于Linux下的腳本文件第一行的#!/bin/bash。

      ·與Linux腳本一樣,AWK以#作為注釋行。

      ·BEGIN段中FS設(shè)置為"[ \t:]+ ",即指定分隔符為若干個(gè)空格、TAB或:。

      ·printf函數(shù)類似于C語言中的相關(guān)函數(shù),%d、%s、%f等參數(shù)的形式與作用類同。

      ·AWK支持正則表達(dá)式,如“$1~/^[0-9]+$/”等,在有些情況下,利用它能極大地提高程序編寫的效率。

      ·BEGIN{}的下一段{}即程序主體,用于根據(jù)模板循環(huán)處理每一行,主體的后面可跟上END{}段,用于善后事宜。

      命令行敲入:gawk –f "vlan.awk" "vlan.txt" > "result.txt",即可將生成的結(jié)果存于reault.txt文本中。我們可以看到,即便有幾百上千個(gè)vlan,批量生成也很快,平時(shí)只需維護(hù)那張相關(guān)的序列表vlan.txt即可,必要時(shí)再重新生成一下。也可以將刪除配置的情況考慮在內(nèi),只需將vlan.awk模板文件稍加修改,即可生成諸如“no interface VLAN xxx,no ip dhcp pool xxx”等形式,這樣就實(shí)現(xiàn)了雙向維護(hù)。

      在實(shí)際工作中,所遇到的實(shí)際情況和需求要比上面的例子要復(fù)雜得多,如在模板內(nèi)復(fù)用函數(shù)、多重循環(huán)、網(wǎng)絡(luò)掩碼的計(jì)算等等,限于篇幅,筆者在這里不作贅述,感興趣的朋友可自行搜索相關(guān)文檔參考編寫,為自己的工作開辟高效之路?。?!

      猜你喜歡
      網(wǎng)段網(wǎng)關(guān)交換機(jī)
      基于改進(jìn)RPS技術(shù)的IPSEC VPN網(wǎng)關(guān)設(shè)計(jì)
      單位遭遇蠕蟲類病毒攻擊
      修復(fù)損壞的交換機(jī)NOS
      使用鏈路聚合進(jìn)行交換機(jī)互聯(lián)
      LTE Small Cell網(wǎng)關(guān)及虛擬網(wǎng)關(guān)技術(shù)研究
      Onvif雙網(wǎng)段開發(fā)在視頻監(jiān)控系統(tǒng)中的應(yīng)用
      應(yīng)對(duì)氣候變化需要打通“網(wǎng)關(guān)”
      太陽能(2015年7期)2015-04-12 06:49:50
      PoE交換機(jī)雷擊浪涌防護(hù)設(shè)計(jì)
      一種實(shí)時(shí)高效的伺服控制網(wǎng)關(guān)設(shè)計(jì)
      羅克韋爾自動(dòng)化交換機(jī)Allen-Bradley ArmorStratix 5700
      榕江县| 定南县| 日土县| 上思县| 合江县| 岚皋县| 肇东市| 壤塘县| 岚皋县| 乌鲁木齐县| 澄城县| 巴彦淖尔市| 九寨沟县| 定日县| 奈曼旗| 滕州市| 余庆县| 凤冈县| 额济纳旗| 前郭尔| 辉县市| 禄劝| 永仁县| 赤壁市| 蓬溪县| 苏尼特左旗| 金沙县| 绵竹市| 滨州市| 游戏| 乐业县| 公主岭市| 铜梁县| 六安市| 县级市| 年辖:市辖区| 杂多县| 吉林省| 塘沽区| 新津县| 哈尔滨市|