You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.5 KiB
65 lines
1.5 KiB
#!/bin/bash
|
|
|
|
|
|
if [ -z ${1} ] ; then
|
|
echo "usage: status.sh interface "
|
|
exit
|
|
fi
|
|
|
|
CHECK="off";
|
|
ACTIVITY="off";
|
|
|
|
net=${1}
|
|
ping_c=2 # stop after sending packets
|
|
ping_i=1 # set interval in seconds
|
|
ping_w=2 # timeout in seconds
|
|
|
|
ping_iptmp=$(ip addr show $net | grep -o "inet [0-9]*\.[0-9]*\.[0-9]*" | grep -o "[0-9]*\.[0-9]*\.[0-9]*")
|
|
ping_ip="$ping_iptmp.1"
|
|
#ping_ip=10.13.13.1
|
|
|
|
if [[ -d /sys/class/net/$net ]]; then
|
|
CHECK="on";
|
|
T1=$(cat /sys/class/net/$net/statistics/tx_bytes)
|
|
ping -I $net -c $ping_c -i $ping_i -w $ping_w $ping_ip &> /dev/null
|
|
T2=$(cat /sys/class/net/$net/statistics/tx_bytes)
|
|
|
|
tot=$(( (T2 - T1)))
|
|
if [ $tot -ne 0 ]; then
|
|
ACTIVITY="on";
|
|
fi
|
|
fi
|
|
|
|
#echo "check $CHECK activity $ACTIVITY"
|
|
|
|
if [ "$CHECK" == "on" ] && [ "$ACTIVITY" == "on" ] ; then
|
|
hybridswarm='Online'
|
|
else
|
|
hybridswarm='NotOnline'
|
|
fi
|
|
|
|
dockerswarm=$(docker info --format "{{json .}}" | jq .Swarm.LocalNodeState)
|
|
tempswarm="${dockerswarm%\"}"
|
|
tempswarm="${tempswarm#\"}"
|
|
dockerswarm=$tempswarm
|
|
|
|
|
|
if [ "$dockerswarm" == "active" ] ; then
|
|
dockerswarmid=$(docker info --format "{{json .}}" | jq .Swarm.NodeID)
|
|
tempswarm1="${dockerswarmid%\"}"
|
|
tempswarm1="${tempswarm1#\"}"
|
|
swarmlabid=$tempswarm1
|
|
else
|
|
swarmlabid="-1";
|
|
fi
|
|
|
|
if [ -z "$dockerswarm" ] ; then
|
|
dockerswarm=none
|
|
fi
|
|
|
|
jq \
|
|
--arg key0 'swarmlab' --arg swarmlab $dockerswarm \
|
|
--arg key1 'hybrid' --arg hybrid $hybridswarm \
|
|
--arg key2 'swarmlabid' --arg swarmlabid $swarmlabid \
|
|
'. | .[$key0]=$swarmlab | .[$key1]=$hybrid | .[$key2]=$swarmlabid' <<<'{}'
|
|
|
|
|