*세팅값 작성을 생활화 하자
Version : 모든 운영체제에서 문제 없이 동작
*단 bash, expect를 지원 해야합니.
주석이 처리된 부분은 제외하고 사용하셔도 됩니다.
*추가적으로 업데이트 및 수정 사항이 생길때마다 수정할 예정
*추가 여러분들의 댓글 의견도 바로 반영하겠습니다.
#!bin/bash
#!/usr/bin/expect
#description : Switch Auto Conneciton\
ip_list="192.168.6.15"
function dev_ping_ck(){ #해당 IP정보를 가지고 Ping 테스트 진행
for ip_info in ${1}; do
ip_total_cnt=`echo "${1}"| grep -Ev "^$" |wc -l | tr -d " "`
ping -c 2 ${ip_info} > /dev/null
if [ $? -eq 0 ]; then
ping_ok_num=`expr ${ping_ok_num} + 1`
echo "${ip_info} : OK" >> ping_test.tmp
else
echo "${ip_info} : FAILE" >> ping_test.tmp
fi
done
cat ping_test.tmp
echo ""
echo "======================================"
echo " Switch Ping Check Result "
cat ping_test.tmp
echo "Total Ping OK/FALE = (${ping_ok_num}/`expr ${ip_total_cnt} - ${ping_ok_num}`)"
echo "======================================"
echo ""
# rm -rf ping_test.tmp
}
function dev_port_err_ck(){ #해당 IP정보를 가지고 각 스위치 err-disabled 포트 체크
echo ""
echo "======================================"
echo " To Choese Check Option "
echo "1. Ping Test "OK" Status to Checking. "
echo "2. All Cechking. (NOT SUPPORT) "
echo -n "Menu Select : "
read sel_num
echo "======================================"
echo ""
case "${sel_num}" in
1 )
if [ -f ping_test.tmp ]; then
ok_list=`cat ping_test.tmp | grep "OK" | awk '{print $1}'`
else
echo ""
echo "======================================"
echo " You Have not [ping_test.tmp] File, "
echo " You First Device Ping Check Please. "
echo "======================================"
echo ""
dev_ping_ck
fi
for ip_info in ${ok_list}; do
for ip1_info in ${ip_info}; do
echo "telnet ${ip1_info}"
expect << EOF
spawn telnet ${ip1_info}
send "\r"
expect "*assword: " { send "uangelcisco\r" }
expect "*>" { send "en\r" }
expect "*assword: " { send "ciscouangel\r" }
expect "*#" { send "terminal length 0\r" }
expect "*#" { send "sh int status | include err-disabled \r" }
expect "*#" { send "exit\r" }
expect "*#" { send "exit\r" }
expect eof
EOF
done > dev_port_err_ck.tmp
echo ""
echo "======================================"
echo -n "${ip_info}"
grep connected dev_port_err_ck.tmp | awk '{print $1}'
echo "======================================"
echo ""
done
rm -rf dev_port_err_ck.tmp
;;
2 )
echo "NOT Support."
;;
* )
echo "NOT Support."
;;
esac
}
#MAC Address Drop Add Action Scripts.
function dev_drop_add(){ #해당 IP정보를 가지고 각 스위치 DROP 추가
echo ""
echo "================================================================================"
echo -n "Drop Add Mac-Address (xx-xx-xx-xx-xx-xx) or xxxx.xxxx.xxxx : "
read mac_input
echo "================================================================================"
echo ""
echo ""
echo "======================================"
for ip_info in ${1}; do
for ip1_info in ${ip_info}; do
# echo "telnet ${1}"
expect << EOF
spawn telnet ${ip1_info}
send "\r"
expect "*assword: " { send "uangelcisco\r" }
expect "*>" { send "en\r" }
expect "*assword: " { send "ciscouangel\r" }
expect "*#" { send "terminal length 0\r" }
expect "*#" { send "conf t\r" }
expect "*#" { send "mac address static ${mac_input} vlan 1 drop\r" }
expect "*#" { send "exit \r" }
expect "*#" { send "exit\r" }
expect eof
EOF
done > /dev/null
echo "${ip_info} Add Success."
done
echo "======================================"
echo ""
}
#MAC Address Drop Delete Action Scripts.
function dev_drop_delete(){ #해당 IP정보를 가지고 각 스위치 DROP 삭제
echo ""
echo "=============================================================================="
echo -n "Drop Delete Mac-Address (xx-xx-xx-xx-xx-xx) or xxxx.xxxx.xxxx : "
read mac_input
echo "=============================================================================="
echo ""
echo ""
echo "======================================"
for ip_info in ${1}; do
for ip1_info in ${ip_info}; do
expect << EOF
spawn telnet "${ip1_info}"
send "\r"
expect "*assword: " { send "uangelcisco\r" }
expect "*>" { send "en\r" }
expect "*assword: " { send "ciscouangel\r" }
expect "*#" { send "terminal length 0\r" }
expect "*#" { send "conf t\r" }
expect "*#" { send "no mac address static ${mac_input} vlan 1 drop\r" }
expect "*#" { send "exit\r" }
expect "*#" { send "exit\r" }
expect eof
EOF
done > /dev/null
echo "${ip_info} Delete Success."
done
echo "======================================"
echo ""
}
function dev_find(){ #해당 IP정보를 가지고 각 스위치 MAC 찾기
echo ""
echo "=============================================================================="
echo -n "Find Mac-Address (xx-xx-xx-xx-xx-xx) or xxxx.xxxx.xxxx : "
read mac_input
echo "=============================================================================="
echo ""
echo ""
echo "==================================================================="
for ip_info in ${1}; do
expect << EOF
spawn telnet "${1}"
send "\r"
expect "*assword: " { send "uangelcisco\r" }
expect "*>" { send "en\r" }
expect "*assword: " { send "ciscouangel\r" }
expect "*#" { send "terminal length 0\r" }
expect "*#" { send "sh mac add add ${mac_input}\r" }
expect "*#" { send "exit\r" }
expect "*#" { send "exit\r" }
EOF
done > find_mac.tmp
echo -n "${1} -> "
grep "${mac_input}" find_mac.tmp | grep -i "static\|dynamic"
echo "==================================================================="
echo ""
}
main(){
echo ""
echo "======================================"
echo "Network Switch Device Checking Version"
echo " Let's Check Switch Ping Status "
echo "======================================"
echo ""
for ip_info in ${ip_list}; do
ip_total_cnt=`echo "${ip_list}"| grep -Ev "^$" |wc -l | tr -d " "`
ping -c 2 ${ip_info} > /dev/null
if [ $? -eq 0 ]; then
ping_ok_num=`expr ${ping_ok_num} + 1`
echo "${ip_info} : OK" >> ping_test.tmp
else
echo "${ip_info} : FAILE" >> ping_test.tmp
fi
done
#ping_test.tmp file is using dev_port_ck.
echo ""
echo "======================================"
echo " Switch Ping Check Result "
cat ping_test.tmp
echo "Total Ping OK/FALE = (${ping_ok_num}/`expr ${ip_total_cnt} - ${ping_ok_num}`)"
echo "======================================"
echo ""
# rm -rf ping_test.tmp
while true
do
echo ""
echo "======================================"
echo "Status Check Menu"
echo "a. Device Ping Check"
echo "b. Device Port Desirable Check"
echo ""
echo "Drop Action"
echo "1. MAC Address Drop Add"
echo "2. MAC Address Drop Delete"
echo "Find Action"
echo "3. MAC Address Find"
echo -n "Menu Select : "
read sel_n
echo "======================================"
echo ""
case "${sel_n}" in
a )
dev_ping_ck ${ip_list}
;;
b )
dev_port_err_ck ${ip_list}
;;
1 )
dev_drop_add ${ip_list}
;;
2 )
dev_drop_delete ${ip_list}
;;
3 )
dev_find ${ip_list}
;;
* )
echo "Script STOP!!"
exit 0
;;
esac
done
}
main $*
'Script > Search Info 관련' 카테고리의 다른 글
Cisco Switch MAC(ver2) 정보 자동화 (0) | 2019.08.29 |
---|---|
Info - Ping Type Check (0) | 2019.07.29 |
Info - 서버 정보 읽어오는 스크립트 ver.2 (0) | 2019.07.29 |
Info - 패키지 설치 여부 체크하는 스크립트 (0) | 2019.06.06 |
Info - 서버 정보 읽어오는 스크립트 (수정19.06.18) (0) | 2019.06.05 |