Script is created by Johan ven Boomgaard.
#!/bin/bash # Set-cisco-port.sh # ============== # |Author: JvdB| # ============== # # Find,disable,enable port using SNMP at Cisco switch# # # Usage: cd <directory> ./Set-cisco-port.sh <switch ip-address> <description> <action> # Example: cd <directory> ./Set-cisco-port.sh 192.168.2.250 Test-pc e # # Where: # - 1st parameter is switch IP address # - 2nd is Description of NIC/Device # - 3rd is operation(e - enable port when find description at port, d -disable port when find description at port) # # ======================================= # Start script with setting the variables # ======================================= # switch_ip=$1; desc=$(echo $2 | sed 's/://g'); community="private"; operation=$3; # 2970_get_port(){ # Check for description at port for i in `snmpwalk -On -v2c -c $community@1 192.168.2.250 .1.3.6.1.4.1.9.9.46.1.3.1.1.2 | sed 's/.1.3.6.1.4.1.9.9.46.1.3.1.1.2.1.//g' | awk '{print $1}'`; do find_mac=`snmpwalk -On -v2c -c $community@$i 192.168.2.250 .1.3.6.1.2.1.17.4.3.1.1 | sed s/' '//g | grep -i $desc | sed 's/^.*Hex-STRING\://g'| awk '{print $1}'`; if [[ $find_mac != "" ]]; then point1=$(snmpwalk -On -v2c -c $community@$i $switch_ip .1.3.6.1.2.1.17.4.3.1.1 | sed s/' '//g | grep -i $desc | sed 's/.1.3.6.1.2.1.17.4.3.1.1.//g' | sed 's/=.*//g' ); port_numb=`snmpwalk -v2c -c $community@$i $switch_ip .1.3.6.1.2.1.17.4.3.1.2 | grep -i $point1 | sed 's/^.*INTEGER\: //g'`; echo "Description $desc was found at port number #"$port_numb; fi done; } disable_port(){ echo "Going to disable port by Description"; # Find by port description port_to_disable=`snmpwalk -v2c -On -c $community $switch_ip .1.3.6.1.2.1.31.1.1.1.18 | grep -i $desc | sed 's/.1.3.6.1.2.1.31.1.1.1.18.//g' | awk '{print $1}'`; # If port was not found if [[ $port_to_disable == "" ]]; then echo "Port wasn't found by port description. Exiting ..."; 2970_get_port; $port_to_disable=$port_numb; echo $ $port_to_disable; exit; fi; # Disable port snmpset -v2c -c $community $switch_ip .1.3.6.1.2.1.2.2.1.7.$port_to_disable i 2; # Save running config of Cisco switch to startup save_2970_cfg; } enable_port(){ echo "Going to enable port by Description"; # Find by port description port_to_enable=`snmpwalk -v2c -On -c $community $switch_ip .1.3.6.1.2.1.31.1.1.1.18 | grep -i $desc | sed 's/.1.3.6.1.2.1.31.1.1.1.18.//g' | awk '{print $1}'`; # If port was not found if [[ $port_to_enable == "" ]]; then echo "Port wasn't found by port description. Exiting ..."; 2970_get_port; $port_to_enable=$port_numb; echo $ $port_to_enable; exit; fi; # Enable port snmpset -v2c -c $community $switch_ip .1.3.6.1.2.1.2.2.1.7.$port_to_enable i 1; # Save running config of Cisco switch to startup save_2970_cfg; } save_2970_cfg(){ echo "Saving Cisco 2970 switch configuration"; snmpset -t60 -v2c -c $community $switch_ip 1.3.6.1.4.1.9.2.1.54.0 i 1 } main(){ if [[ $operation == "f" ]]; then echo "Find port operation"; 2970_get_port; elif [[ $operation == "d" ]]; then echo "Disable port operation"; disable_port; elif [[ $operation == "e" ]]; then echo "Enable port operation"; enable_port; else echo "Wrong arguments given"; fi; } main;