Shellscripte (Neutrino)

Sammlung von Anleitungen und HowTos für dBox2
ChakaZulu
Developer
Beiträge: 457
Registriert: Sonntag 23. März 2003, 00:39

Shellscripte (Neutrino)

Beitrag von ChakaZulu »

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
suse_rulez
Einsteiger
Einsteiger
Beiträge: 216
Registriert: Freitag 6. September 2002, 15:32

Re: Shellscripte (Neutrino)

Beitrag von suse_rulez »

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.
[...]
Hi ChakaZulu-deinem Beitrag zufolge nutzt die Skripte zur Erstellung von eigenen NewsFeeds.
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ß
ChakaZulu
Developer
Beiträge: 457
Registriert: Sonntag 23. März 2003, 00:39

Beitrag von ChakaZulu »

hi,

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

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 :D
- 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
*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
Zuletzt geändert von ChakaZulu am Sonntag 6. März 2005, 16:41, insgesamt 5-mal geändert.
usul

Re: Shellscripte (Neutrino)

Beitrag von usul »

ChakaZulu hat geschrieben:
http://<dbox>/cgi-bin/exec?name
Cool, dann kann ja der Streamserver beim start gleich die BOX die verzeichnisse mounten lassen.

Wo müssen die Scripte dann liegen?

cu
usul
mogway
Semiprofi
Semiprofi
Beiträge: 1287
Registriert: Montag 30. Dezember 2002, 08:02

Beitrag von mogway »

Hier eine rudimentäre Anleitung:
http://wiki.tuxbox-cvs.sourceforge.net/Neutrino:Skripte

Gruß
mogway
fernsehass
Einsteiger
Einsteiger
Beiträge: 297
Registriert: Sonntag 13. Oktober 2002, 22:02

Beitrag von fernsehass »

Mich stört, das das menü scripte im Hauptmenü untergebracht wird.
Wäre besser es in das Feature-menü (Blaue Taste) zu legen
tetzlav
Einsteiger
Einsteiger
Beiträge: 131
Registriert: Dienstag 6. April 2004, 12:08

Beitrag von tetzlav »

fernsehass hat geschrieben:Mich stört, das das menü scripte im Hauptmenü untergebracht wird.
Wäre besser es in das Feature-menü (Blaue Taste) zu legen
JEPP! :wink:

Gruß
tetzlav
suse_rulez
Einsteiger
Einsteiger
Beiträge: 216
Registriert: Freitag 6. September 2002, 15:32

Beitrag von suse_rulez »

Dagegen-die blaue Taste ist schon so überladen..
Sollen da bleiben wo sie sind
fernsehass
Einsteiger
Einsteiger
Beiträge: 297
Registriert: Sonntag 13. Oktober 2002, 22:02

Beitrag von fernsehass »

Das die Blaue Taste Überladen ist, kann man ja abhilfe schaffen.
Aber Features wie scripts sollten auf jeden fall nach Blau
suse_rulez
Einsteiger
Einsteiger
Beiträge: 216
Registriert: Freitag 6. September 2002, 15:32

Beitrag von suse_rulez »

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" :wink: wird es natürlich bei SquashFS Images.. Oder liese sich das über Verlinkung der einzelnen Files lösen?
essu
Tuxboxer
Tuxboxer
Beiträge: 2452
Registriert: Montag 21. Oktober 2002, 10:04

Beitrag von essu »

suse_rulez hat geschrieben:[...]
Problematisch mit "der freien Aufteilung für freie TuxboxUser" :wink: wird es natürlich bei SquashFS Images.. Oder liese sich das über Verlinkung der einzelnen Files lösen?
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.

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
ChakaZulu
Developer
Beiträge: 457
Registriert: Sonntag 23. März 2003, 00:39

Beitrag von ChakaZulu »

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
suse_rulez
Einsteiger
Einsteiger
Beiträge: 216
Registriert: Freitag 6. September 2002, 15:32

Beitrag von suse_rulez »

essu hat geschrieben:[...]
Die plugins werden in squashfspaketen im var abgelegt und nach Bedarf geladen.
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
Tuxboxer
Tuxboxer
Beiträge: 2452
Registriert: Montag 21. Oktober 2002, 10:04

Beitrag von essu »

suse_rulez hat geschrieben:
essu hat geschrieben:[...]
Die plugins werden in squashfspaketen im var abgelegt und nach Bedarf geladen.
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..
Ich will aber nicht verschweigen, dass ich das für cramfs so noch nicht hinbekommen habe...
Schon gelesen ???
ENIGMA-DOC
lxuser
Interessierter
Interessierter
Beiträge: 57
Registriert: Sonntag 26. August 2001, 00:00

Beitrag von lxuser »

Es wäre super, wenn sich die Skripte auch als Timer ausführen lassen.

Gruss lxuser
DrStoned
Tuxboxer
Tuxboxer
Beiträge: 2614
Registriert: Montag 20. Mai 2002, 10:49
Image: JTG-Image [IDE] Version 2.4.4
Image: (7025SS) Merlin

Beitrag von DrStoned »

lxuser hat geschrieben:Es wäre super, wenn sich die Skripte auch als Timer ausführen lassen.

Gruss lxuser
Also, Plugins lassen sich in den neuen Images als Timer ausführen. :wink: :wink: :wink:
Bild

Greetz von DrStoned :lol: :lol: :lol:
Greetz von DrStoned :lol: :lol: :lol:
lxuser
Interessierter
Interessierter
Beiträge: 57
Registriert: Sonntag 26. August 2001, 00:00

Beitrag von lxuser »

DrStoned hat geschrieben:Also, Plugins lassen sich in den neuen Images als Timer ausführen. :wink: :wink: :wink:
Das ist mir auch bekannt :D

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
suse_rulez
Einsteiger
Einsteiger
Beiträge: 216
Registriert: Freitag 6. September 2002, 15:32

Beitrag von suse_rulez »

lxuser hat geschrieben:[...]
Schö wäre es wenn beim Timer auch plugins mit type=3 also Skripte ausgewählt werden können.
/\
||
Dafür stimm! :D
ChakaZulu
Developer
Beiträge: 457
Registriert: Sonntag 23. März 2003, 00:39

Beitrag von ChakaZulu »

Hi,

ich weiss nicht, ob Ihr da ein altes Image habt oder was da los ist, aber das sollte funktionieren :gruebel:
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
Regloh
Semiprofi
Semiprofi
Beiträge: 1470
Registriert: Donnerstag 14. März 2002, 07:14

Beitrag von Regloh »

das geht auch (m.e. sogar seit dem es die plugins als timertyp gibt).
Regloh-derseinedboxwöchentlichpergetimertemskriptrebootenlässt
DrStoned
Tuxboxer
Tuxboxer
Beiträge: 2614
Registriert: Montag 20. Mai 2002, 10:49
Image: JTG-Image [IDE] Version 2.4.4
Image: (7025SS) Merlin

Beitrag von DrStoned »

@all,
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
durch

Code: Alles auswählen

type=0
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 :lol: :lol: :lol:
saruman
Erleuchteter
Erleuchteter
Beiträge: 682
Registriert: Samstag 13. Juli 2002, 10:05

Beitrag von saruman »

Wäre es eigentlich ohne großen Aufwand möglich, Shellscripts auch im Zusammenhang mit Enigma zu nutzen? Ich mein, die Plugins funktionieren doch größtenteils auch mit Enigma, da könnte man ja vielleicht die Erweiterng, die Neutrino hier erfahren hat, auch bei Enigma einbauen?
rolanddata
Interessierter
Interessierter
Beiträge: 21
Registriert: Donnerstag 26. Mai 2005, 11:18

Shell-Scripte über nhhtpd

Beitrag von rolanddata »

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. :gruebel:

Wo mus das script liegen?
Muss ich irgendetwas konfigurieren, damit http://dbox/cgi-bin/exec?scriptname_ohne_sh funktioniert?

Danke schonmal
usul1
Erleuchteter
Erleuchteter
Beiträge: 760
Registriert: Freitag 14. Januar 2005, 12:42

Re: Shell-Scripte über nhhtpd

Beitrag von usul1 »

rolanddata hat geschrieben: Muss ich irgendetwas konfigurieren, damit http://dbox/cgi-bin/exec?scriptname_ohne_sh funktioniert?
Dein Script heist (Der Dateiname) auch "scriptname_ohne_sh"?

cu
usul
rolanddata
Interessierter
Interessierter
Beiträge: 21
Registriert: Donnerstag 26. Mai 2005, 11:18

Beitrag von rolanddata »

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

Code: Alles auswählen

http://<ip_der_dbox_ganz_ganz_ehrlich_richtig_geschrieben>/cgi-bin/exec?hallo
bewirkt den genannten 404.

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 ;)
Vielleicht weiss ja jemand was neues...

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