reload oscam.server
-
- Entwickler Team
- Beiträge: 2576
- Registriert: So 17. Apr 2011, 11:39
- Been thanked: 1 time
- Kontaktdaten:
reload oscam.server
Ich hab ein blödes Problem und muss gestehen das ich schon lange nichts mehr in diesem Bereich gemacht habe - das OScam Wiki sagt dazu aber auch nichts weiter, also hoffe ich jetzt einfach mal das es einen geheimen Trick gibt
Problem:
Ich hab ein Peer dessen DynDNS nicht mehr funktioniert, den ich aber auch nicht erreicht kriege (keine Antwort via EMail usw), seine Clientverbindung ist aber weiterhin aktiv und greift auch weiter ab...
Bisher war ich immer manuell übers OScam WI daher gegangen und die Client-IP bei seinem Server händisch eingetragen - und das jeden Tag wiederholt weil wegen Zwangstrennung etc..
Da hab ich aber langsam keine Lust mehr zu und wollte das automatisieren. Also hab ich ein Script geschrieben welches das Logfile überwacht und sobald der Client eine Verbindung herstellt wird oscam.server bearbeitet und der jeweilige Eintrag aktualisiert.
Im wiki steht das man OScam mithilfe eines HUB Signals (kill -1 $pid) dazu bringen kann die oscam.server neu einzulesen: http://www.streamboard.tv/oscam/ticket/498
Das Problem was ich aber nun habe ist, das die Änderungen aber nicht übernommen werden, also die Datei ist verändert aber OScam übernimmt das nicht
Weiß jemand die ich das beheben kann?
(möchte vermeiden OScam komplett neu zu starten)
Problem:
Ich hab ein Peer dessen DynDNS nicht mehr funktioniert, den ich aber auch nicht erreicht kriege (keine Antwort via EMail usw), seine Clientverbindung ist aber weiterhin aktiv und greift auch weiter ab...
Bisher war ich immer manuell übers OScam WI daher gegangen und die Client-IP bei seinem Server händisch eingetragen - und das jeden Tag wiederholt weil wegen Zwangstrennung etc..
Da hab ich aber langsam keine Lust mehr zu und wollte das automatisieren. Also hab ich ein Script geschrieben welches das Logfile überwacht und sobald der Client eine Verbindung herstellt wird oscam.server bearbeitet und der jeweilige Eintrag aktualisiert.
Im wiki steht das man OScam mithilfe eines HUB Signals (kill -1 $pid) dazu bringen kann die oscam.server neu einzulesen: http://www.streamboard.tv/oscam/ticket/498
Das Problem was ich aber nun habe ist, das die Änderungen aber nicht übernommen werden, also die Datei ist verändert aber OScam übernimmt das nicht
Weiß jemand die ich das beheben kann?
(möchte vermeiden OScam komplett neu zu starten)
Du musst nicht kämpfen um zu siegen
- Alx83
- Entwickler Team
- Beiträge: 662
- Registriert: Mo 12. Mär 2012, 22:48
- Has thanked: 15 times
- Been thanked: 7 times
- Kontaktdaten:
Re: reload oscam.server
Schau mal ob du da was brauchen kannst: http://ipc.pebkac.at/forum/viewtopic.php?f=17&t=847
Auf den Alkohol! Die Ursache und Lösung aller Probleme - Homer J. Simpson
- jensebub
- IPC Meister
- Beiträge: 1133
- Registriert: So 1. Mai 2011, 09:34
- Been thanked: 1 time
- Kontaktdaten:
Re: reload oscam.server
Was spricht denn gegen den Button *reload readers* auf der reader seite
Gruß
jensebub
Code: Alles auswählen
curl - s http://IP:port/readers.html?action=reloadreaders
Gruß
jensebub
Re: reload oscam.server
Mit reloadreaders startet man ja alle Reader neu. vllt reicht es ja nur den passenden Reader ein und auszuschalten mit
Bei XXXXXX den Labelnamen des Readers rein
Code: Alles auswählen
curl -s --digest -o - -u $LOGIN:$PW "http://$IP:$PORT/readers.html?label=XXXXXX&action=disable"
sleep 5
curl -s --digest -o - -u $LOGIN:$PW "http://$IP:$PORT/readers.html?label=XXXXXXX&action=enable"
gruß rolu2
- jensebub
- IPC Meister
- Beiträge: 1133
- Registriert: So 1. Mai 2011, 09:34
- Been thanked: 1 time
- Kontaktdaten:
Re: reload oscam.server
Ich will mich ja nicht streiten, aber alle realer zu restarten kommt dem Thema "reload oscam server" schon recht nahe...
Aber trotzdem hast du recht, damit nur einzelne realer zu restarten...
Gruß
jensebub
Aber trotzdem hast du recht, damit nur einzelne realer zu restarten...
Gruß
jensebub
-
- Entwickler Team
- Beiträge: 2576
- Registriert: So 17. Apr 2011, 11:39
- Been thanked: 1 time
- Kontaktdaten:
Re: reload oscam.server
Ich nutze bereits
Aber das blöde is halt das im oscam.server File zwar die neue IP drin steht, OScam das aber nicht übernimmt.
Also oscam.server ist aktuell, guck ich ins WI von OScam steht noch die alte IP drin.
OScam übernimmt die neue aber selbst nach einem restart nicht - da scheint es wohl irgendwie ne art Cache zu geben? Ich muss OScam richtig beenden bisschen warten und manuell starten, dann wird erst die Datei neu eingelesen... Vielleicht sind die Änderungen auch zu gering?
Code: Alles auswählen
curl -s --digest "$URL/readers.html?label=${READER}&action=disable" >/dev/null
Also oscam.server ist aktuell, guck ich ins WI von OScam steht noch die alte IP drin.
OScam übernimmt die neue aber selbst nach einem restart nicht - da scheint es wohl irgendwie ne art Cache zu geben? Ich muss OScam richtig beenden bisschen warten und manuell starten, dann wird erst die Datei neu eingelesen... Vielleicht sind die Änderungen auch zu gering?
Du musst nicht kämpfen um zu siegen
Re: reload oscam.server
@jensebub
Wir steiten nicht
@feissmaik
Den Sinn deiner Sache sehe nur irgendwie nicht so ganz.
Die Dyndnssperre ist ja dafür da, das sich nur der einlogt, wo auch die dyndns zur Einlogip passt. Mit deinen script weiss du ja auch nicht, ob es überhaupt der Client ist. Da kannst du doch gleich die dyndnssperre erst mal deaktivieren
Wir steiten nicht
@feissmaik
Den Sinn deiner Sache sehe nur irgendwie nicht so ganz.
Die Dyndnssperre ist ja dafür da, das sich nur der einlogt, wo auch die dyndns zur Einlogip passt. Mit deinen script weiss du ja auch nicht, ob es überhaupt der Client ist. Da kannst du doch gleich die dyndnssperre erst mal deaktivieren
gruß rolu2
-
- Entwickler Team
- Beiträge: 2576
- Registriert: So 17. Apr 2011, 11:39
- Been thanked: 1 time
- Kontaktdaten:
Re: reload oscam.server
Es geht nicht um eine DDNS-Sperre.
Es geht darum das die DDNS des Peers nicht mehr funktioniert, der Client aber weiterhin connected. Also möchte ich die IP des Readers von der des Clients ersetzen...
Und ich weiß schon das es 'der' Client ist da ich das oscam.log ja gezielt danach durchsuche
Das funktioniert soweit ja auch wunderbar. Also das hier ist nicht das Problem, oscam.server wird korrekt angepasst. -> Nur übernimmt OScam nicht das neue File
Wenn ich ins OScam-WebInterface gucke steht noch die alte IP im Reader-Eintrag. Trotz restart. Im File steht aber die neue..
Es geht darum das die DDNS des Peers nicht mehr funktioniert, der Client aber weiterhin connected. Also möchte ich die IP des Readers von der des Clients ersetzen...
Und ich weiß schon das es 'der' Client ist da ich das oscam.log ja gezielt danach durchsuche
Spoiler
Show
Code: Alles auswählen
<?php
$LOG = "log.OScam";
$LOGsearchString = "..ClientLogin..";
$CONF = "oscam.server";
$numLines = 200000;
$maxLineLength = 200;
/* LOG FILE */
$fp = fopen($LOG, 'r') OR die("Error: can't find or open $LOG");
$data = fseek($fp, -($numLines * $maxLineLength), SEEK_END);
$lines = array();
while (!feof($fp)) { $lines[] = fgets($fp); }
$c = count($lines);
$i = $c >= $numLines ? $c-$numLines: 0;
for (; $i < $c; ++$i) {
if ($pos = stripos($lines[$i], $LOGsearchString)) {
#echo $lines[$i];
if (preg_match("/(([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3}))/", $lines[$i], $match)) {
$newIP = $match[1];
//echo "newIP: $newIP\n";
}
}
}
/* CONFIG FILE */
if (isset($newIP) AND !empty($newIP)) {
$lines = file($CONF);
$FoundLineCount = 0;
foreach($lines AS $line) {
$FoundLineCount++;
if (preg_match("/$LOGsearchString/i", $line)) { break; }
}
$x = 0;
foreach($lines AS $line) {
$x++;
if ($x > $FoundLineCount AND $x < ($FoundLineCount + 10)) {
if (preg_match("/(([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\,(.*))/", $line, $match)) {
$old = $match[1];
echo "old: $old\n";
break;
}
}
}
$old = explode(",", $old);
$oldIP = $old[0];
$oldPORT = $old[1];
//echo "oldIP: $oldIP\n";
//echo "oldPORT: $oldPORT\n";
if (!empty($oldIP) AND $newIP !== $oldIP) {
echo "newIP: $newIP\n";
echo "oldIP: $oldIP\n";
echo "sed -i $CONF -e 's|".$oldIP."|".$newIP."|'\n";
exec("sed -i $CONF -e 's|".$oldIP."|".$newIP."|'");
exec("pidof oscam", $output, $return_var);
if (isset($return_var) AND $return_var >= 1) {
echo "ERROR: \n";
echo exitcode($return_var)."\n";
foreach ($output AS $err) { echo $err."\n"; }
} else {
foreach($output AS $pid) {
echo "kill -1 $pid\n";
exec("kill -1 $pid", $output, $return_var);
}
sleep(2);
if (isset($return_var) AND $return_var >= 1) {
echo "ERROR: \n";
echo exitcode($return_var)."\n";
foreach ($output AS $err) { echo $err."\n"; }
}
echo "restart_Reader.sh ".strtolower($LOGsearchString)."\n";
exec("/bin/bash restart_Reader.sh ".strtolower($LOGsearchString)."", $output, $return_var);
if (isset($return_var) AND $return_var >= 1) {
echo "ERROR: \n";
echo exitcode($return_var)."\n";
foreach ($output AS $err) { echo $err."\n"; }
}
sleep(2);
}
// FIXME
echo "OSCAM restart\n";
exec("/bin/bash OSCAM restart", $output, $return_var);
foreach($output AS $line) {
echo "$line\n";
}
exit();
}
}
?>
Wenn ich ins OScam-WebInterface gucke steht noch die alte IP im Reader-Eintrag. Trotz restart. Im File steht aber die neue..
Du musst nicht kämpfen um zu siegen
Re: reload oscam.server
weiss nicht obs noch aktuell ist. Geht aber nur, dass alle Reader,User neu eingelesen werden.
Hatte das bei meiner Verwaltung in PHP programmiert.
Hatte das bei meiner Verwaltung in PHP programmiert.
Code: Alles auswählen
$pid = shell_exec('pgrep -x oscam.x86_64');
$pid = explode("\n",$pid);
shell_exec('sudo kill -HUP '.$pid[0]);
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast