df ausgabe als popup?

Games, Plugins, Utils, Tools, 3rdParty, etc...
gnome
Interessierter
Interessierter
Beiträge: 49
Registriert: Donnerstag 27. Mai 2004, 19:09

df ausgabe als popup?

Beitrag von gnome »

ich würde mir gerne ein plugin basteln, dass die ausgabe der befehls df -h, als ausgabe am fernsehe zeigt..

ich dacht in etwa so:

df -h > /tmp/test.log

nun würde ich hier mit grep arbeiten:

/tmp/test.log > /dev/null` ; then
A=`grep "Filesystem" /tmp/test.log`
B=`grep "Size" /tmp/test.log`
C=`grep "Used" /tmp/test.log`
A=`expr substr "$A" 27 30`
B=`expr substr "$B" xx`
C=`expr substr "$C" xx`
http://localhost/control/message?nmsg=Filesystem%20$A

mein eigentliches prob ist eigentlich, dass der test.log so aussieht:

Code: Alles auswählen

Filesystem                Size      Used Available Use% Mounted on
/dev/root                 7.8M      6.0M      1.8M  77% /
und dort geht das irgendwie mit dem rauspicken der zeilen nicht...

kann ich das irgendwie verwirklichen?

die test.log umkonvertieren, so dass alles untereinander steht oder irgendwie? bin für jede hilfe dankbar...

cu

gnome
Sepp776
Semiprofi
Semiprofi
Beiträge: 1173
Registriert: Samstag 1. September 2001, 00:00

Beitrag von Sepp776 »

Dein Problem sind möglicherweise die Zeichen, die im Logfile stehen. / und % kannst du ja nicht einfach im String stehen lassen. Probier doch mal solche Zeichen zu ersetzen...
Philips Sat
Astra 19.2°
Tattergreis
Interessierter
Interessierter
Beiträge: 66
Registriert: Sonntag 19. Oktober 2003, 11:10

Beitrag von Tattergreis »

Hi gnome!

Ich bau mir in meine Images immer ein sysinfo-Plugin ein. Das Script ist nicht auf meinem Mist gewachsen, ich hab es lediglich irgendwann mal etwas abgeändert. In dem Plugin wird allerdings nicht grep, sondern sed verwendet. Vielleicht kannst Du damit ja was anfangen, warum das Rad neu erfinden:

Code: Alles auswählen

#!/bin/sh
# System Informationen
df > /tmp/dfinfo
sed -e '1D' -e '3,$D' /tmp/dfinfo > /tmp/dfinfo1
H="http://127.0.0.1/control/message?nmsg="
D=`date +"%a, %d %b %Y %H:%M%%0A"`
D=`echo $D | sed -e s/\ /%20/g`
D=`echo $D | sed -e s/,/%2C/g`
S=`sed "s/\ /;/g" /tmp/dfinfo1`
S=`echo $S | sed s/\;\;\;/\;/g`
S=`echo $S | sed s/\;\;\;/\;/g`
S=`echo $S | sed s/\;\;\;/\;/g`
S=`echo $S | sed s/\;\;/\;/g`
S=`echo $S | sed -e s/%/%20%/g`
S=`echo $S | sed s/\;/%28jffs2%29%0A1k-blocks%3A%20/`
S=`echo $S | sed s/\;/%0AUsed%20blocks%3A%20/`
S=`echo $S | sed s/\;/%0ABlocks%20available%3A%20/`
S=`echo $S | sed s/\;/%0AUse%20%28in%20percent%29%3A%20/`
S=`echo $S | sed s/\;/%0AMounted%20on%3A%20/`

msg=$D"Filesystem%3A%20"$S

wget -O/dev/null $H$msg

exit 0
Gruß, Tattergreis
gnome
Interessierter
Interessierter
Beiträge: 49
Registriert: Donnerstag 27. Mai 2004, 19:09

Beitrag von gnome »

@Tattergreis

danke, genau sowas wollte ich...

thanx..

cu

gnome
tetzlav
Einsteiger
Einsteiger
Beiträge: 131
Registriert: Dienstag 6. April 2004, 12:08

Beitrag von tetzlav »

Tattergreis hat geschrieben:[...]
In dem Plugin wird allerdings nicht grep, sondern sed verwendet.
[...]
@Tattergreis
...schade nur das sed weder in YADI noch JtG enthalten ist; kannst du mir das mal bitte zukommen lassen?

Gruß
tetzlav@gmx.at
access
Interessierter
Interessierter
Beiträge: 21
Registriert: Sonntag 30. Mai 2004, 21:57

Beitrag von access »

mal ne dumme Frage, wie bindet man das Shellscript denn unter Neutrino ein?

Und bzgl. der sed binary: vielleicht kann mir die auch jemand zukommen lassen oder irgendwo zum Download anbieten?
woglinde
Einsteiger
Einsteiger
Beiträge: 261
Registriert: Donnerstag 15. November 2001, 00:00

Beitrag von woglinde »

jo dumme antwort,

compilier es dir selber.

Gruss woglinde
tetzlav
Einsteiger
Einsteiger
Beiträge: 131
Registriert: Dienstag 6. April 2004, 12:08

Beitrag von tetzlav »

access hat geschrieben:[...]
Und bzgl. der sed binary: vielleicht kann mir die auch jemand zukommen lassen oder irgendwo zum Download anbieten?
habichschon! Vielen Dank an Tattergreis, er hat mir auch gleich noch netcat mit in die busybox reincompiliert! so bin ich fast glücklich...

Jetzt such ich nur noch eine Möglichkeit meine Scripte übersichtlich aus dem Plugin-Menü zu starten;

bei meiner Suche bin ich auf http://forum.tuxbox.org/forum/viewtopic ... pt+starten gestoßen. Das Plugin lässt die Box aber leider abstürzen. Kann es sein das es mit dem aktuellen JtG-Snap (19.07.04) nicht mehr funktioniert? Generell wäre mir die Lösung von
hybrid mit dem Script-Menü sehr willkommen. Funktioniert das Plugin bei irgendjemanden mit aktuellem Image?

Auf die Möglichkeit in einem vorhandener Plugin.so mit einem Hexeditor den Pfad zum Script zu ändern bin ich auch schon zurückgekommen, nur leider erscheint dann bei sysinfo.sh ein leeres Fenster und bei telmonc.sh gar nichts. Die Scripte werden zwar irgendwie ausgeführt, aber irgendwie haut das mit den Pfaden nicht hin!?

hier die Scripte (beide in /var/plugins)

Code: Alles auswählen

#!/bin/sh
# System Informationen
df -h > /tmp/dfinfo
grep video /tmp/dfinfo > /tmp/dfinfo1
H="http://127.0.0.1/control/message?nmsg="
D=`date +"%a, %d %b %Y %H:%M%%0A"`
D=`echo $D | sed -e s/\ /%20/g`
D=`echo $D | sed -e s/,/%2C/g`
S=`sed "s/\ /;/g" /tmp/dfinfo1`
S=`echo $S | sed s/\;\;\;/\;/g`
S=`echo $S | sed s/\;\;\;/\;/g`
S=`echo $S | sed s/\;\;\;/\;/g`
S=`echo $S | sed s/\;\;/\;/g`
S=`echo $S | sed -e s/%/%20%/g`
S=`echo $S | sed s/\;/%0ASize%3A%20/`
S=`echo $S | sed s/\;/%0AUsed%3A%20/`

S=`echo $S | sed s/\;/%0AAvailable%3A%20/`
S=`echo $S | sed s/\;/%0AUse%20%28in%20percent%29%3A%20/`
S=`echo $S | sed s/\;/%0AMounted%20on%3A%20/`

msg="$D"Filesystem%3A%20"$S"

wget -q -O /dev/null $H$msg

exit 0 

Code: Alles auswählen

#/bin/sh

##########################################
#  Script zum Anzeigen der vom FLI4L-Router geloggten Anrufe
#  (Telmond muss aktiviert sein!)								
#  Autor: tetzlav
#  last edit: 19/07/04
##########################################
#config
ip="192.168.2.2" #IP-Adresse des FLI4L-Routers
port="5000" #Imond-Port (default:5000, siehe "config/base.txt")
passwd="***********" #Imond-Passwort
admin_passwd="**********" #Imond-ADMIN-Passwort (wird gebraucht fuer /etc/phonebook)
tmpdir="/var/tmp"

#script
cd $tmpdir
date=`date +%Y%m%d`

{ echo "pass $passwd"; echo "telmond-log-file"; echo "quit"; } |
	nc $ip $port |
	sed 's/.$//; /^OK/ d; s/$/ /; s/ \+/;/g; s/\/\+//g;' > $tmpdir/0.tmp

if [ ! -f $tmpdir/phonebook ]
then
    { echo "pass $passwd"; echo "send /etc/phonebook $admin_passwd"; echo "quit"; } |
     	nc $ip $port |
     	sed '/^OK/d; /^ERR/d;' > $tmpdir/phonebook
fi

sed '/^#/d; /^[^=]*$/d; s/^/s|;/; s/=/;|;/; s/,[^,]*$//; s/$/;|g/' $tmpdir/phonebook > $tmpdir/sed.tmp
sed -f sed.tmp $tmpdir/0.tmp > $tmpdir/1.tmp
echo "Anrufe%20in%20Abwesenheit%3A%0A%0A" > $tmpdir/2.tmp
grep $date $tmpdir/1.tmp | sed "s/^;$date//; s/;$/)%0A/; s/;/%20/; s/;/Uhr:%20/; s/;/%20(->/; s/:[0-9]\{2\}U/U/;" >> $tmpdir/2.tmp	
sed '$!{;H;d;};H;x;s/\n//g; s/:/%3A/g; s/ /%20/g;' $tmpdir/2.tmp > $tmpdir/3.tmp
wget -q -O /dev/null http://127.0.0.1/control/message?nmsg=`cat $tmpdir/3.tmp`
#rm $tmpdir/*.tmp

exit 0
(das telmond.sh ist noch etwas quick'n'dirty aber funktioniert wenn ich es auf der Console aufrufe...)

Viele Grüße
tetzlav
Tattergreis
Interessierter
Interessierter
Beiträge: 66
Registriert: Sonntag 19. Oktober 2003, 11:10

Beitrag von Tattergreis »

Hi!

Mit den Dateien für das Sysinfo-Plugin kann ich dienen:

sysinfo.zip

Im Zipfile enthalten sind:
  • sysinfo.cfg (muß in /lib/tuxbox/plugins oder /var/tuxbox/plugins, je nach Image)
    sysinfo.so (muß in /lib/tuxbox/plugins oder /var/tuxbox/plugins, je nach Image, ausführbar machen!)
    sysinf (muß in /var/plugins, ausführbar machen! benötigt sed!)
Die .cfg und .so Files sollten sich eigentlich für eigene Scripte, die man als Plugin verwenden möchte, entsprechend ändern lassen, bei der .so wie oben beschrieben per Hex-Editor. Ich glaube aber, daß der Name des Scriptes, das man einbinden möchte, in der .so nicht zu lang sein durfte. Kann auch sein, daß ich mich irre, aber es ging auf jeden Fall nicht auf Anhieb.

@access Den sed-Befehl kompiliere ich u. a. immer mit in die busybox. Ich kann sie Dir auch gerne zumailen, inwieweit sie sich bei Dir einbauen läßt, hängt aber von Deinem verwendeten Image ab.

Gruß, Tattergreis
tetzlav
Einsteiger
Einsteiger
Beiträge: 131
Registriert: Dienstag 6. April 2004, 12:08

Beitrag von tetzlav »

access hat geschrieben:[...]
Und bzgl. der sed binary: vielleicht kann mir die auch jemand zukommen lassen oder irgendwo zum Download anbieten?
auf mehrfachen Wunsch die busybox mint sed und netcat zum Download (nochmal vielen Dank an Tattergreis!)
tetzlav hat geschrieben:Auf die Möglichkeit in einem vorhandener Plugin.so mit einem Hexeditor den Pfad zum Script zu ändern bin ich auch schon zurückgekommen, nur leider erscheint dann bei sysinfo.sh ein leeres Fenster und bei telmonc.sh gar nichts. Die Scripte werden zwar irgendwie ausgeführt, aber irgendwie haut das mit den Pfaden nicht hin!?
hab nach langem rumprobieren den Fehler gefunden: da ich sed und netcat nachträglich anhand der busybox von Tattergreis nach /var/bin gelegt habe bin ich davon ausgegangen, da dieser Pfad ja ebenfalls mit exportiert wird, dass alle binarys auch gefunden werden. Wenn ich diese Scripte auf der Console starte funktioniert auch alles bestens - nur eben nicht wenn ich sie über das Plugin-Menü starte. Ich denke mal das da die binarys in /var/bin ignoriert werden bzw. die Plugin-Struktur eigene Pfade verwendet!? Jedenfalls nachdem ich die Pfade zu sed und netcat in den Scripts angebe funktioniert alles bestens! :D

hier nochmal die angepassten Scripte (kann man auch hier downloaden)

Code: Alles auswählen

#!/bin/sh
# System Informationen
sed_bin="/var/bin/busybox sed"
tmpdir="/var/tmp"
mnt="video"

df -h > $tmpdir/dfinfo.tmp
grep $mnt $tmpdir/dfinfo.tmp > $tmpdir/dfinfo1.tmp
H="http://127.0.0.1/control/message?nmsg="
D=`date +"%a, %d %b %Y %H:%M%%0A"`
D=`echo $D | $sed_bin -e s/\ /%20/g`
D=`echo $D | $sed_bin -e s/,/%2C/g`
S=`$sed_bin "s/\ /;/g" $tmpdir/dfinfo1.tmp`
S=`echo $S | $sed_bin s/\;\;\;/\;/g`
S=`echo $S | $sed_bin s/\;\;\;/\;/g`
S=`echo $S | $sed_bin s/\;\;\;/\;/g`
S=`echo $S | $sed_bin s/\;\;/\;/g`
S=`echo $S | $sed_bin -e s/%/%20%/g`
S=`echo $S | $sed_bin s/\;/%0ASize%3A%20/`
S=`echo $S | $sed_bin s/\;/%0AUsed%3A%20/`
S=`echo $S | $sed_bin s/\;/%0AAvailable%3A%20/`
S=`echo $S | $sed_bin s/\;/%0AUse%20%28in%20percent%29%3A%20/`
S=`echo $S | $sed_bin s/\;/%0AMounted%20on%3A%20/`

msg="$D"Filesystem%3A%20"$S"
wget -q -O /dev/null $H$msg

rm $tmpdir/*.tmp

exit 0 

Code: Alles auswählen

#/bin/sh

#################################################################
#  Script zum Anzeigen der vom FLI4L-Router geloggten Anrufe
#  (Telmond muss aktiviert sein!
#  Autor: tetzlav
#  last edit: 20/07/04 
#################################################################

#config
ip="192.168.2.2" #IP-Adresse des FLI4L-Routers
port="5000" #Imond-Port (default:5000, siehe "config/base.txt")
passwd="**********" #Imond-Passwort
admin_passwd="**********" #Imond-ADMIN-Passwort (wird gebraucht fuer /etc/phonebook)
tmpdir="/var/tmp" #Pfadangaben
sed_bin="/var/bin/busybox sed"
nc_bin="/var/bin/busybox nc"

#script
cd $tmpdir
date=`date +%Y%m%d`

{ echo "pass $passwd"; echo "telmond-log-file"; echo "quit"; } |
	$nc_bin $ip $port |
	$sed_bin 's/.$//; /^OK/ d; s/$/ /; s/ \+/;/g; s/\/\+//g;' > $tmpdir/0.tmp

if [ ! -f $tmpdir/phonebook ]
then
    { echo "pass $passwd"; echo "send /etc/phonebook $admin_passwd"; echo "quit"; } |
     	$nc_bin $ip $port |
     	$sed_bin '/^OK/d; /^ERR/d;' > $tmpdir/phonebook
fi

$sed_bin '/^#/d; /^[^=]*$/d; s/^/s|;/; s/=/;|;/; s/,[^,]*$//; s/$/;|g/' $tmpdir/phonebook > $tmpdir/sub.tmp
$sed_bin -f $tmpdir/sub.tmp $tmpdir/0.tmp > $tmpdir/1.tmp
echo "Anrufe%20in%20Abwesenheit%3A%0A%0A" > $tmpdir/2.tmp
grep $date $tmpdir/1.tmp | $sed_bin "s/^;$date//; s/;$/)%0A/; s/;/%20/; s/;/Uhr%3A%20/; s/;/%20(->/; s/:[0-9]\{2\}U/U/;" >> $tmpdir/2.tmp	
$sed_bin '$!{;H;d;};H;x;s/\n//g; s/:/%3A/g; s/ /%20/g;' $tmpdir/2.tmp > $tmpdir/3.tmp
wget -q -O /dev/null http://127.0.0.1/control/message?nmsg=`cat $tmpdir/3.tmp`
rm $tmpdir/*.tmp

exit 0
(alles noch etwas quick'n'dirty - bin für Optimierungen sehr dankbar! :))
tetzlav hat geschrieben:bei meiner Suche bin ich auf http://forum.tuxbox-cvs.sourceforge.net ... pt+starten gestoßen. Das Plugin lässt die Box aber leider abstürzen. Kann es sein das es mit dem aktuellen JtG-Snap (19.07.04) nicht mehr funktioniert?
könnte mir mal bitte jmd. das hier durch den Compiler jagen, sodaß es wieder mit aktuellen Images funktioniert, oder erklären warum das Plugin die Box zum abstürzen bringt? Ich kann leider nicht selber compilieren, wird mir zu teuer dafür das CDK über ISDN zu saugen... :-?

Viele Grüße
tetzlav
Edit: noch kleinere Tippfehler beseitigt :wink: