• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Linux Befehle mit CGI ausführen - was: Linux Befehle mit JavaScript ausführen

Das ist die Ausgabe:

Code:
MemTotal: 14244 kB
MemFree: 8040 kB
Buffers: 0 kB
Cached: 948 kB
SwapCached: 0 kB
Active: 600 kB
Inactive: 348 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 14244 kB
LowFree: 8040 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 0 kB
Writeback: 0 kB

mit diesem Shellskript:

Code:
cd /proc
  grep -h -e '.*: *[0-9]\+ kB' cat meminfo | while read LINE
  do
  echo "<tr><td>$LINE</tr></td>"
  done
  echo "</table>"
definitiv nicht.
ich sehe in der ausgabe keine <tr><td>.

du meinst die ausgabe im Browser?! das kann sein, die Fehlermeldung wegen dem cat kommt in stderr.
gehe mal auf deinem zielsystem ins cgi-bin direktory und tippe mal ./deinDateiName.sh in die shell. dann dürftest du die fehlermeldung sehen.

dann geht also dein -h doch. das hattest du wohl mal rausgeschmissen. du kannst das cat also weglassen.
 
Ich möchte gern noch den Befehl "ps" einbinden. In der Konsole liefert er folgende Ausgabe:

Code:
/proc # ps
  PID  Uid     VmSize Stat Command
    1 root            SW  /bin/init 
    2 root            SWN [ksoftirqd/0]
    3 root            SW  [watchdog/0]
    4 root            SW< [events/0]
    5 root            SW< [khelper]
    6 root            SW< [kthread]
    7 root            SW< [kblockd/0]
    8 root            SW  [pdflush]
    9 root            SW  [pdflush]
   11 root            SW< [aio/0]
   10 root            SW  [kswapd0]
   12 root            SW  [mtdblockd]
   13 root            SWN [jffs2_gcd_mtd3]
   18 root            SW  /bin/inetd 
   23 root            SW  /bin/mb_tcp 
   22 root            SW< [KbusThread]
   24 root            SW  boa -c /etc/boa 
   30 root            SW  /sbin/getty -L ttyS0 38400 
   29 root            RW  [IOCheck-Thread]
   31 root            SW  /sbin/getty -L ttyS1 38400 
  922 root            SW  /bin/ftpd -l 
  923 root            SW  /bin/ftpd -l 
 1001 root            SW  /bin/telnetd 
 1002 root            SW  -sh 
 1054 root            SW  /bin/ftpd -l 
 1365 root            RW  ps 
/proc # cd /var/www/cgi-bin/

Wenn ich ihn so einbinde:
Code:
cd /proc
  grep -h -e '.*: *[0-9]' ps | while read LINE
  do
  echo "<tr><td>$LINE</tr></td>"
  done
kommt keine Ausgabe.

Bei "cat modules" klappen die Zeilenumbrüche nicht:
Code:
/proc # cat modules
iocheck 24922 0 - Live 0x00d98000
kbus 212728 3 iocheck, Live 0x00c40000
/proc #
Bei "mtd" klappen aber die Zeilenumbrüche:
Code:
  echo "<table border>"
  echo "<tr>"
  echo "<th>Partionierung Flash</th>"
  echo "</tr>"
  cd /proc
  grep -h -e '.*: *[0-9]' cat mtd | while read LINE
  do
  echo "<tr><td>$LINE</tr></td>"
  done
  echo "</table>"

Bei dem Befehl "cat cpuinfo" wird nicht alles ausgegeben:
Code:
  echo "<table border>"
  echo "<tr>"
  echo "<th>Partionierung Flash</th>"
  echo "</tr>"
  cd /proc
  grep -h -e '.*: *[0-9]' cat mtd | while read LINE
  do
  echo "<tr><td>$LINE</tr></td>"
  done
  echo "</table>"

Webseite liefert:
Code:
BogoMIPS : 20.35
CPU implementer : 0x41
CPU architecture: 3
CPU variant : 0x00
CPU part : 0x770
CPU revision : 0
Revision : 0000
Serial : 0000000000000000

Verstehe nicht warum da ein paar Zeilen fehlen.

Danke für Deine Hilfe!
 
Verstehe nicht warum da ein paar Zeilen fehlen.
Jetzt müßte halt so langsam mal das Verständnis des Codes einsetzen. Zumal man die einzelnen Befehle wunderbar in der Shell absetzen kann und sofort sieht, was sie tun - oder eben nicht tun.

Aber z.B. ein "cd /proc" `bindet´ nichts ein, außerdem scheint mir, dass Du den Unterschied zwischen Datei und Programm noch nicht so wirklich verinnerlicht hast.
 
Ich möchte gern noch den Befehl "ps" einbinden. In der Konsole liefert er folgende Ausgabe:
die du an grep weiterleiten mußt mit hilfe einer pipe, also
ps | grep -h -e 'ein RegEx'
und nicht
grep -h -e 'ein RegEx' ps
das ist das gleiche wie bei
grep -h -e 'ein RegEx' cat meminfo
das geht auch nicht für cat, nur das du hier noch die eigentliche datei in der liste hat, welche ein ergebniss liefert, meminfo. du willst aber den output von ps an grep als input übergeben.
dann ist grep ein tool, welches in einer datei nach etwas sucht. in dem 1. fall in der datei meminfo nach dem regulärem ausdruck '.*: *[0-9]' also "0 oder beliebig viele beliebige Zeichen gefolgt von einem : dann 0 oder beliebig viele leerzeichen und noch eine ziffer". das ist nicht gerade der output von ps. aber der inhalt von meminfo.

Bei "cat modules" klappen die Zeilenumbrüche nicht:
du weißt aber wie du mit hilfe von tags HTML syntax schreibt? in HTML mußt du Zeilenumbrüche mit HTML-tags erzeugen
SELFHTML: HTML/XHTML / Allgemeine Regeln für HTML / Textauszeichnung
ich habe meminfo beispiel eine tabelle erzeugt.

Bei "mtd" klappen aber die Zeilenumbrüche:
hier ist mit grep das cat wieder zuviel. aber der regex passt auch nur so halb (reiner zufall). prinzipiell kannst du alle befehlsoutputs mit

Code:
  echo "<table>"
  cat mtd | while read LINE
  do
    echo "<tr><td>$LINE</tr></td>"
  done
  echo "</table>"
ausgeben. willst du dann noch filtern, kannst du grep benutzen und über weitere shellbefehle die ausgabe umformatieren.

Bei dem Befehl "cat cpuinfo" wird nicht alles ausgegeben:
ja, wieder weil der regex nicht passt. der matcht nur die zeilen, wo nach dem : eine Ziffer nach dem leerzeichen steht.

das ist aber kein linuxforum hier. du solltest dich mit den befehlen dort erst mal beschäftigen, ehe du mit deren Hilfe html output erzeugen willst.
 
Zuletzt bearbeitet:
Hallo Snowy,

ich bin neu in disem Forum ,habe aber das gleiche Problem wie diese was du gelöst hast .Ich will den inhalt von eine Devices die ich selbst mit Hilfe meines Moduls erzeugzt habe und mit "echo >"etwas drin geschrieben habe lesen und auf einem html Seite anzeigen lassen.Aber ich verstehe nicht warum es nicht klappt.Sobald ich mein Modul lade ,wird den device erzeugt und zwar in dem Verzeichnis "/dev/",danach schreibe ich mit echo etwas rein ZB: echo 3 > /dev/d_in . Mit ein Cat /dev/d_in kriege ich auf dem Konsol 3, Aber wenn ich jetzt diese Cat Befehl in Shel-Skript schreibe klappt nicht mehr,aber komischewiese kriege ich genauso den Inhalt von "slabinfo" angezeigt .Könnte mir Jemand vielleicht helfen ,es wäre sehr nett.

Ich danke Ihnen im Voraus
 
Hallo Snowy,

ich bin neu in disem Forum ,habe aber das gleiche Problem wie diese was du gelöst hast .Ich will den inhalt von eine Devices die ich selbst mit Hilfe meines Moduls erzeugzt habe und mit "echo >"etwas drin geschrieben habe lesen und auf einem html Seite anzeigen lassen.Aber ich verstehe nicht warum es nicht klappt.Sobald ich mein Modul lade ,wird den device erzeugt und zwar in dem Verzeichnis "/dev/",danach schreibe ich mit echo etwas rein ZB: echo 3 > /dev/d_in . Mit ein Cat /dev/d_in kriege ich auf dem Konsol 3, Aber wenn ich jetzt diese Cat Befehl in Shel-Skript schreibe klappt nicht mehr,aber komischewiese kriege ich genauso den Inhalt von "slabinfo" angezeigt .Könnte mir Jemand vielleicht helfen ,es wäre sehr nett.

So sieht mein Skript Code aus:

#!/bin/sh
echo "Content-type: text/html"
echo
echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">"
echo "<html>"
echo " <head>"
echo " <title>test</title>"
echo " </head>"
echo " <body bgcolor="#E0E0E0">"
echo " <h1>Test</h1>"

echo " <form action="http://192.168.1.9/cgi-bin/steuerung_mit_zahl.sh" method="post">"
echo " <table>"
cd /dev/
grep -h cat d_in | while read LINE
do
echo "<tr><td>$LINE</tr></td>"
done
echo "</table>"

echo " </form>"
echo " </body>"
echo "</html>"

Ich danke Ihnen im Voraus

mfG
Denis
 
Zurück
Oben