Files
claudio 368d6fafea Issue
Code backup
2026-05-10 16:59:01 +02:00

509 lines
17 KiB
Bash

#!/bin/bash
# - VAR
# - Bash info
APPNAME=$(basename $0)
NAME="Check TplinkAp"
AUTHOR="Kalarumeth"
VERSION="v0.1"
URL="https://github.com/Kalarumeth"
# - Default settings for connection
COMMUNITY="public"
HOST_NAME="localhost"
SNMPVERSION="2c"
# - State Variables
STATE_OK=0
STATE_WARN=1
STATE_CRIT=2
STATE_UNK=3
STATE=$STATE_OK
# - OID
TpLink.OIDS() {
OID_nameIF="1.3.6.1.2.1.2.2.1.2"
OID_typeIF="1.3.6.1.2.1.2.2.1.3"
OID_statusIF="1.3.6.1.2.1.2.2.1.8"
OID_clientCon="1.3.6.1.4.1.11863.10.1.1.1"
OID_arrayMac="1.3.6.1.4.1.11863.10.1.1.2.1.2"
}
# - MAIN CODE
Script.HostAlive() {
for server in $HOST_NAME; do
ping -c1 -W1 -q $server &>/dev/null
if [[ $? != 0 ]] ; then
printf "%s\n" "$server is unreachable"
exit $STATE_UNK
fi
done
}
Script.SNMP() {
snmpwalk -v $SNMPVERSION -r 1 -t 10 -Oe -c $COMMUNITY $HOST_NAME $1
}
Script.SNMP.Hex() {
snmpwalk -v $SNMPVERSION -r 1 -t 10 -Oa -c $COMMUNITY $HOST_NAME $1
}
# - TpLink AP Health Check
TpLink.Main() {
Script.HostAlive
case $1 in
client)
TpLink.ClientConnected
exit $STATE ;;
if)
TpLink.IF
exit $STATE ;;
*)
echo "Unknown check!"
Help.IPMI
exit $STATE_UNK ;;
esac
}
TpLink.GetData() {
TpLink.OIDS
case $1 in
interface)
nameIF=($(Script.SNMP $OID_nameIF | cut -d '"' -f 2 | sed "s/$//g"))
statusIF=($(Script.SNMP $OID_statusIF | cut -d ' ' -f 4 | sed "s/$//g"))
typeIF=($(Script.SNMP $OID_typeIF | cut -d ' ' -f 4 | sed "s/$//g")) ;;
client)
clientCon=$(Script.SNMP $OID_clientCon | cut -d ' ' -f 4 | sed "s/$//g")
raw_arrayMac=$(Script.SNMP.Hex $OID_arrayMac | cut -d '"' -f 2 | cut -d '.' -f 1 | sed "s/-/:/g")
readarray -t addressMac <<< $raw_arrayMac ;;
esac
}
TpLink.IF() {
TpLink.GetData interface
TpLink.IF.Header
for((i=0; i<${#nameIF[@]}; i++))
do
TpLink.IF.operStatus
printf "%s\t" "${nameIF[$i]}"
TpLink.IF.IANAifType
done
}
TpLink.IF.Header() {
WarningCounter=0
CriticalCounter=0
for((i=0; i<${#name[@]}; i++)); do
if [[ ${name[$i]} == *"wifi"* ]] ; then
for value in "${statusIF[$i]}"; do
if [[ $value != 1 ]] && [[ $value != 2 ]]; then
WarningCounter=$(( WarningCounter + 1 ))
elif [[ $value == 2 ]]; then
CriticalCounter=$(( CriticalCounter + 1 ))
fi
done
elif [[ ${name[$i]} == *"eth"* ]] ; then
for value in "${statusIF[$i]}"; do
if [[ $value != 1 ]] && [[ $value != 2 ]]; then
WarningCounter=$(( WarningCounter + 1 ))
elif [[ $value == 2 ]]; then
CriticalCounter=$(( CriticalCounter + 1 ))
fi
done
fi
done
for Error in "$(( WarningCounter + CriticalCounter ))"; do
if [[ $WarningCounter == 0 ]] && [[ $CriticalCounter == 0 ]] ; then
printf "%s\t%s\n\n" "OK!" "All interFace is Up"
elif [[ $WarningCounter != 0 ]] && [[ $CriticalCounter == 0 ]] ; then
printf "%s\t%s\n\n" "WARNING!" "$Error interFace with problem"
elif [[ $CriticalCounter != 0 ]] ; then
printf "%s\t%s\n\n" "CRITICAL!" "$Error interFace with problem"
fi
done
printf "%s\t%s\t%s\n" "STATUS" "NAME" "TYPE" "=============================="
}
TpLink.IF.operStatus() {
case ${statusIF[$i]} in
1) printf "%s\t" "Up" ;;
2) printf "%s\t" "Down" ;;
3) printf "%s\t" "Testing" ;;
4) printf "%s\t" "Unknown" ;;
5) printf "%s\t" "Dormant" ;;
6) printf "%s\t" "notPresent" ;;
7) printf "%s\t" "lowerLayerDown" ;;
esac
}
TpLink.IF.IANAifType() {
case ${typeIF[$i]} in
1) printf "%s\n" "other" ;;
2) printf "%s\n" "regular1822" ;;
3) printf "%s\n" "hdh1822" ;;
4) printf "%s\n" "ddnX25" ;;
5) printf "%s\n" "rfc877x25" ;;
6) printf "%s\n" "ethernetCsmacd" ;;
7) printf "%s\n" "iso88023Csmacd" ;;
8) printf "%s\n" "iso88024TokenBus" ;;
9) printf "%s\n" "iso88025TokenRing" ;;
10) printf "%s\n" "iso88026Man" ;;
11) printf "%s\n" "starLan" ;;
12) printf "%s\n" "proteon10Mbit" ;;
13) printf "%s\n" "proteon80Mbit" ;;
14) printf "%s\n" "hyperchannel" ;;
15) printf "%s\n" "fddi" ;;
16) printf "%s\n" "lapb" ;;
17) printf "%s\n" "sdlc" ;;
18) printf "%s\n" "ds1" ;;
19) printf "%s\n" "e1" ;;
20) printf "%s\n" "basicISDN" ;;
21) printf "%s\n" "primaryISDN" ;;
22) printf "%s\n" "propPointToPointSerial" ;;
23) printf "%s\n" "ppp" ;;
24) printf "%s\n" "softwareLoopback" ;;
25) printf "%s\n" "eon" ;;
26) printf "%s\n" "ethernet3Mbit" ;;
27) printf "%s\n" "nsip" ;;
28) printf "%s\n" "slip" ;;
29) printf "%s\n" "ultra" ;;
30) printf "%s\n" "ds3" ;;
31) printf "%s\n" "sip" ;;
32) printf "%s\n" "frameRelay" ;;
33) printf "%s\n" "rs232" ;;
34) printf "%s\n" "para" ;;
35) printf "%s\n" "arcnet" ;;
36) printf "%s\n" "arcnetPlus" ;;
37) printf "%s\n" "atm" ;;
38) printf "%s\n" "miox25" ;;
39) printf "%s\n" "sonet" ;;
40) printf "%s\n" "x25ple" ;;
41) printf "%s\n" "iso88022llc" ;;
42) printf "%s\n" "localTalk" ;;
43) printf "%s\n" "smdsDxi" ;;
44) printf "%s\n" "frameRelayService" ;;
45) printf "%s\n" "v35" ;;
46) printf "%s\n" "hssi" ;;
47) printf "%s\n" "hippi" ;;
48) printf "%s\n" "modem" ;;
49) printf "%s\n" "aal5" ;;
50) printf "%s\n" "sonetPath" ;;
51) printf "%s\n" "sonetVT" ;;
52) printf "%s\n" "smdsIcip" ;;
53) printf "%s\n" "propVirtual" ;;
54) printf "%s\n" "propMultiplexor" ;;
55) printf "%s\n" "ieee80212" ;;
56) printf "%s\n" "fibreChannel" ;;
57) printf "%s\n" "hippiInterface" ;;
58) printf "%s\n" "frameRelayInterconnect" ;;
59) printf "%s\n" "aflane8023" ;;
60) printf "%s\n" "aflane8025" ;;
61) printf "%s\n" "cctEmul" ;;
62) printf "%s\n" "fastEther" ;;
63) printf "%s\n" "isdn" ;;
64) printf "%s\n" "v11" ;;
65) printf "%s\n" "v36" ;;
66) printf "%s\n" "g703at64k" ;;
67) printf "%s\n" "g703at2mb" ;;
68) printf "%s\n" "qllc" ;;
69) printf "%s\n" "fastEtherFX" ;;
70) printf "%s\n" "channel" ;;
71) printf "%s\n" "ieee80211" ;;
72) printf "%s\n" "ibm370parChan" ;;
73) printf "%s\n" "escon" ;;
74) printf "%s\n" "dlsw" ;;
75) printf "%s\n" "isdns" ;;
76) printf "%s\n" "isdnu" ;;
77) printf "%s\n" "lapd" ;;
78) printf "%s\n" "ipSwitch" ;;
79) printf "%s\n" "rsrb" ;;
80) printf "%s\n" "atmLogical" ;;
81) printf "%s\n" "ds0" ;;
82) printf "%s\n" "ds0Bundle" ;;
83) printf "%s\n" "bsc" ;;
84) printf "%s\n" "async" ;;
85) printf "%s\n" "cnr" ;;
86) printf "%s\n" "iso88025Dtr" ;;
87) printf "%s\n" "eplrs" ;;
88) printf "%s\n" "arap" ;;
89) printf "%s\n" "propCnls" ;;
90) printf "%s\n" "hostPad" ;;
91) printf "%s\n" "termPad" ;;
92) printf "%s\n" "frameRelayMPI" ;;
93) printf "%s\n" "x213" ;;
94) printf "%s\n" "adsl" ;;
95) printf "%s\n" "radsl" ;;
96) printf "%s\n" "sdsl" ;;
97) printf "%s\n" "vdsl" ;;
98) printf "%s\n" "iso88025CRFPInt" ;;
99) printf "%s\n" "myrinet" ;;
100) printf "%s\n" "voiceEM" ;;
101) printf "%s\n" "voiceFXO" ;;
102) printf "%s\n" "voiceFXS" ;;
103) printf "%s\n" "voiceEncap" ;;
104) printf "%s\n" "voiceOverIp" ;;
105) printf "%s\n" "atmDxi" ;;
106) printf "%s\n" "atmFuni" ;;
107) printf "%s\n" "atmIma" ;;
108) printf "%s\n" "pppMultilinkBundle" ;;
109) printf "%s\n" "ipOverCdlc" ;;
110) printf "%s\n" "ipOverClaw" ;;
111) printf "%s\n" "stackToStack" ;;
112) printf "%s\n" "virtualIpAddress" ;;
113) printf "%s\n" "mpc" ;;
114) printf "%s\n" "ipOverAtm" ;;
115) printf "%s\n" "iso88025Fiber" ;;
116) printf "%s\n" "tdlc" ;;
117) printf "%s\n" "gigabitEthernet" ;;
118) printf "%s\n" "hdlc" ;;
119) printf "%s\n" "lapf" ;;
120) printf "%s\n" "v37" ;;
121) printf "%s\n" "x25mlp" ;;
122) printf "%s\n" "x25huntGroup" ;;
123) printf "%s\n" "transpHdlc" ;;
124) printf "%s\n" "interleave" ;;
125) printf "%s\n" "fast" ;;
126) printf "%s\n" "ip" ;;
127) printf "%s\n" "docsCableMaclayer" ;;
128) printf "%s\n" "docsCableDownstream" ;;
129) printf "%s\n" "docsCableUpstream" ;;
130) printf "%s\n" "a12MppSwitch" ;;
131) printf "%s\n" "tunnel" ;;
132) printf "%s\n" "coffee" ;;
133) printf "%s\n" "ces" ;;
134) printf "%s\n" "atmSubInterface" ;;
135) printf "%s\n" "l2vlan" ;;
136) printf "%s\n" "l3ipvlan" ;;
137) printf "%s\n" "l3ipxvlan" ;;
138) printf "%s\n" "digitalPowerline" ;;
139) printf "%s\n" "mediaMailOverIp" ;;
140) printf "%s\n" "dtm" ;;
141) printf "%s\n" "dcn" ;;
142) printf "%s\n" "ipForward" ;;
143) printf "%s\n" "msdsl" ;;
144) printf "%s\n" "ieee1394" ;;
145) printf "%s\n" "if-gsn" ;;
146) printf "%s\n" "dvbRccMacLayer" ;;
147) printf "%s\n" "dvbRccDownstream" ;;
148) printf "%s\n" "dvbRccUpstream" ;;
149) printf "%s\n" "atmVirtual" ;;
150) printf "%s\n" "mplsTunnel" ;;
151) printf "%s\n" "srp" ;;
152) printf "%s\n" "voiceOverAtm" ;;
153) printf "%s\n" "voiceOverFrameRelay" ;;
154) printf "%s\n" "idsl" ;;
155) printf "%s\n" "compositeLink" ;;
156) printf "%s\n" "ss7SigLink" ;;
157) printf "%s\n" "propWirelessP2P" ;;
158) printf "%s\n" "frForward" ;;
159) printf "%s\n" "rfc1483" ;;
160) printf "%s\n" "usb" ;;
161) printf "%s\n" "ieee8023adLag" ;;
162) printf "%s\n" "bgppolicyaccounting" ;;
163) printf "%s\n" "frf16MfrBundle" ;;
164) printf "%s\n" "h323Gatekeeper" ;;
165) printf "%s\n" "h323Proxy" ;;
166) printf "%s\n" "mpls" ;;
167) printf "%s\n" "mfSigLink" ;;
168) printf "%s\n" "hdsl2" ;;
169) printf "%s\n" "shdsl" ;;
170) printf "%s\n" "ds1FDL" ;;
171) printf "%s\n" "pos" ;;
172) printf "%s\n" "dvbAsiIn" ;;
173) printf "%s\n" "dvbAsiOut" ;;
174) printf "%s\n" "plc" ;;
175) printf "%s\n" "nfas" ;;
176) printf "%s\n" "tr008" ;;
177) printf "%s\n" "gr303RDT" ;;
178) printf "%s\n" "gr303IDT" ;;
179) printf "%s\n" "isup" ;;
180) printf "%s\n" "propDocsWirelessMaclayer" ;;
181) printf "%s\n" "propDocsWirelessDownstream" ;;
182) printf "%s\n" "propDocsWirelessUpstream" ;;
183) printf "%s\n" "hiperlan2" ;;
184) printf "%s\n" "propBWAp2Mp" ;;
185) printf "%s\n" "sonetOverheadChannel" ;;
186) printf "%s\n" "digitalWrapperOverheadChannel" ;;
187) printf "%s\n" "aal2" ;;
188) printf "%s\n" "radioMAC" ;;
189) printf "%s\n" "atmRadio" ;;
190) printf "%s\n" "imt" ;;
191) printf "%s\n" "mvl" ;;
192) printf "%s\n" "reachDSL" ;;
193) printf "%s\n" "frDlciEndPt" ;;
194) printf "%s\n" "atmVciEndPt" ;;
195) printf "%s\n" "opticalChannel" ;;
196) printf "%s\n" "opticalTransport" ;;
197) printf "%s\n" "propAtm" ;;
198) printf "%s\n" "voiceOverCable" ;;
199) printf "%s\n" "infiniband" ;;
200) printf "%s\n" "teLink" ;;
201) printf "%s\n" "q2931" ;;
202) printf "%s\n" "virtualTg" ;;
203) printf "%s\n" "sipTg" ;;
204) printf "%s\n" "sipSig" ;;
205) printf "%s\n" "docsCableUpstreamChannel" ;;
206) printf "%s\n" "econet" ;;
207) printf "%s\n" "pon155" ;;
208) printf "%s\n" "pon622" ;;
209) printf "%s\n" "bridge" ;;
210) printf "%s\n" "linegroup" ;;
211) printf "%s\n" "voiceEMFGD" ;;
212) printf "%s\n" "voiceFGDEANA" ;;
213) printf "%s\n" "voiceDID" ;;
214) printf "%s\n" "mpegTransport" ;;
215) printf "%s\n" "sixToFour" ;;
216) printf "%s\n" "gtp" ;;
217) printf "%s\n" "pdnEtherLoop1" ;;
218) printf "%s\n" "pdnEtherLoop2" ;;
219) printf "%s\n" "opticalChannelGroup" ;;
220) printf "%s\n" "homepna" ;;
221) printf "%s\n" "gfp" ;;
222) printf "%s\n" "ciscoISLvlan" ;;
223) printf "%s\n" "actelisMetaLOOP" ;;
224) printf "%s\n" "fcipLink" ;;
225) printf "%s\n" "rpr" ;;
226) printf "%s\n" "qam" ;;
227) printf "%s\n" "lmp" ;;
228) printf "%s\n" "cblVectaStar" ;;
229) printf "%s\n" "docsCableMCmtsDownstream" ;;
230) printf "%s\n" "adsl2" ;;
231) printf "%s\n" "macSecControlledIF" ;;
232) printf "%s\n" "macSecUncontrolledIF" ;;
233) printf "%s\n" "aviciOpticalEther" ;;
234) printf "%s\n" "atmbond" ;;
235) printf "%s\n" "voiceFGDOS" ;;
236) printf "%s\n" "mocaVersion1" ;;
237) printf "%s\n" "ieee80216WMAN" ;;
238) printf "%s\n" "adsl2plus" ;;
239) printf "%s\n" "dvbRcsMacLayer" ;;
240) printf "%s\n" "dvbTdm" ;;
241) printf "%s\n" "dvbRcsTdma" ;;
242) printf "%s\n" "x86Laps" ;;
243) printf "%s\n" "wwanPP" ;;
244) printf "%s\n" "wwanPP2" ;;
245) printf "%s\n" "voiceEBS" ;;
246) printf "%s\n" "ifPwType" ;;
247) printf "%s\n" "ilan" ;;
248) printf "%s\n" "pip" ;;
249) printf "%s\n" "aluELP" ;;
250) printf "%s\n" "gpon" ;;
251) printf "%s\n" "vdsl2" ;;
252) printf "%s\n" "capwapDot11Profile" ;;
253) printf "%s\n" "capwapDot11Bss" ;;
254) printf "%s\n" "capwapWtpVirtualRadio" ;;
255) printf "%s\n" "bits" ;;
256) printf "%s\n" "docsCableUpstreamRfPort" ;;
257) printf "%s\n" "cableDownstreamRfPort" ;;
258) printf "%s\n" "vmwareVirtualNic" ;;
259) printf "%s\n" "ieee802154" ;;
260) printf "%s\n" "otnOdu" ;;
261) printf "%s\n" "otnOtu" ;;
262) printf "%s\n" "ifVfiType" ;;
263) printf "%s\n" "g9981" ;;
264) printf "%s\n" "g9982" ;;
265) printf "%s\n" "g9983" ;;
266) printf "%s\n" "aluEpon" ;;
267) printf "%s\n" "aluEponOnu" ;;
268) printf "%s\n" "aluEponPhysicalUni" ;;
269) printf "%s\n" "aluEponLogicalLink" ;;
270) printf "%s\n" "aluGponOnu" ;;
271) printf "%s\n" "aluGponPhysicalUni" ;;
272) printf "%s\n" "vmwareNicTeam" ;;
esac
}
TpLink.ClientConnected() {
TpLink.GetData client
printf "%s\n" "Conneceted clients: $clientCon"
if [[ $clientCon != 0 ]] ; then
printf "\n"
for((i=0; i<${#addressMac[@]}; i++)); do
printf "%s\n" "$((i+1)). ${addressMac[$i]}"
done
fi
}
# - Help
Help.Main() {
echo "Check AP Status"
echo ''
Help.Usage
echo ''
Help.Option
echo ''
Help.Info
echo ''
exit $STATE_UNK
}
Help.Usage() {
printf "%s\n" "Method to compose the execution string"
printf "%s\n" "./$APPNAME -c <SNMP community> -h <host>"
}
Help.Option() {
printf "%s\n" "OPTIONS:"
printf "%s\t%s\t%s\n\t\t\t%s\n" "-c" "--community" "SNMP v2 community string with Read access." " Default is $COMMUNITY."
printf "%s\t%s\t\t%s\n\t\t\t%s\n" "-h" "--host" "Host name or IP address to check." " Default is $HOST_NAME."
printf "%s\t%s\t\t%s\n" "-H" "--help" "Show script help"
printf "%s\t%s\t%s\n" "-V" "--version" "Show script version"
}
Help.IPMI() {
printf "\n%s\n\n" "TpLink AP EAP265HD Check Function"
printf "%s\t%s\n\n" "Check" "Description"
printf "%s\t%s\n" "all" "Full monitoring check with single output"
printf "%s\t%s\n" "cpu" "Monitoring CPU load"
printf "%s\t%s\n" "err" "Monitoring system error"
printf "%s\t%s\n" "fan" "Monitoring fan speed"
printf "%s\t%s\n" "ram" "Monitoring RAM load"
printf "%s\t%s\n" "hw" "Monitoring Hardware status"
printf "%s\t%s\n" "temp" "Monitoring temperature sensor"
}
Help.Info() {
printf "%s\t%s\t%s\n" "INFO:" "$NAME" "$VERSION" "" "$AUTHOR" "$URL"
}
# - COMMAND LINE ENCODER
while test -n "$1"; do
case "$1" in
--host | -h)
HOST_NAME=$2
shift ;;
--comunity | -c)
COMMUNITY=$2
shift ;;
--type | -t)
TpLink.Main $2
shift ;;
--help | -H)
Help.Main ;;
--version | -V)
Help.Info
exit $STATE ;;
*)
echo "Unknown argument: $1"
print_help
exit $STATE_UNK ;;
esac
shift
done
TpLink.Main