Lieber Besucher, herzlich willkommen bei: Linux Forum Linux-Web.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.
Benutzerinformationen überspringen
Prof. Dr. Schlaumeier
Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)
Zitat
Original von ENTARO
Durch euer Forum habe ich herausgefunden, dass ein echo nur mit dem Anhang "> /dev/console" ausgegeben wird,
Zitat
nur wie funktioniert dies mit read?
Benutzerinformationen überspringen
Prof. Dr. Schlaumeier
Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)
Benutzerinformationen überspringen
Prof. Dr. Schlaumeier
Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)
Quellcode |
|
1 2 3 |
#!/bin/sh read a echo "Da isser $a" |
Benutzerinformationen überspringen
Prof. Dr. Schlaumeier
Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)
Zitat
root@satellit:/home/frank# ls -al /tmp/rohr
prwxrwxrwx 1 root root 0 2006-02-08 10:42 /tmp/rohr
root@satellit:/home/frank#
Quellcode |
|
1 2 3 4 5 6 7 8 |
#!/bin/sh # begrüßungstext in die pipe schieben und warten bis abgeholt wird echo "gib bitte den wert ein:" > /tmp/rohr # eingabewert des clienten aus der pipe lesen und read übergeben read WERT < /tmp/rohr # ergebnisinformation an den clienten senden echo "WERT= $WERT" > /tmp/rohr #.... so und jetzt mach ich mit der variable lauter blöde sachen ..... |
Quellcode |
|
1 2 3 4 5 6 7 8 9 |
#!/bin/sh # abholen der begrüßung aus der pipe cat < /tmp/rohr einlesen einer usereingabe in WERT read WERT # ausgabe von WERT in die pipe echo $WERT > /tmp/rohr # auslesen der antwort cat < /tmp/rohr |
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »linuxerr« (08.02.2006, 11:08)
Benutzerinformationen überspringen
Prof. Dr. Schlaumeier
Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »linuxerr« (08.02.2006, 12:30)
Benutzerinformationen überspringen
Prof. Dr. Schlaumeier
Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)
Benutzerinformationen überspringen
Prof. Dr. Schlaumeier
Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 |
# funktion stickmessage holt zuerst aus der pipe den befehl ab, führt ihn aus # und schickt das ergebnis in die pipe zurück stickmessage(){ BEFEHL=$( cat < /tmp/rohr ) WAHL=$( $BEFEHL ) echo $WAHL > /tmp/rohr } # mit trap wird festgelegt, dass die funktion bei signal 32 gestartet wird trap stickmessage 32 |
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
#!/bin/sh # server-script # welcher user soll auf tty informiert werden USER=frank # dateiname der pipe PIPENAME=/tmp/rohr # festgelegter signalhandler SIGNAL=32 # welche bschs hat der user offen? BASHLISTE=$( pgrep -u${USER} -d" " bash ) BASHPID="" for BPID in ${BASHLISTE} do # zaehlt die zeilen in der liste der kindprozesse KINDPROZESSE=$( pgrep -l -u${USER} -P ${BPID} | wc -l ) # ist es eine bash ohne gestarteten kindprozess? (freie konsole) if [ "$KINDPROZESSE" == "0" ]; then # ja, pid speichern und suche beenden BASHPID=$BPID break else # nein, die konsole ist belegt, aber trotzden erstmal merken und weitersuchen BASHPID=$BPID fi done # wurde eine bash gefunden? if [ "${BASHPID}" != "0" ]; then # ja, pipe für den user freigeben chown ${USER}.root ${PIPENAME} chmod 660 ${PIPENAME} # befehl zusammenbauen, der beim user auf der konsole ausgeführt wird BEFEHL="dialog --stdout --menu hallo 20 30 10 1 hallo 2 hier 3 nein" # signalhandler an die bash des users zum start des klienten schicken kill -32 ${BASHPID} # befehl in die pipe senden (client holt den inhalt ab und führt ihn aus echo "$BEFEHL" > /tmp/rohr #auf die antwort warten read WERT < /tmp/rohr # antwort gelesen und bearbeiten echo $WERT else echo "Der user ${USER} ist nicht eingelogt!" fi |
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »linuxerr« (10.02.2006, 19:24)