ich hab mich mal an ein script gesetzt, ist noch nicht ganz fertig:
Bash
#!/bin/bash
#
# name : vdr_auto_restart
# desciption : restart vdr when no record or streams activity detected
# autor : Speefak ( itoss@gmx.de )
# licence : (CC) BY-NC-SA
# version : 0.1
#
#------------------------------------------------------------------------------------------------------------
############################################################################################################
####################################### define global variables ########################################
############################################################################################################
#------------------------------------------------------------------------------------------------------------
TrafficRecordPeriod=10 # seconds
TrafficVDRActivityThreshold=3 # megabyte/second
VDRPID=$(pidof vdr)
VDRLANConnections=$(ss -tunp | grep "$VDRPID" | awk '{print $6}' | cut -d ":" -f1 | sort -u)
#------------------------------------------------------------------------------------------------------------
############################################################################################################
########################################### define functions ###########################################
############################################################################################################
#-------------------------------------------------------------------------------------------------------------
vdr-activity-check-network () {
# calculating vdr network traffic
printf " calculating vdr network traffic (PID $VDRPID) (${TrafficRecordPeriod}sec) ...\n"
TrafficVDRIO=$(sudo timeout $TrafficRecordPeriod nethogs -t | grep $VDRPID | awk '{print $(NF-1), $NF}')
TrafficVDRIOAverageDivisor=$( wc -l <<< "$TrafficVDRIO")
TrafficVDRAverageOut=$(echo " $(awk '{sum += $2} END {print sum}' <<< "$TrafficVDRIO") / $TrafficVDRIOAverageDivisor " | bc)
TrafficVDRAverageIN=$(echo " $(awk '{sum += $1} END {print sum}' <<< "$TrafficVDRIO") / $TrafficVDRIOAverageDivisor " | bc)
# check network traffic threshold
if [[ $TrafficVDRAverageOut -gt $TrafficVDRActivityThreshold ]]; then
VDRStatus=1
printf " vdr stream active ($TrafficVDRAverageOut mb/s)\n"
else
printf " no vdr active streams ($TrafficVDRAverageOut mb/s)\n"
fi
}
#------------------------------------------------------------------------------------------------------------
vdr-activity-check-record () {
# check for active recordings
printf " check for active recordings \n"
if [[ -n $(svdrpsend NEXT rel | egrep "^250" | cut -d' ' -f3 | grep "^-") ]]; then
VDRStatus=1
printf " vdr record detected \n"
else
printf " no active vdr records \n"
fi
}
#------------------------------------------------------------------------------------------------------------
############################################################################################################
############################################# start script #############################################
############################################################################################################
#------------------------------------------------------------------------------------------------------------
# check for running vdr
if [ -z "$VDRPID" ]; then
echo "VDR process not found. Exiting."
exit 1
fi
#------------------------------------------------------------------------------------------------------------
# check for active network streams (calculating VDR bandwitch) and records
vdr-activity-check-network
vdr-activity-check-record
#------------------------------------------------------------------------------------------------------------
#TODO
echo $VDRStatus
exit
#------------------------------------------------------------------------------------------------------------
Alles anzeigen