oscam-2.26.01-11942-802-wit.../Distribution/monitor/mpcsmon.sh

141 lines
2.8 KiB
Bash

#!/bin/bash
CSHOST="localhost"
CSPORT="988"
USR="user"
PWD="passwd"
NETCAT="nc"
DELAY=5
get_geo()
{
eval "`echo "$2" | sed -e \"s/^.*${1} /${1}=/g\" -e 's/;.*$//g'`"
}
do_init()
{
clear
sline="`stty -a 2>/dev/null | grep rows 2>/dev/null`"
get_geo rows "$sline"
get_geo columns "$sline"
[ "$rows" -eq 0 ] && rows=25
[ "$columns" -eq 0 ] && columns=80
rows=`expr $rows - 1`
export rows columns
tput init 2>/dev/null
TI_ED="`tput ed 2>/dev/null`"
TI_SC="`tput sc 2>/dev/null`"
TI_RC="`tput rc 2>/dev/null`"
TI_B0="`tput setb 0 2>/dev/null`"
TI_B1="`tput setb 5 2>/dev/null`"
TI_B2="`tput setb 1 2>/dev/null`"
TI_IL="`tput il1 2>/dev/null`"
TI_DL="`tput dl1 1 2>/dev/null`"
TI_EL="`tput el 2>/dev/null`"
export TI_ED TI_B0 TI_B1 TI_B2 TI_IL TI_DL TI_SC TI_RC TI_EL
}
monitor()
{
$NETCAT -u $CSHOST $CSPORT | awk -W interactive -F"|" '
BEGIN{
line="---------------------------------------------------------------------";
nuser=0;
tabsize=(ENVIRON["columns"]-length(line))/2;
tab=sprintf("%-*.*s", tabsize, tabsize, "");
rows=ENVIRON["rows"];
il=ENVIRON["TI_IL"];
dl=ENVIRON["TI_DL"];
sc=ENVIRON["TI_SC"];
rc=ENVIRON["TI_RC"];
b0=ENVIRON["TI_B0"];
b1=ENVIRON["TI_B1"];
b2=ENVIRON["TI_B2"];
ed=ENVIRON["TI_ED"];
el=ENVIRON["TI_EL"];
csr(0, rows);
printf("\n%s%s\n", b2, ed);
print(tab "Nr User A C Modus Online Sender");
print(tab line);
csr(5+nuser, rows);
cup(5+nuser, 0);
printf("%s%s", b0, ed);
cup(rows, 0);
}
function csr(row1, row2)
{
system("tput csr "row1" "row2);
}
function cup(crow, ccol)
{
system("tput cup "crow" "ccol);
}
/^\[IB....\]/{
nuser=0;
}
/^\[I.....\]/{
if (($2!="c") && ($2!="m"))
next;
printf("%s", sc);
cup(4+nuser, 0);
ot=$12/60;
otm=ot%60; ot/=60;
oth=ot%24; ot/=24;
if (ot<1)
ots=sprintf("%d:%02dh", oth, otm);
else
ots=sprintf("%dt %dh", ot, oth);
austate=0+$5;
if (austate<0) austate=-austate;
printf("%s%s%s%2d %-12.12s%d %d %-10.10s %8.8s %s\n", b2, el,
tab, $3, $4, austate, $6, $9, ots, $14);
printf("%s", el);
nuser++;
csr(5+nuser, rows);
printf("%s%s", rc, b0);
next;
}
/^\[LOG...\]/{
printf("%s%s\n", substr($0, 20, 8), substr($0, 35));
next;
}
{
next;
}'
}
do_exit()
{
trap - 1 2 15
tput csr 0 $rows 2>/dev/null
tput sgr0 2>/dev/null
clear
exit 0
}
do_init
trap do_exit 1 2 15
[ -n "$1" ] && CSHOST="$1"
[ -n "$2" ] && CSPORT="$2"
while true
do
(
while true
do
echo "login $USR $PWD"
sleep 1
echo "log on"
sleep 1
echo "status"
sleep $DELAY
done
) | monitor
done