Bash?
- feltel
- Webmaster
- Beiträge: 10476
- Registriert: 20.12.2001 13:08:23
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Leipzig, Germany
-
Kontaktdaten:
wie wärs mit
Code: Alles auswählen
echo "1" > /dev/ttyX
debianforum.de unterstützen? Hier! | debianforum.de Verhaltensregeln | Bitte keine Supportanfragen per PM
ne.. also folgendes....
ich hab ein Bash Programm, um wiederherstellen der daten. aber jede datei muss einzeln wiederhergestellt werden. und da wollt ich ein bash script schreiben, welches in einer do loop schleife die Tasten "s" und "pfeil runter" an die console, wo das programm läuft übergibt... versteht ihr was ich meine?
ich hab ein Bash Programm, um wiederherstellen der daten. aber jede datei muss einzeln wiederhergestellt werden. und da wollt ich ein bash script schreiben, welches in einer do loop schleife die Tasten "s" und "pfeil runter" an die console, wo das programm läuft übergibt... versteht ihr was ich meine?
- pdreker
- Beiträge: 8298
- Registriert: 29.07.2002 21:53:30
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Nürnberg
Wenn das die einzigen Tastendrücke sind, die das programm braucht kannst Du es so machen:
damit bekommt das Programm in endloser Folge "bla" gesendet.
Ansonsten ist Feltels Methode schon die richtige. Eingabe ist Eingabe, wenn sie unter UNIX über ein Terminal kommt. Egal ob Du die Tastatur drückst, oder es per Echo direkt in das Terminal schickts.
Nochmal deutlich: Dein Programm läuft auf /dev/tty1 (erste viruelle Konsole). Wenn Du jetzt auf die zweiten virtuellen Konsole gehst, und Du machst dann erscheint das Hallo! auf der erstenvirtuellen Konsole]. Wenn da eine Shell läuft, wird das auf dem Bildschirm angezeigt, weil die Shell halt alle Tastendrücke auf dem Bildschirm ausgibt. Wenn da ein Programm läuft, das auf irgendwelche Tastendrücke wartet, dann wird das Programm die Tastendrücke "H", "a", "l", "l", "o" und "!" sehen... (Das "-n" bei dem echo bewirkt, dass nach der Zeile kein CRLF gesendet wird.
Patrick
Code: Alles auswählen
yes bla | programm
Ansonsten ist Feltels Methode schon die richtige. Eingabe ist Eingabe, wenn sie unter UNIX über ein Terminal kommt. Egal ob Du die Tastatur drückst, oder es per Echo direkt in das Terminal schickts.
Nochmal deutlich: Dein Programm läuft auf /dev/tty1 (erste viruelle Konsole). Wenn Du jetzt auf die zweiten virtuellen Konsole gehst, und Du machst
Code: Alles auswählen
echo -n Hallo! > /dev/tty1
Patrick
Definitely not a bot...
Jabber: pdreker@debianforum.de
Jabber: pdreker@debianforum.de
- De Kus
- Beiträge: 167
- Registriert: 27.08.2002 14:32:24
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Pfalz
hehe
da musst du mal schauen, hba leider grad keien passend ascii tabelle gefunden, aber glaube man muss das zeichen 255 plus ein extra übergeben für die pfeitasten.
http://www.phanderson.com/C/ascii.html
hier die tabelle, also mit
solltest du ein cursor nach unten zeichen erhalten
http://www.phanderson.com/C/ascii.html
hier die tabelle, also mit
Code: Alles auswählen
\037
De Kus der Fehlerminator
Copyright (c) 2002-2005 De Kus
Love hurts, love strengthens ...
Copyright (c) 2002-2005 De Kus
Love hurts, love strengthens ...
- feltel
- Webmaster
- Beiträge: 10476
- Registriert: 20.12.2001 13:08:23
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Leipzig, Germany
-
Kontaktdaten:
x-bit nicht gesetzt.Neotux hat geschrieben:also erstmal danke...
aber ma noch ne ganz dumme frage... wie führe ich die bash scripte aus?
habs probiert mit ./bashscript.sh kommt aber sowohl beim std. User als auch beim Superuser:hab auch schon gegoogelt...bash: ./rescue.sh: /bin/sh: bad interpreter: Permission denied
Code: Alles auswählen
chmod ugo+x datei
debianforum.de unterstützen? Hier! | debianforum.de Verhaltensregeln | Bitte keine Supportanfragen per PM
- pdreker
- Beiträge: 8298
- Registriert: 29.07.2002 21:53:30
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Nürnberg
Die xterms (Konsole von KDE wenigstens) finden sich unter /dev/ptypX (wobei X eine Zahl ist!)
Patrick
Patrick
Definitely not a bot...
Jabber: pdreker@debianforum.de
Jabber: pdreker@debianforum.de
also ich weiss nicht... irgendwie gehts nich... liegt der fehler bei mir oder hast du dich vertippt?
also ich hab geschrieben:
also ich hab geschrieben:
Code: Alles auswählen
#!/bin/sh
echo -n s > /dev/ptyp1
- pdreker
- Beiträge: 8298
- Registriert: 29.07.2002 21:53:30
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Nürnberg
Hab mich zwar nicht vertippt, war aber trotzdem falsch
/dev/ttypX sollte es sein...
Patrick
/dev/ttypX sollte es sein...
Patrick
Definitely not a bot...
Jabber: pdreker@debianforum.de
Jabber: pdreker@debianforum.de
hey...
ich hab das jetzt in ttyp1 umgeändert... da kommt folgendes:
ich hab das jetzt in ttyp1 umgeändert... da kommt folgendes:
Code: Alles auswählen
./rescue.sh: /dev/ttyp1: Input/output error
- pdreker
- Beiträge: 8298
- Registriert: 29.07.2002 21:53:30
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Nürnberg
Öffne 'mal die Shell deines Vertrauens unter X und mach dann "lsof|grep Shellname", da sollte das richtige Device bei sein. (Notfalls apt-get install lsof, das sollte eh immer parat haben)
(Bei mir funktioniert's...)
Patrick
(Bei mir funktioniert's...)
Patrick
Definitely not a bot...
Jabber: pdreker@debianforum.de
Jabber: pdreker@debianforum.de
- pdreker
- Beiträge: 8298
- Registriert: 29.07.2002 21:53:30
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Nürnberg
lsof|grep bash (falls bash Deine Shell ist... ich meinte nicht xterm oder so, sorry war unklar ausgedrückt...)
Die Shell sollte irgendein /dev offen haben, das ist normalerweise das Terminal...
Patrick
Die Shell sollte irgendein /dev offen haben, das ist normalerweise das Terminal...
Patrick
Definitely not a bot...
Jabber: pdreker@debianforum.de
Jabber: pdreker@debianforum.de
Hi Leute,
kann es sein, dass ihr fürchterlich aneinander vorbeiredet?
@neotux: Beschreibe noch einmal (mit konkretem Beispiel), was Du vorhast. Was meinst Du mit "einzeln rekonstruieren", wenn Du doch jede Datei mit "s" bestätigen willst?
Dann wollt ihr die Ausgabe von einem tty auf ein anderes umlenken. Schön und gut und kein Problem, aber damit wird diese ZK noch lange nicht als stdin von dem dort laufenden Programm benutzt. Ich habe das zwar nicht in der bash getestet, aber ich kenne keine shell, die sich so verhält. Lässt sich leicht testen, könnte ich aber erst heute abend.
Beispiel:
(1. tty : /dev/ttyp5)
read ein
(2.tty)
echo hallo >/dev/ttyp5
(1. tty)
- "hallo" sollte zu sehen sein, shell prompt ist aber nicht da (oder?)
<Enter>
echo $ein
--> ein ist leer (oder?)
Kurz und gut, ich denke, was Du vorhast, lässt sich ganz simpel ohne Klimmzüge lösen, aber was hast Du genau vor?
kann es sein, dass ihr fürchterlich aneinander vorbeiredet?
@neotux: Beschreibe noch einmal (mit konkretem Beispiel), was Du vorhast. Was meinst Du mit "einzeln rekonstruieren", wenn Du doch jede Datei mit "s" bestätigen willst?
Dann wollt ihr die Ausgabe von einem tty auf ein anderes umlenken. Schön und gut und kein Problem, aber damit wird diese ZK noch lange nicht als stdin von dem dort laufenden Programm benutzt. Ich habe das zwar nicht in der bash getestet, aber ich kenne keine shell, die sich so verhält. Lässt sich leicht testen, könnte ich aber erst heute abend.
Beispiel:
(1. tty : /dev/ttyp5)
read ein
(2.tty)
echo hallo >/dev/ttyp5
(1. tty)
- "hallo" sollte zu sehen sein, shell prompt ist aber nicht da (oder?)
<Enter>
echo $ein
--> ein ist leer (oder?)
Kurz und gut, ich denke, was Du vorhast, lässt sich ganz simpel ohne Klimmzüge lösen, aber was hast Du genau vor?
Gruß
ernohl
ernohl
hi...
also
@try:
ich verwende eterm und hab natürlich schon versucht bash durch eterm zu ersetzen, aber ohne erfolg.
@ernohl:
erstma fand ich dienen einwurf gut, weil ich auch das gefühl hatte, an den anderen vorbei zu reden.
ich hatte das thema ja schonmal gepostet, leider hat mi da niemand geantwortet, und deshalb dachte ich, es wüsste keiner uind hab es nich weiter geschildert.
aber nochmal
ich hab ein dateirecover Programm für das extFilesystem. Leider ist es so, das man damit keine vereichnisse wiederherstellen kann, sondern nur einzelne datein.
da ich 8,8GB verloren hab, hab ich mir gedacht, das es sich doch wohl eher müsam gestaltet, die alle von hand zu retten. (arbeisschritte: "s" für sichern der datei drücken, dann pfeil nach unten um zur nächsten zu gelangen, wieder "s"...) und ich hatte vor diese Tastenkombination in einer beinahe endlosschleife an das Programm(undelete) zu übergeben.
(undelete hab ich mal gescreenshotet, und es auf meinen server gestellt, also iss das bild nur so lange erreichbar, bis ich reboote, also vorausichtlich heut abend.)
[img]80.135.234.55/undelete.png[/img]
*gruss* Neotux
also
@try:
ich verwende eterm und hab natürlich schon versucht bash durch eterm zu ersetzen, aber ohne erfolg.
@ernohl:
erstma fand ich dienen einwurf gut, weil ich auch das gefühl hatte, an den anderen vorbei zu reden.
ich hatte das thema ja schonmal gepostet, leider hat mi da niemand geantwortet, und deshalb dachte ich, es wüsste keiner uind hab es nich weiter geschildert.
aber nochmal
ich hab ein dateirecover Programm für das extFilesystem. Leider ist es so, das man damit keine vereichnisse wiederherstellen kann, sondern nur einzelne datein.
da ich 8,8GB verloren hab, hab ich mir gedacht, das es sich doch wohl eher müsam gestaltet, die alle von hand zu retten. (arbeisschritte: "s" für sichern der datei drücken, dann pfeil nach unten um zur nächsten zu gelangen, wieder "s"...) und ich hatte vor diese Tastenkombination in einer beinahe endlosschleife an das Programm(undelete) zu übergeben.
(undelete hab ich mal gescreenshotet, und es auf meinen server gestellt, also iss das bild nur so lange erreichbar, bis ich reboote, also vorausichtlich heut abend.)
[img]80.135.234.55/undelete.png[/img]
*gruss* Neotux
Ok., am besten wäre es natürlich, Du findest eine Möglichkeit, Dein recover-Programm nicht interaktiv zu starten.
Wenn das nicht möglich ist, dann versuche das Programm (ungetestet) etwa so zu starten:
recoverprog < <deininputfile>
Nun erzeugst Du die Datei <deininputfile> mit genau den gewünschten Tastenkombinationen ('s', Pfeiltaste). Denke daran, dass eine neue Zeile ein <Return> bedeutet. Ganz unelegant erzeugst Du einfach entsprechende viele (nach der Anzahl der zu rekonstruierenden Dateien) Einträge.
Etwas eleganter wäre es, irgendwie mit einer named pipe zu arbeiten, die Du parallel in einer Schleife fütterst. Ich will mich aber ohne praktischen Test jetzt nicht zu weit aus dem Fenster lehnen...
Wenn das nicht möglich ist, dann versuche das Programm (ungetestet) etwa so zu starten:
recoverprog < <deininputfile>
Nun erzeugst Du die Datei <deininputfile> mit genau den gewünschten Tastenkombinationen ('s', Pfeiltaste). Denke daran, dass eine neue Zeile ein <Return> bedeutet. Ganz unelegant erzeugst Du einfach entsprechende viele (nach der Anzahl der zu rekonstruierenden Dateien) Einträge.
Etwas eleganter wäre es, irgendwie mit einer named pipe zu arbeiten, die Du parallel in einer Schleife fütterst. Ich will mich aber ohne praktischen Test jetzt nicht zu weit aus dem Fenster lehnen...
Gruß
ernohl
ernohl