271 lines
9.4 KiB
Bash
Executable File
271 lines
9.4 KiB
Bash
Executable File
#!/bin/bash
|
|
# ABOUT softether vpn for zabbix
|
|
# author mikedmorto 2020 year
|
|
export LC_ALL=""
|
|
export LANG="en_US.UTF-8"
|
|
version="3.2"
|
|
|
|
. sevpn3.cfg
|
|
|
|
JSON=""
|
|
##### PARAMETERS#####
|
|
METRIC="$1"
|
|
ITEM="$2"
|
|
|
|
case "$METRIC" in
|
|
discovery)
|
|
HUBS=`$VCMD /server ${URL} /PASSWORD:${PWD} /CMD Hublist | grep "Virtual Hub Name" | awk -F"|" '{print $2}'`
|
|
JSON="{ \"data\":["
|
|
HUBUSERS=""
|
|
HUBBRIDGES=""
|
|
HUBCASCADES=""
|
|
|
|
#add all users from hub into habuser list
|
|
for HUB_NAME in ${HUBS}; do
|
|
USERS=`$VCMD /server ${URL} /adminhub:$HUB_NAME /PASSWORD:${PWD} /CMD UserList | grep "User Name" | awk -F"|" '{print $2}'`
|
|
for U in ${USERS}; do
|
|
HUBUSERS=${HUBUSERS}${HUB_NAME}","${U}" "
|
|
done
|
|
done
|
|
|
|
#add all bridges from hub into hubbridge list
|
|
for HUB_NAME in ${HUBS}; do
|
|
BRIDGES=`$VCMD /server ${URL} /PASSWORD:${PWD} /CMD BridgeList | tr -d ' ' | awk '-F|' -v VH="${HUB_NAME}" '{if ($2==VH) print $3}'`
|
|
for B in ${BRIDGES}; do
|
|
HUBBRIDGES=${HUBBRIDGES}${HUB_NAME}","${B}" "
|
|
done
|
|
done
|
|
#add all cascades from hub into hubcascade list
|
|
for HUB_NAME in ${HUBS}; do
|
|
CAS=`$VCMD /server ${URL} /adminhub:$HUB_NAME /PASSWORD:${PWD} /CMD CascadeList | grep "Setting Name" | awk -F"|" '{print $2}'`
|
|
for C in ${CAS}; do
|
|
HUBCASCADES=${HUBCASCADES}${HUB_NAME}","${C}" "
|
|
done
|
|
done
|
|
|
|
#show all hubs
|
|
for HUB_NAME in ${HUBS}; do
|
|
JSON=${JSON}" {\"{#HUB_NAME}\":\"${HUB_NAME}\"},"
|
|
done
|
|
#show all hubusers
|
|
for HUBUSER_NAME in ${HUBUSERS}; do
|
|
JSON=${JSON}" {\"{#HUB_USER_NAME}\":\"${HUBUSER_NAME}\"},"
|
|
done
|
|
#show all hubbridges
|
|
for HUBBRIDGE_NAME in ${HUBBRIDGES}; do
|
|
JSON=${JSON}" {\"{#HUB_BRIDGE_NAME}\":\"${HUBBRIDGE_NAME}\"},"
|
|
done
|
|
#show all hubcascades
|
|
for HUBCASCADE_NAME in ${HUBCASCADES}; do
|
|
JSON=${JSON}" {\"{#HUB_CASCADE_NAME}\":\"${HUBCASCADE_NAME}\"},"
|
|
done
|
|
|
|
# delete last simbol and add the end
|
|
JSON=${JSON::-1}
|
|
JSON=${JSON}"]}"
|
|
echo ${JSON}
|
|
exit 0
|
|
;;
|
|
|
|
srv.uptime)
|
|
start_date=`$VCMD /SERVER ${URL} /PASSWORD:${PWD} /CMD ServerStatusGet | grep "Server Started at" | awk -F"|" '{print $2}'`
|
|
start_date_timestamp=`date -d "$start_date" +%s`
|
|
current_date_timestamp=`date +%s`
|
|
uptime_timestamp=$[$current_date_timestamp - $start_date_timestamp]
|
|
echo "$uptime_timestamp"
|
|
;;
|
|
srv.number_of_users)
|
|
echo `$VCMD /SERVER ${URL} /PASSWORD:${PWD} /CMD ServerStatusGet | grep "Number of Users" | awk -F"|" '{print $2}'`
|
|
;;
|
|
|
|
srv.number_of_ip_address_tables)
|
|
echo `$VCMD /SERVER ${URL} /PASSWORD:${PWD} /CMD ServerStatusGet | grep "Number of IP Address Tables" | awk -F"|" '{print $2}'`
|
|
;;
|
|
|
|
srv.number_of_mac_address_tables)
|
|
echo `$VCMD /SERVER ${URL} /PASSWORD:${PWD} /CMD ServerStatusGet | grep "Number of MAC Address Tables" | awk -F"|" '{print $2}'`
|
|
;;
|
|
|
|
srv.number_of_sessions)
|
|
echo `$VCMD /SERVER ${URL} /PASSWORD:${PWD} /CMD ServerStatusGet | grep "Number of Sessions" | awk -F"|" '{print $2}'`
|
|
;;
|
|
|
|
srv.number_of_virtual_hubs)
|
|
echo `$VCMD /SERVER ${URL} /PASSWORD:${PWD} /CMD ServerStatusGet | grep "Number of Virtual Hubs" | awk -F"|" '{print $2}'`
|
|
;;
|
|
|
|
srv.number_of_active_sockets)
|
|
echo `$VCMD /SERVER ${URL} /PASSWORD:${PWD} /CMD ServerStatusGet | grep "Number of Active Sockets" | awk -F"|" '{print $2}'`
|
|
;;
|
|
|
|
srv.l2tp_status)
|
|
echo `$VCMD /SERVER ${URL} /PASSWORD:${PWD} /CMD IPsecGet | grep "L2TP over IPsec Server Function Enabled" | awk -F"|" '{print $2}'`
|
|
;;
|
|
|
|
srv.openvpn_status)
|
|
echo `$VCMD /SERVER ${URL} /PASSWORD:${PWD} /CMD openvpnget | grep "OpenVPN Clone Server Enabled" | awk -F"|" '{print $2}'`
|
|
;;
|
|
|
|
srv.version)
|
|
echo `$VCMD /SERVER ${URL} /PASSWORD:${PWD} /CMD ServerStatusGet | awk 'FNR=='"3"`
|
|
;;
|
|
|
|
hub.if.out.broad)
|
|
echo `$VCMD /SERVER ${URL} /PASSWORD:${PWD} /adminhub:${ITEM} /CMD StatusGet | grep "Outgoing Broadcast Total Size" | tr -d ',' | grep -o "[0-9]*"`
|
|
;;
|
|
|
|
hub.if.in.broad)
|
|
echo `$VCMD /SERVER ${URL} /PASSWORD:${PWD} /adminhub:${ITEM} /CMD StatusGet | grep "Incoming Broadcast Total Size" | tr -d ',' | grep -o "[0-9]*"`
|
|
;;
|
|
|
|
hub.if.in.uni)
|
|
echo `$VCMD /SERVER ${URL} /PASSWORD:${PWD} /adminhub:${ITEM} /CMD StatusGet | grep "Incoming Unicast Total Size" | tr -d ',' | grep -o "[0-9]*"`
|
|
;;
|
|
|
|
hub.if.out.uni)
|
|
echo `$VCMD /SERVER ${URL} /PASSWORD:${PWD} /adminhub:${ITEM} /CMD StatusGet | grep "Outgoing Unicast Total Size" | tr -d ',' | grep -o "[0-9]*"`
|
|
;;
|
|
|
|
hub.sessions-bridge)
|
|
echo `$VCMD /SERVER ${URL} /PASSWORD:${PWD} /adminhub:${ITEM} /CMD StatusGet | grep "Sessions (Bridge)" | awk -F"|" '{print $2}'`
|
|
;;
|
|
|
|
hub.sessions-client)
|
|
echo `$VCMD /SERVER ${URL} /PASSWORD:${PWD} /adminhub:${ITEM} /CMD StatusGet | grep "Sessions (Client)" | awk -F"|" '{print $2}'`
|
|
;;
|
|
|
|
hub.sessions-all)
|
|
echo `$VCMD /SERVER ${URL} /PASSWORD:${PWD} /adminhub:${ITEM} /CMD StatusGet | grep "Sessions " | awk -F"|" '{print $2}'`
|
|
;;
|
|
|
|
hub.securenat)
|
|
echo `$VCMD /SERVER ${URL} /PASSWORD:${PWD} /adminhub:${ITEM} /CMD StatusGet | grep "SecureNAT" | awk -F"|" '{print $2}'`
|
|
;;
|
|
|
|
hub.type)
|
|
echo `$VCMD /SERVER ${URL} /PASSWORD:${PWD} /adminhub:${ITEM} /CMD StatusGet | grep "Type" | awk -F"|" '{print $2}'`
|
|
;;
|
|
|
|
cas.status)
|
|
HUB=${ITEM%,*}
|
|
CAS=${ITEM##*,}
|
|
echo `$VCMD /SERVER ${URL} /PASSWORD:${PWD} /adminhub:${HUB} /CMD CascadeStatusGet "${CAS}" | grep "Session Status" | awk -F"|" '{print $2}'`
|
|
;;
|
|
|
|
cas.if.out.broad)
|
|
HUB=${ITEM%,*}
|
|
CAS=${ITEM##*,}
|
|
echo `$VCMD /SERVER ${URL} /PASSWORD:${PWD} /adminhub:${HUB} /CMD CascadeStatusGet "${CAS}" | grep "Outgoing Broadcast Total Size" | tr -d ',' | grep -o "[0-9]*"`
|
|
;;
|
|
cas.if.in.broad)
|
|
HUB=${ITEM%,*}
|
|
CAS=${ITEM##*,}
|
|
echo `$VCMD /SERVER ${URL} /PASSWORD:${PWD} /adminhub:${HUB} /CMD CascadeStatusGet "${CAS}" | grep "Incoming Broadcast Total Size" | tr -d ',' | grep -o "[0-9]*"`
|
|
;;
|
|
|
|
cas.if.in)
|
|
HUB=${ITEM%,*}
|
|
CAS=${ITEM##*,}
|
|
echo `$VCMD /SERVER ${URL} /PASSWORD:${PWD} /adminhub:${HUB} /CMD CascadeStatusGet "${CAS}" | grep "Incoming Data Size" | tr -d ',' | grep -o "[0-9]*"`
|
|
;;
|
|
cas.if.out)
|
|
HUB=${ITEM%,*}
|
|
CAS=${ITEM##*,}
|
|
echo `$VCMD /SERVER ${URL} /PASSWORD:${PWD} /adminhub:${HUB} /CMD CascadeStatusGet "${CAS}" | grep "Outgoing Data Size" | tr -d ',' | grep -o "[0-9]*"`
|
|
;;
|
|
|
|
cas.if.out.uni)
|
|
HUB=${ITEM%,*}
|
|
CAS=${ITEM##*,}
|
|
echo `$VCMD /SERVER ${URL} /PASSWORD:${PWD} /adminhub:${HUB} /CMD CascadeStatusGet "${CAS}" | grep "Outgoing Unicast Total Size" | tr -d ',' | grep -o "[0-9]*"`
|
|
;;
|
|
cas.if.in.uni)
|
|
HUB=${ITEM%,*}
|
|
CAS=${ITEM##*,}
|
|
echo `$VCMD /SERVER ${URL} /PASSWORD:${PWD} /adminhub:${HUB} /CMD CascadeStatusGet "${CAS}" | grep "Incoming Unicast Total Size" | tr -d ',' | grep -o "[0-9]*"`
|
|
;;
|
|
|
|
br.status)
|
|
HUB=${ITEM%,*}
|
|
BR=${ITEM##*,}
|
|
echo `$VCMD /SERVER ${URL} /PASSWORD:${PWD} /adminhub:${HUB} /CMD bridgelist | tr -d ' ' | awk '-F|' -v VH="${HUB}" -v VB="${BR}" '{if ($2==VH && $3==VB) print $4}'`
|
|
;;
|
|
usr.if.out.broad)
|
|
HUB=${ITEM%,*}
|
|
USER=${ITEM##*,}
|
|
echo `$VCMD /SERVER ${URL} /PASSWORD:${PWD} /adminhub:${HUB} /CMD UserGet ${USER} | grep "Outgoing Broadcast Total Size" | sed -e 's/[^0-9]//g'`
|
|
;;
|
|
usr.if.in.broad)
|
|
HUB=${ITEM%,*}
|
|
USER=${ITEM##*,}
|
|
echo `$VCMD /SERVER ${URL} /PASSWORD:${PWD} /adminhub:${HUB} /CMD UserGet ${USER} | grep "Incoming Broadcast Total Size" | sed -e 's/[^0-9]//g'`
|
|
;;
|
|
usr.if.in.uni)
|
|
HUB=${ITEM%,*}
|
|
USER=${ITEM##*,}
|
|
echo `$VCMD /SERVER ${URL} /PASSWORD:${PWD} /adminhub:${HUB} /CMD UserGet ${USER} | grep "Incoming Unicast Total Size" | sed -e 's/[^0-9]//g'`
|
|
;;
|
|
usr.if.out.uni)
|
|
HUB=${ITEM%,*}
|
|
USER=${ITEM##*,}
|
|
echo `$VCMD /SERVER ${URL} /PASSWORD:${PWD} /adminhub:${HUB} /CMD UserGet ${USER} | grep "Outgoing Unicast Total Size" | sed -e 's/[^0-9]//g'`
|
|
;;
|
|
|
|
usr.lastlogin)
|
|
HUB=${ITEM%,*}
|
|
USER=${ITEM##*,}
|
|
echo `$VCMD /SERVER ${URL} /adminhub:"$HUB" /PASSWORD:"${PWD}" /CMD UserGet "${USER}" | grep "Updated on" | awk -F"|" '{print $2}'`
|
|
;;
|
|
|
|
script.version)
|
|
echo ${version}
|
|
;;
|
|
|
|
|
|
help)
|
|
echo "please use these params
|
|
{
|
|
discovery
|
|
srv.uptime
|
|
srv.number_of_users
|
|
srv.number_of_ip_address_tables
|
|
srv.number_of_mac_address_tables
|
|
srv.number_of_sessions
|
|
srv.number_of_virtual_hubs
|
|
srv.number_of_active_sockets
|
|
srv.l2tp_status
|
|
srv.openvpn_status
|
|
srv.version
|
|
hub.if.out.broad
|
|
hub.if.in.broad
|
|
hub.if.out.uni
|
|
hub.if.in.uni
|
|
hub.sessions-bridge
|
|
hub.sessions-client
|
|
hub.sessions-all
|
|
hub.securenat
|
|
hub.type
|
|
cas.status
|
|
cas.if.in.broad
|
|
cas.if.out.broad
|
|
cas.if.out
|
|
cas.if.in
|
|
cas.if.in.uni
|
|
cas.if.out.uni
|
|
br.status
|
|
usr.lastlogin
|
|
usr.if.out.broad
|
|
usr.if.in.broad
|
|
usr.if.in.uni
|
|
usr.if.out.uni
|
|
script.version
|
|
}"
|
|
;;
|
|
|
|
|
|
*)
|
|
echo ""
|
|
;;
|
|
esac
|
|
|