Shellscripte (Neutrino)
-
- Developer
- Beiträge: 457
- Registriert: Sonntag 23. März 2003, 00:39
Shellscripte (Neutrino)
Hi,
Shellscripte über die GUI ausführen:
http://wiki.tuxbox-cvs.sourceforge.net/Neutrino:Skripte
Man kann sie auch über den Webserver ausführen:
http://<dbox>/cgi-bin/exec?name
name ist dabei der Scriptname *ohne* .sh
Der Webserver liefert die Ausgabe des Shellscripts an den Client zurück.
Damit kann man sich z.B. auch eine Datenquelle für Tuxnews bauen, falls es für bestimmte Daten keinen RSS Feed gibt und man sie mit Shellmitteln zu einem Feed aufbereiten kann.
ciao,
ChakaZulu
Shellscripte über die GUI ausführen:
http://wiki.tuxbox-cvs.sourceforge.net/Neutrino:Skripte
Man kann sie auch über den Webserver ausführen:
http://<dbox>/cgi-bin/exec?name
name ist dabei der Scriptname *ohne* .sh
Der Webserver liefert die Ausgabe des Shellscripts an den Client zurück.
Damit kann man sich z.B. auch eine Datenquelle für Tuxnews bauen, falls es für bestimmte Daten keinen RSS Feed gibt und man sie mit Shellmitteln zu einem Feed aufbereiten kann.
ciao,
ChakaZulu
-
- Einsteiger
- Beiträge: 216
- Registriert: Freitag 6. September 2002, 14:32
Re: Shellscripte (Neutrino)
Hi ChakaZulu-deinem Beitrag zufolge nutzt die Skripte zur Erstellung von eigenen NewsFeeds.ChakaZulu hat geschrieben: [...]
Damit kann man sich z.B. auch eine Datenquelle für Tuxnews bauen, falls es für bestimmte Daten keinen RSS Feed gibt und man sie mit Shellmitteln zu einem Feed aufbereiten kann.
[...]
Genau über diese Funktion habe ich schon länger nachgedacht-mein konkretes Anwendungsziel ist es aktuelle Fusballergebnisse aus einem InternetTicker über TuxNews bereit zu stellen. Weil gerade wenn man am Samstag Nachmittag ein spezifisches Spiel schaut vermisst man doch die anderen Ergebnisse..
Da ich leider keinen passenden RSS-Feed hierfür finde überlege ich mir die Infos direkt aus dem Netz zu parsen.
Wie kann ich nun dafür Sorge tragen, dass mein per Script selbsterstellter Feed ständig aktuallisiert wird?
Die Methode
do{
Skript Starten,
Tuxnews starten,
tuxnews stoppen
}
while(1)
ist ja nicht gerade die Benutzerfreundlichste..
Ein regelmäßiger CRON-Job wäre eine Option, aber der müßte auch passend nach Bedarf Start- und Stopbar sein.
Falls du eine ähnliche Lösung bereits realisiert hast wäre ich dir für ein kurzes Statement recht dankbar..
Gruß
-
- Developer
- Beiträge: 457
- Registriert: Sonntag 23. März 2003, 00:39
hi,
Also:
- das Ding oben ist megahässlich
- da ich kein sed-Experte bin, ist es nach dem try&error-Prinzip entstanden, also megahässlich
- hab ich schon gesagt, dass es megahässlich ist
- es funktioniert
- es benutzt curl, das wahrscheinlich nicht in einem Image ist (kann bestimmt durch wget ersetzt werden)
*edit* hab curl durch wget ersetzt */edit*
- es benutzt sed, das wahrscheinlich nicht in einem Image ist
*edit* evtl kann man der busybox ja sed hinzufügen. allerdings weiss ich nicht, wieviel Platz das braucht... */edit*
*edit2* sind so etwa 10kb */edit2*
*edit3*
Bitte aufpassen, dass
- die Zeilenenden nicht im Windowsstil codiert sind
- keine Leerzeichen am Ende einer Zeile eingefügt werden, wenn ihr das Skript aus dem Board kopiert (vor allem muss sofort nach IFS=" ein Zeilenumbruch kommen (thx an voicebox, der mich auf das zusätzliche Leerzeichen (beim Kopieren aus dem Forum) aufmerksam gemacht hat )
*edit3*
Das script nach /var/tuxbox/plugins kopieren
Das hier nach /var/tuxbox/plugins/buli.cfg kopieren
*edit4*
Durch type=0 erscheint kein Eintrag im Skripte-Menü, sonst type=3 eintragen
*edit4*
in /var/tuxbox/config/tuxnews/tuxnews.list die Zeile
BuLi = http://localhost/cgi-bin/exec?buli
einfügen
Tuxnews aufrufen und sich freuen
Nach einem kompletten Durchlauf lädt tuxnews den Feed automatisch neu.
Das Skript gibt im Moment alle Spiele aus, also auch die Sonntagsspiele, die sich Samstags natürlich nicht verändern. Genauso werden Sonntags die Samstagsspiele angezeigt.
Da mir das aber so ausreicht, hab ich keine grösseren Veränderungen daran gemacht. Ist eher als netter ProofOfConcept zu sehen
ciao,
ChakaZulu
Code: Alles auswählen
#!/bin/sh
BULIURL="http://linpop.zdf.de/sport/buli/head.php"
GET="wget -q -O -"
HEAD="<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>\n
<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns=\"http://my.netscape.com/rdf/simple/0.9/\">\n
\n
<channel>\n
<title>BuLi</title>\n
<link></link>\n
<description>BuLi</description>\n
</channel>\n"
TAIL="</rdf:RDF>"
CONTENT=`$GET $BULIURL |sed -e '/.* - .*/!d' -e '/.* - .*/{n;!p;}' |sed -e 's/.*<td.*0">//' -e 's/<\/a><\/td>//' -e 's/.*<td.*">//' -e 's/<.*\/td>//' -e 's/\(.*:.*\)/ \1\n/' |grep -v "<.*>"`
echo $HEAD
IFS="
"
for i in $CONTENT
do
START=`echo "$i"|grep \-`
if [ "$START"x != "x" ]
then
echo "<item>"
echo "<title>$i"
else
echo "$i</title>"
echo "<link>a</link>"
echo "<description>b</description>"
echo "</item>"
fi
done
echo $TAIL
- das Ding oben ist megahässlich
- da ich kein sed-Experte bin, ist es nach dem try&error-Prinzip entstanden, also megahässlich
- hab ich schon gesagt, dass es megahässlich ist
- es funktioniert
- es benutzt curl, das wahrscheinlich nicht in einem Image ist (kann bestimmt durch wget ersetzt werden)
*edit* hab curl durch wget ersetzt */edit*
- es benutzt sed, das wahrscheinlich nicht in einem Image ist
*edit* evtl kann man der busybox ja sed hinzufügen. allerdings weiss ich nicht, wieviel Platz das braucht... */edit*
*edit2* sind so etwa 10kb */edit2*
*edit3*
Bitte aufpassen, dass
- die Zeilenenden nicht im Windowsstil codiert sind
- keine Leerzeichen am Ende einer Zeile eingefügt werden, wenn ihr das Skript aus dem Board kopiert (vor allem muss sofort nach IFS=" ein Zeilenumbruch kommen (thx an voicebox, der mich auf das zusätzliche Leerzeichen (beim Kopieren aus dem Forum) aufmerksam gemacht hat )
*edit3*
Das script nach /var/tuxbox/plugins kopieren
Das hier nach /var/tuxbox/plugins/buli.cfg kopieren
Code: Alles auswählen
type=0
name=BuLi
desc=BuLi RSS feed
needfb=0
needrc=0
needlcd=0
needoffsets=0
hide=1
Durch type=0 erscheint kein Eintrag im Skripte-Menü, sonst type=3 eintragen
*edit4*
in /var/tuxbox/config/tuxnews/tuxnews.list die Zeile
BuLi = http://localhost/cgi-bin/exec?buli
einfügen
Tuxnews aufrufen und sich freuen
Nach einem kompletten Durchlauf lädt tuxnews den Feed automatisch neu.
Das Skript gibt im Moment alle Spiele aus, also auch die Sonntagsspiele, die sich Samstags natürlich nicht verändern. Genauso werden Sonntags die Samstagsspiele angezeigt.
Da mir das aber so ausreicht, hab ich keine grösseren Veränderungen daran gemacht. Ist eher als netter ProofOfConcept zu sehen
ciao,
ChakaZulu
Zuletzt geändert von ChakaZulu am Sonntag 6. März 2005, 16:41, insgesamt 5-mal geändert.
Re: Shellscripte (Neutrino)
Cool, dann kann ja der Streamserver beim start gleich die BOX die verzeichnisse mounten lassen.ChakaZulu hat geschrieben:
http://<dbox>/cgi-bin/exec?name
Wo müssen die Scripte dann liegen?
cu
usul
-
- Semiprofi
- Beiträge: 1287
- Registriert: Montag 30. Dezember 2002, 08:02
Hier eine rudimentäre Anleitung:
http://wiki.tuxbox-cvs.sourceforge.net/Neutrino:Skripte
Gruß
mogway
http://wiki.tuxbox-cvs.sourceforge.net/Neutrino:Skripte
Gruß
mogway
-
- Einsteiger
- Beiträge: 297
- Registriert: Sonntag 13. Oktober 2002, 21:02
-
- Einsteiger
- Beiträge: 131
- Registriert: Dienstag 6. April 2004, 11:08
-
- Einsteiger
- Beiträge: 216
- Registriert: Freitag 6. September 2002, 14:32
-
- Einsteiger
- Beiträge: 297
- Registriert: Sonntag 13. Oktober 2002, 21:02
-
- Einsteiger
- Beiträge: 216
- Registriert: Freitag 6. September 2002, 14:32
Nunja, an dieser Stelle liese sich nun wirklich eine Grundsatzdiskussion führen. Ich für meinen Teil würde es sogar begrüßen wenn alle Plugins variabel aufteilbar wären zwischen Blauer Taste und einem Extra Menüpunkt unter dem dann auch (in einem Unterverzeichnis?) Scripte liegen würden.
Durch de Erstellung der .cfg Datein scheinen die Scripte ja eh (nicht schlagen wenn ich Mumpitz schreibe..) ein ähnliches Prozedre beim Aufruf zu haben wie Plugins.
So könnte man die Blaue Taste nur mit den Dingen belegen die man dort wünscht (VTxt,Timer,etc.) und Dinge wie Email,TuxboxCommander oder ähnliches an eine andere Stelle packen.
Die Spiele stellen ja auch im Grunde nur Plugins dar, sind aber gesondert abgelegt. Ich weiß nicht wie es heute ist, aber früher lagen Spiele und Plugins z.B. bei Enigma auch in einem Menüpunkt oder? (Ohne hier wieder den apokalyptischen GUI-Krieg herauf beschwören zu wollen...)
Problematisch mit "der freien Aufteilung für freie TuxboxUser" wird es natürlich bei SquashFS Images.. Oder liese sich das über Verlinkung der einzelnen Files lösen?
Durch de Erstellung der .cfg Datein scheinen die Scripte ja eh (nicht schlagen wenn ich Mumpitz schreibe..) ein ähnliches Prozedre beim Aufruf zu haben wie Plugins.
So könnte man die Blaue Taste nur mit den Dingen belegen die man dort wünscht (VTxt,Timer,etc.) und Dinge wie Email,TuxboxCommander oder ähnliches an eine andere Stelle packen.
Die Spiele stellen ja auch im Grunde nur Plugins dar, sind aber gesondert abgelegt. Ich weiß nicht wie es heute ist, aber früher lagen Spiele und Plugins z.B. bei Enigma auch in einem Menüpunkt oder? (Ohne hier wieder den apokalyptischen GUI-Krieg herauf beschwören zu wollen...)
Problematisch mit "der freien Aufteilung für freie TuxboxUser" wird es natürlich bei SquashFS Images.. Oder liese sich das über Verlinkung der einzelnen Files lösen?
-
- Tuxboxer
- Beiträge: 2452
- Registriert: Montag 21. Oktober 2002, 09:04
Nein, dazu habe ich einen Lösungsansatz vorgestellt, der das völlig wahlfreie Laden von Plugins ermöglicht: Die plugins werden in squashfspaketen im var abgelegt und nach Bedarf geladen. D.h. Plugins, die man nicht will kann man auch ganz von der Box verbannen und damit Platz für andere schaffen.suse_rulez hat geschrieben:[...]
Problematisch mit "der freien Aufteilung für freie TuxboxUser" wird es natürlich bei SquashFS Images.. Oder liese sich das über Verlinkung der einzelnen Files lösen?
siehe auch hier:
http://forum.tuxbox-cvs.sourceforge.net ... ugins+pack
das funktioniert natürlich auch für Neutrino, anders als das Ausblenden mittels *.cfg, das ignoriert Enigma nämlich geflissentlich
Schon gelesen ???
ENIGMA-DOC
ENIGMA-DOC
-
- Developer
- Beiträge: 457
- Registriert: Sonntag 23. März 2003, 00:39
hi,
ansich sind die skripte auch nix anderes als Plugins, nur werden halt die Skripte ausgeführt und keine .so geladen. Im Prinzip sollte man die Trennung nach Skript/Plugin in der GUI überhaupt nicht vornehmen (eher nach Funktionalität).
Ich fand es dann aber doch unschön, die Skripte auch noch direkt ins blaue Menü aufzunehmen, da das bei mir schon so ewig lang war (ok, ich war zu faul, alles was ich nicht brauche, zu deaktivieren )
Wegen dem squashfs muss man mal schauen
ciao,
ChakaZulu
ansich sind die skripte auch nix anderes als Plugins, nur werden halt die Skripte ausgeführt und keine .so geladen. Im Prinzip sollte man die Trennung nach Skript/Plugin in der GUI überhaupt nicht vornehmen (eher nach Funktionalität).
Ich fand es dann aber doch unschön, die Skripte auch noch direkt ins blaue Menü aufzunehmen, da das bei mir schon so ewig lang war (ok, ich war zu faul, alles was ich nicht brauche, zu deaktivieren )
Wegen dem squashfs muss man mal schauen
ciao,
ChakaZulu
-
- Einsteiger
- Beiträge: 216
- Registriert: Freitag 6. September 2002, 14:32
-
- Tuxboxer
- Beiträge: 2452
- Registriert: Montag 21. Oktober 2002, 09:04
Ich will aber nicht verschweigen, dass ich das für cramfs so noch nicht hinbekommen habe...suse_rulez hat geschrieben:Das wäre natürlich ein noch eleganterer Ansatz, besonders da nicht erwünschte/benötigte Plugins wirklich gelöscht werden könnten und somit nicht unnötig Speicherplatz belegen..essu hat geschrieben:[...]
Die plugins werden in squashfspaketen im var abgelegt und nach Bedarf geladen.
Schon gelesen ???
ENIGMA-DOC
ENIGMA-DOC
-
- Interessierter
- Beiträge: 57
- Registriert: Samstag 25. August 2001, 23:00
-
- Tuxboxer
- Beiträge: 2614
- Registriert: Montag 20. Mai 2002, 09:49
- Image: JTG-Image [IDE] Version 2.4.4
- Image: (7025SS) Merlin
-
- Interessierter
- Beiträge: 57
- Registriert: Samstag 25. August 2001, 23:00
Das ist mir auch bekanntDrStoned hat geschrieben:Also, Plugins lassen sich in den neuen Images als Timer ausführen.
Allerdings können dort zur Zeit nur die Plugins, die mit der blauen Taste aufgerufen werden, ausgewählt werden.
Wo plugins angezeigt werden (Blaue Taste, Skripte oder Spiele) wird über die [Name des Plugins].cfg bestimmt. Dabei wird type=1(2,3) ausgewertet.
Schö wäre es wenn beim Timer auch plugins mit type=3 also Skripte ausgewählt werden können.
Gruss lxuser
-
- Einsteiger
- Beiträge: 216
- Registriert: Freitag 6. September 2002, 14:32
-
- Developer
- Beiträge: 457
- Registriert: Sonntag 23. März 2003, 00:39
Hi,
ich weiss nicht, ob Ihr da ein altes Image habt oder was da los ist, aber das sollte funktionieren
Skripte über den Timer auszuführen war ja die eigentliche Intention, die "blauen Plugins" habe ich nachträglich eingefügt.
In der Auswahlliste sollten sowohl Typ 2 (Tool) als auch Typ 3 (Skript) Plugins drinstehen.
ciao,
ChakaZulu
ich weiss nicht, ob Ihr da ein altes Image habt oder was da los ist, aber das sollte funktionieren
Skripte über den Timer auszuführen war ja die eigentliche Intention, die "blauen Plugins" habe ich nachträglich eingefügt.
In der Auswahlliste sollten sowohl Typ 2 (Tool) als auch Typ 3 (Skript) Plugins drinstehen.
ciao,
ChakaZulu
-
- Semiprofi
- Beiträge: 1470
- Registriert: Donnerstag 14. März 2002, 07:14
-
- Tuxboxer
- Beiträge: 2614
- Registriert: Montag 20. Mai 2002, 09:49
- Image: JTG-Image [IDE] Version 2.4.4
- Image: (7025SS) Merlin
@all,
ich hätte da noch nen kleinen Änderungsvorschlag für den Bundesliga-Newsticker.
Wenn man in der buli.cfg den Eintragdurch ersetzt, taucht das Script nicht mehr im Skripte-Menü über die Dbox-Taste auf, aber es funktioniert trotzdem, da es ja über das Newsticker-Plugin gestartet wird.
Das fertige Plugin kann jetzt übrigens im Jack the Grabber-Forum runtergeladen werden. Bitte vorher im Forum registrieren.
Greetz von DrStoned
ich hätte da noch nen kleinen Änderungsvorschlag für den Bundesliga-Newsticker.
Wenn man in der buli.cfg den Eintrag
Code: Alles auswählen
type=3
Code: Alles auswählen
type=0
Das fertige Plugin kann jetzt übrigens im Jack the Grabber-Forum runtergeladen werden. Bitte vorher im Forum registrieren.
Greetz von DrStoned
-
- Erleuchteter
- Beiträge: 682
- Registriert: Samstag 13. Juli 2002, 09:05
-
- Interessierter
- Beiträge: 21
- Registriert: Donnerstag 26. Mai 2005, 10:18
Shell-Scripte über nhhtpd
Hallo Gemeinde,
ich würde wirklich gern ein Shell-Script über web auf der tuxbox aufrufen können, aber irgendwie bekomme ich immer einen 404.
Wo mus das script liegen?
Muss ich irgendetwas konfigurieren, damit http://dbox/cgi-bin/exec?scriptname_ohne_sh funktioniert?
Danke schonmal
ich würde wirklich gern ein Shell-Script über web auf der tuxbox aufrufen können, aber irgendwie bekomme ich immer einen 404.
Wo mus das script liegen?
Muss ich irgendetwas konfigurieren, damit http://dbox/cgi-bin/exec?scriptname_ohne_sh funktioniert?
Danke schonmal
-
- Erleuchteter
- Beiträge: 760
- Registriert: Freitag 14. Januar 2005, 12:42
Re: Shell-Scripte über nhhtpd
Dein Script heist (Der Dateiname) auch "scriptname_ohne_sh"?rolanddata hat geschrieben: Muss ich irgendetwas konfigurieren, damit http://dbox/cgi-bin/exec?scriptname_ohne_sh funktioniert?
cu
usul
-
- Interessierter
- Beiträge: 21
- Registriert: Donnerstag 26. Mai 2005, 10:18
Also ich mag ja newbie sein, aber ich hab schon Ahnung von Webservern, CGI, Linux und Shell-Scripten. Immerhin erlaubt man mir, als eBusiness-Entwickler bei einem großen IT-Unternehmen zu arbeiten.
Ich wäre dankbar für ernst gemeinte konstruktive Ansätze. Soll jetzt kein Angriff sein, aber was genau soll wohl "script_ohne_sh" bedeuten, wenn nicht, dass der Dateiname in diesem Falle ohne das folgende ".sh" angegeben wurde, im Gegensatz zu dem tatsächlichen Dateinamen im System. (Ja, ich habe mir die Anleitung genau durchgelesen)
(Nebenbei: ich habe alle möglichen Kombinationen ausprobiert, mit und ohne .sh)
Entweder in meinem Web-Interface ist diese Funktion nicht vorgesehen, oder sie ist nicht aktiviert, oder das entsprechende Shell-Script liegt an einer Stelle, an der das Interface es nicht finden kann.
In meinem Fall liegt das Script mit Namen "hallo.sh" im Verz. /var/bin/ und ist damit auch über die PATH-Variable zugänglich. Der Aufruf bewirkt den genannten 404.
Vielleicht weiss ja jemand was neues...
Mein Image:
Ich wäre dankbar für ernst gemeinte konstruktive Ansätze. Soll jetzt kein Angriff sein, aber was genau soll wohl "script_ohne_sh" bedeuten, wenn nicht, dass der Dateiname in diesem Falle ohne das folgende ".sh" angegeben wurde, im Gegensatz zu dem tatsächlichen Dateinamen im System. (Ja, ich habe mir die Anleitung genau durchgelesen)
(Nebenbei: ich habe alle möglichen Kombinationen ausprobiert, mit und ohne .sh)
Entweder in meinem Web-Interface ist diese Funktion nicht vorgesehen, oder sie ist nicht aktiviert, oder das entsprechende Shell-Script liegt an einer Stelle, an der das Interface es nicht finden kann.
In meinem Fall liegt das Script mit Namen "hallo.sh" im Verz. /var/bin/ und ist damit auch über die PATH-Variable zugänglich. Der Aufruf
Code: Alles auswählen
http://<ip_der_dbox_ganz_ganz_ehrlich_richtig_geschrieben>/cgi-bin/exec?hallo
Code: Alles auswählen
HTTP/1.0 404 Not Found
Content-Type: text/plain
404 : File not found
The requested file was not found on this dbox ;)
Mein Image:
Code: Alles auswählen
version=1201200505261551
comment=yadi made by HorstH
target=123
creator=HorstH
url=http://switch.dl.sourceforge.net/sourceforge/dboxjffs2/200505261551_yadi_mtd1.img
catalog=http://yadi.org/update/squashfs_catalog.xml?rc=201