Gibt es die Moeglichkeit ueber ein Shellscript die Art des LinVDR-Startes, war's ein Timer- oder manueller Start, zu erkennen?
Eberhard
Gibt es die Moeglichkeit ueber ein Shellscript die Art des LinVDR-Startes, war's ein Timer- oder manueller Start, zu erkennen?
Eberhard
Es gibt von ein script, welches feststellt, ob der Rechner durch einen Timer gestartet wurde und wenn ja, in der setup.conf CurrentChannel auf den Kanal setzt, der zu dem Timer gehört.
Das script wird vor dem Start des vder aufgerufen, so daß der dann mit dem gesetzten Kanal startet.
Das kannst Du evtl. verbasteln, z.B. statt des Eintrags in die setup.conf einen Wert in eine Datei schreiben und die Du dann in Deinem script ausliest.
Ich kann den Beitrag mit dem script nicht mehr finden, deshalb schreibe ich es noch mal hier hin:
#!/bin/bash
CONFDIR="/etc/vdr"
channel2num() {
CHANNEL="$1"
awk -F: 'BEGIN {num=1;} {
if ( match($0,"^:@[0-9]+") ) {
num=substr($0,RSTART+2,RLENGTH-2);
}
if ( match($0,"^:") ) {
next;
}
name=$1; frequency=$2; polarization=$3; source=$4; symbolrate=$5;
vpid=$6; apid=$7; tpid=$8; ca=$9; service_id=$10; nid=$11; tid=$12; rid=$13;
if ( $source == 'T' || $source == 'C' ) {
if ( length(frequency) > 3) {
frequency=substr(frequency, 0, length($frequency)-3);
}
if ( length(frequency) > 3) {
frequency=substr(frequency, 0, length($frequency)-3);
}
}
data = nid > 0 ? tid : frequency;
channel=sprintf("%s-%s-%s-%s",source,nid,data,service_id);
if ( channel == "'$CHANNEL'") {
printf("%s",num);
}
num++;
}' "$CONFDIR"/channels.conf
}
NOW=$(date +%s)
while read NUM STAMP; do
if [ $(( $STAMP - $NOW )) -gt 0 -a $(( $STAMP - $NOW )) -lt 300 ] ; then
break
fi
done < <(while read CHAN TIME; do
[ -n "${TIME//[0-9-]/}" ] && continue
echo $(channel2num "$CHAN") $(date +%s -d "${TIME:0:10} ${TIME:10:2}:${TIME:12:2}")
done < <(awk -F: '{printf("%s %s%s\n",$2,$3,$4)}' "$CONFDIR"/timers.conf) | sort -k2)
if [ -n "$NUM" ]; then
sed -i "s/^CurrentChannel.*$/CurrentChannel = $NUM/" "$CONFDIR"/setup.conf
fi
Alles anzeigen
Heiwil
Vdr macht das doch sowieso von sich aus?
Schau mal ins log, da sollte "assuming manual start" stehen, wenn du händisch einschaltest.
mfg
pidel
ZitatOriginal von pidel
Vdr macht das doch sowieso von sich aus?
Schau mal ins log, da sollte "assuming manual start" stehen, wenn du händisch einschaltest.
mfg
pidel
Ja, das war mir schon bewusst. Ich wollte nur wissen, ob es was einfacheres gibt als ein grep ueber das log.
Gruss
Eberhard
Der Tip von heiwil hat mich zur Loesung gefuehrt:
Der VDR wird normalerweise ueber die /usr/bin/poweroff.pl ausgeschaltet. Dort wird auch der Eintrag fuer den naechsten Timerstart in /proc/acpi/alarm geschrieben. Diesen Eintrag schreibe ich nun zusaetzlich in eine Datei und werte beim naechsten Rechnerstart die Differenz aus - das war's
Somit kann ich bereits, bevor der VDR gestartet wird feststellen, was den Start ausgeloest hat.
Gruss
Eberhard
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!