使用 Linux Shell 編寫篩選無 CDP 鄰居的 Cisco 交換機埠
需求
如下是思科交換機所有 UP 的物理埠
GigabitEthernet3/1
GigabitEthernet3/2
GigabitEthernet3/4
GigabitEthernet3/6
GigabitEthernet3/7
GigabitEthernet3/8
GigabitEthernet3/9
GigabitEthernet3/10
GigabitEthernet3/11
GigabitEthernet3/12
GigabitEthernet3/13
GigabitEthernet3/14
GigabitEthernet3/15
GigabitEthernet3/16
GigabitEthernet3/17
GigabitEthernet3/18
GigabitEthernet3/19
GigabitEthernet3/20
GigabitEthernet3/21
GigabitEthernet3/22
GigabitEthernet3/23
GigabitEthernet7/8
GigabitEthernet7/9
GigabitEthernet7/10
GigabitEthernet7/11
GigabitEthernet7/12
GigabitEthernet7/14
GigabitEthernet7/15
GigabitEthernet7/16
GigabitEthernet7/27
GigabitEthernet7/31
GigabitEthernet7/33
GigabitEthernet7/34
GigabitEthernet7/35
GigabitEthernet7/36
GigabitEthernet7/38
GigabitEthernet7/39
GigabitEthernet7/40
GigabitEthernet7/41
GigabitEthernet7/42
GigabitEthernet7/43
GigabitEthernet7/44
GigabitEthernet7/45
GigabitEthernet7/46
GigabitEthernet7/47
GigabitEthernet7/48
GigabitEthernet8/1
GigabitEthernet8/2
GigabitEthernet8/4
GigabitEthernet8/6
GigabitEthernet8/8
GigabitEthernet8/12
GigabitEthernet8/13
GigabitEthernet8/16
GigabitEthernet8/44
GigabitEthernet8/45
GigabitEthernet8/48
GigabitEthernet9/4
GigabitEthernet9/10
GigabitEthernet9/12
GigabitEthernet9/14
GigabitEthernet9/15
GigabitEthernet9/18
GigabitEthernet9/23
GigabitEthernet9/24
GigabitEthernet9/29
GigabitEthernet9/30
GigabitEthernet9/31
GigabitEthernet9/32
GigabitEthernet9/35
GigabitEthernet9/36
GigabitEthernet9/45
GigabitEthernet9/47
GigabitEthernet9/48
如下是具備 CDP 鄰居的物理埠(部分資訊已經脫敏)
要求使用 Shell 指令碼,將具有 CDP 鄰居的物理埠從已經 UP 的物理埠中刪除,即保留沒有 CDP 鄰居且狀態為 UP 的埠。
#!/bin/bash declare -a cdpIntArray i=0 cut -c18-26 cdp.txt | cut -d " " -f 2 | grep -v "^[^0-9]" | grep -v '^$' > intlist.txt while read line do cdpIntArray[$i]=$line i=$(($i+1)) done < intlist.txt echo ${#cdpIntArray[@]} for ((i=0;i<${#cdpIntArray[@]};i++)) do moduleNum="`echo ${cdpIntArray[$i]} | cut -d "/" -f 1`" intNum="`echo ${cdpIntArray[$i]} | cut -d "/" -f 2`" echo $moduleNum/$intNum sed -i "/${moduleNum}\/${intNum}[^0-9]/ d" int.log done