Python : SAN 스위치 장애 체크 (Telnet)
이번에는 Python 에서 SAN 스위치 장애를 체크하는 스크립트를 만들어보았다. Perl 의 경우와 거의 같다.
Python 2.7.3 에서 테스트하였으며, pymssql 를 별도로 설치해야 한다.
# -*- coding: cp949 -*- # ------------------------------------------------------------------------------ # (1) SAN 스위치의 Telnet에 연결하여, switchstatusshow 명령의 결과에 따라서 # HEALTHY 가 아니면 장애로 간주하고 담당자에게 문자메시지를 보낸다. # # (2) 하루에 1번 작동한다. # # Python Version : 2.7.3 # # [필요한 패키지] # easy_install pymssql # # Normal Status ---------------------------------------------------------------- # SwitchState: HEALTHY # ------------------------------------------------------------------------------ import telnetlib import pymssql # ------------------------------------------------------------------------------ def send_sms(msg): sql = """ insert arreo_sms ( CMP_MSG_ID, CMP_USR_ID, WRT_DTTM, RCV_PHN_ID, CALLBACK, SND_DTTM, SND_MSG , SND_PHN_ID, RSRVD_ID ) values ('011' + CONVERT(varchar, GETDATE(), 12) + REPLACE(CONVERT(varchar, GETDATE(), 14), ':', '') + SUBSTRING(CONVERT(VARCHAR, RAND(), 109), 3, 2), '00000', CONVERT(varchar, GETDATE(), 112) + REPLACE(CONVERT(varchar, GETDATE(), 8), ':', ''), '%s', '01055555555', CONVERT(varchar, GETDATE(), 112) + REPLACE(CONVERT(varchar, GETDATE(), 8), ':', ''), '%s', 'ADMIN', 'ADMIN' ) """ % ("메시지받을사람의전화번호", msg) conn = pymssql.connect(host='서버주소', user='아이디', password='비밀번호', database='DB이름') cur = conn.cursor() cur.execute(sql) conn.commit() conn.close() # ------------------------------------------------------------------------------ devices = { "SAN_SW1" : "172.16.0.21", "SAN_SW2" : "172.16.0.22", "SAN_SW3" : "172.16.0.23", "SAN_SW4" : "172.16.0.24" } for device_key in devices.keys() : tn = telnetlib.Telnet(devices[device_key]) tn.read_until("login: ") tn.write("아이디\n") tn.read_until("Password: ") tn.write("비밀번호\n") tn.write("\n") tn.write("switchstatusshow\n") tn.write("exit\n") result = tn.read_all() for line in result.splitlines() : if "SwitchState:" in line : if "HEALTHY" in line : msg = device_key + " : Normal" print(msg) send_sms(msg) else : msg = device_key + " : Error" print(msg) send_sms(msg)
댓글
댓글 쓰기