AW: OScam für etliche Router mit USB port, fix und fertig verpackt! Zum "Gleichessen"
Probiere dir die Commands halt mal aus. 60% davon ist komplett Nutzlos.
reread : liest die reader datenbank neu ein. Also die Config falls sie im file geändert wurde und nicht im webif. <- Ein neustart tuts auch, viel zu kompliziert da extra im Monitor einzuloggen.
getuser/setuser : Ist überflüssig "status" liefert hier bessere Infos.
restart/shutdown : funktioniert beim freeze eh nicht und für einen regulären neustart ? <- Webinterface Button ist hier wohl besser zu erreichen.
details : Überflüssig. Max user weiss man wohl auch so und "waitforcards" wohl auch usw....
.......
mir ist nur noch nicht so ganz klar wie ich jetzt feststelle, dass oscam hängt. meinst du mit "trysomethingelse" das man irgendwas probiert und guckt, ob sich noch was tut? prinzipiell prüft man damit ja nur, ob oscam noch auf eingaben am monitorport reagiert und nicht unbedingt, ob es probleme mit den readern gibt?
login $user $pass
keepalive
auf keepalive kommt ein [ACK] Wenn oscam hängt, kein ACK

:
Code:
root@OpenWrt:~# ncat -u 127.0.0.1 1000
login dein_login dein_passwort
[AS0000]1|dein_login logged in
keepalive
[KS1000]keepalive_ack
Idealerweise machen wir da noch nen loop draus:
Code:
cws=1
(echo -e "login $MON_USR $MON_PWD";
usleep;
while [ $cws -le 1 ]; do
echo -e "login $MON_USR $MON_PWD";
usleep;
echo -e "keepalive";
usleep;
done
echo -e "exit") | ncat -u $LOCALHOST $MON_PORT 2>/dev/null
Ich hab die Schleife mal ins Zentrum gelegt. alle 0.6 Sekunden pumpt er ein ACK ausm Oscam dann.
Code:
if test -z $(grep keepalive_ack);then
$RAISE_HELL_OUT_THAT_FUCKING_SKULL
fi
ok, das war wohl ein wenig vor meiner zeit. aus reinem interesse: inwiefern ist denn linux heute nicht mehr monolitisch? so wie ich das sehe ist das nämlich nach wie vor der fall, allerdings wird halt auch vieles im userspace gehandhabt, z.b. eben pcsc, usw.
Früher war es so das wenn ein Modul (war ja damals noch keins eigentlich), sagen wir ein Kernelmodul für die PS2 Schnittstelle "gepanict" ist war das Komplette System (Kernel) hin.
Heute ist der Kernel in der Lage sich "einen Finger abzuschneiden" im Ernstfall oder einen Haarschopf anzustecken. Das bricht die Monolitische Struktur ja nunmal auf. Damit ist
die strikte definition "monolitisch" nicht merh erfüllt.

Das liegt in der Natur der Sache. BTW Das Wissen um diesen Umstand bringt keinem mehr was :wacko1:
kann ich gerade nicht nachvollziehen. wo findet sich dieser aufruf? inwiefern startest du hier etwas neu? wo kann ich mehr darüber erfahren?
Schau mal in /sys/bus/devices nach da gibts diverse Möglichkeiten. Im Rahmen vom Kerneldebugging hatte ich viel darüber gelernt.
echo 0 > /sys/bus/usb/devicec/$toter_blinke_schnuffi_des_grauens/remove
Entfernt erstmal nur das Gerät.
Kommt es nicht von selbst wieder:
echo 1 > /sys/bus/usb/devices/$usbhub_an_dem_der_schnuffi_war/rescan
http://askubuntu.com/questions/645/how-do-you-reset-a-usb-device-from-the-command-line
Sie müssen registriert sein, um Links zu sehen.
Sie müssen registriert sein, um Links zu sehen.
Meine Lösung ist der im #c (zweiter link) ziemlich ähnlich.
kann ich gerade auch nicht wirklich nachvollziehen. wieso schmeißt du es nicht raus, wenn es unnötig ist?
Weil es bei einem Toten reder es in unter einer Sekunde schafft. Ich habe nichtmal nen Freezer dann.
Ohne dieses Feature gibt mindestens einen microfreezer. Das ist eigentlich echt Kinkerlitzchen aber Wenn der Code nunmal schon da ist ....
das einzige "problem" ist das anlegen bzw. löschen des benutzers. adduser gibt es nicht (zumindest nicht ohne shadow-useradd und shadow-userdel). Ich habe das in etwa so gelöst:
Ne du so einfach ist nicht

Mit dem postinst kriegste bei jedem update von oscam einen neuen user angelegt.
wohl eher so:
/usr/bin/adduser.sh
Code:
!#/bin/sh
if test $(grep $1 /etc/passwd) -lt 1;then
echo "oscam:*:102:102::/etc/config/oscam:" >> /etc/passwd
fi)
if test $(grep $1 /etc/passwd) -lt 1;then
echo "oscam:!:102:" >> /etc/group
fi
Im Makefile:
Code:
define Package/oscam/postinst
/usr/bin/adduser.sh oscam
endef
define Package/oscam/postrm
#!/bin/sh
sed -i '/^oscam/d' /etc/passwd /etc/group
endef
man könnte hier auch noch weiter durchdrehen und nen komplettes usermanagement ausm Hut Zaubern.
Aber das werde ich nicht zwischen [KODE] und [/KODE] machen dann. der drops sollte so um die 150 Zeilen gegessen sein - ein Nachmittag.
So schön schicki mit fortlaufenden Nummern und so

. Doppeleintragscheck usw. usf. Aber so ein Gedanke muss erst mal reifen bevor man
da "drauflos shellt" - Sonst schellts am ende noch
ja, ist sicher richtig. weißt/siehst du eigentlich wie viele user es gibt? aus reinem interesse heraus.
Ne das sehe ich nicht. Ich überwache hier doch keinen

Aber wenn ich mir den Thread so anschaue -127000 Aufrufe - 2700 Posts.
Es gab am Anfang ne Zeit von über 1000 Aufrufen am Tag / 10000 Aufrufen in der Woche.
Daher schätze ich die Useranzahl so auch 300 - 500 . Das ist aber nur nen Schuss ins Blaue.
ja, die funktion habe ich schon begriffen. wollte nur wissen, ob du das selbst geschrieben hast, oder ob es da ein template oder sowas gibt.
Ich habe das mal für mein Ipad Geschrieben - ist praktisch ne BSD basis. Ich kann mit nen usb Tuner Sky auf meinem Ipad guggn

- Die Lösung ist aber verry Ghettho.
wobei die größe der binary schon "enorm" ist für so etwas triviales. hab da fast mehr vermutet bei 2 kb. das rührt aber wohl dann von der dazugelinkten standardbibliothek?
jenau so isset. Aber baue die mal ne oscamüberwachung mit Oscam. Du merkst schnell das du da 5 Kommandos hintereinander anflanschen musst. so dann noch ne sek davor noch eine danach,
schon biste bei 7 Sekunden. Das kann nervig werden. Die 2kb sind im squashfs übrigens nur noch 1,2kb
gut zu wissen. aber ist das nicht etwas, dass man direkt in oscam fixen sollte? werde ich mir bei gelegenheit mal ansehen.
apropos selbst geschriebenes: was genau ist usbwatch bzw. was macht es
.
und vielen lieben dank für deine schnellen und ausführlichen antworten. sehr hilfreich und keineswegs selbstverständlich, dass man auf so kooperative und schnell reagierende mitglieder stößt!
Hier steht beschrieben wie die Error detection funktioniert:
Sie müssen registriert sein, um Links zu sehen.
So habe ich es in den Kernel direkt eingepatcht. Das ist echt n Steiler Zahn my friend

- Hat viel Spaß gemacht.
Wenn ein error detected wird, injected er in usbwatch "reset" mittels #C Namemangling.
Ich musste diese beiden Kollegas trennen. Irgendwo unterwegs habe ich bestimmt einen Fehler gemacht,
der das Device nicht mehr hochkommen lässt wenn ich es dierekt im Kerneltask resette [kworker/u:X] z.b.
Es funzt so und das reicht ja eigentlich.
Code:
[COLOR=#0000FF][FONT=consolas]void[/FONT][/COLOR][COLOR=#000000][FONT=consolas] reset([/FONT][/COLOR][COLOR=#0000FF][FONT=consolas]int[/FONT][/COLOR][COLOR=#000000][FONT=consolas] argc, [/FONT][/COLOR][COLOR=#0000FF][FONT=consolas]char[/FONT][/COLOR][COLOR=#000000][FONT=consolas] **argv)
[/FONT][/COLOR]{[COLOR=#0000FF]const[/COLOR] [COLOR=#0000FF]char[/COLOR] *filename;[COLOR=#0000FF]int[/COLOR] fd;
filename = argv[1];
fd = [COLOR=#0000FF]open[/COLOR](filename, O_WRONLY);
ioctl(fd, USBDEVFS_RESET, 0);
[COLOR=#0000FF]close[/COLOR](fd);
[COLOR=#0000FF]return[/COLOR];[COLOR=#000000][FONT=consolas]}[/FONT][/COLOR]
Nur ein bespiel der compiled hier nicht, Daemon fehlt, Schnittstelle für den Injekt, der Detektor für den Oscam neustart, usw.
Aber du siehst halt wie der Kübel resetet wird an der stelle.