sevpn 3.2

This commit is contained in:
Mike D'Morto 2021-01-26 17:29:45 +07:00
parent 55d06d23eb
commit 854af29f12
5 changed files with 2224 additions and 0 deletions

10
sevpn/README.md Normal file
View File

@ -0,0 +1,10 @@
Soft ether vpn monitoring
sevpn3.cfg - script config
sevpn3.conf - zabbix config
sevpn3.sh - script
zbx3_sevpn3_active.xml - template for zabbix 3.x

5
sevpn/sevpn3.cfg Normal file
View File

@ -0,0 +1,5 @@
#sevpn 3.0 configuration file
PWD="test"
URL="127.0.0.1:5555"
VCMD="/root/soft/vpnserver/vpncmd"

2
sevpn/sevpn3.conf Normal file
View File

@ -0,0 +1,2 @@
#SoftEther VPN server
UserParameter=sevpn[*],sudo /etc/zabbix/scripts/sevpn3.sh "$1" "$2" "$3"

270
sevpn/sevpn3.sh Executable file
View File

@ -0,0 +1,270 @@
#!/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

1937
sevpn/zbx3_sevpn3_active.xml Normal file

File diff suppressed because it is too large Load Diff