Bash?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Benutzeravatar
pdreker
Beiträge: 8298
Registriert: 29.07.2002 21:53:30
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Nürnberg

Beitrag von pdreker » 01.10.2002 19:46:47

Hab mich zwar nicht vertippt, war aber trotzdem falsch ;-)

/dev/ttypX sollte es sein...

Patrick
Definitely not a bot...
Jabber: pdreker@debianforum.de

Benutzeravatar
Neotux
Beiträge: 265
Registriert: 01.07.2002 13:51:21
Wohnort: Leipzig
Kontaktdaten:

Beitrag von Neotux » 01.10.2002 20:14:15

hey...
ich hab das jetzt in ttyp1 umgeändert... da kommt folgendes:

Code: Alles auswählen

./rescue.sh: /dev/ttyp1: Input/output error

Benutzeravatar
pdreker
Beiträge: 8298
Registriert: 29.07.2002 21:53:30
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Nürnberg

Beitrag von pdreker » 01.10.2002 20:22:21

Ö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
Definitely not a bot...
Jabber: pdreker@debianforum.de

Benutzeravatar
Neotux
Beiträge: 265
Registriert: 01.07.2002 13:51:21
Wohnort: Leipzig
Kontaktdaten:

Beitrag von Neotux » 01.10.2002 22:03:43

hi,
also lsof hab ich installiert und hab auch "lsof|grep Shellname" eingegeben. aber irgendwie rüht sich nix.. also der springt einfach in die nächste Zeile ohne ausgabe

Benutzeravatar
pdreker
Beiträge: 8298
Registriert: 29.07.2002 21:53:30
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Nürnberg

Beitrag von pdreker » 01.10.2002 22:08:48

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
Definitely not a bot...
Jabber: pdreker@debianforum.de

Benutzeravatar
abi
Beiträge: 2218
Registriert: 20.12.2001 19:42:56
Wohnort: München
Kontaktdaten:

Beitrag von abi » 01.10.2002 22:09:25

Shellname sollte ja auch gegen den namen der shell ersetzt werden denk ich ;)

Benutzeravatar
abi
Beiträge: 2218
Registriert: 20.12.2001 19:42:56
Wohnort: München
Kontaktdaten:

Beitrag von abi » 01.10.2002 22:09:52

schon wieder ... 8O 8O 8O 8O

ernohl
Beiträge: 1181
Registriert: 04.07.2002 08:11:56
Wohnort: HL

Beitrag von ernohl » 02.10.2002 09:32:23

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?
Gruß
ernohl

Benutzeravatar
Neotux
Beiträge: 265
Registriert: 01.07.2002 13:51:21
Wohnort: Leipzig
Kontaktdaten:

Beitrag von Neotux » 02.10.2002 16:26:29

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

ernohl
Beiträge: 1181
Registriert: 04.07.2002 08:11:56
Wohnort: HL

Beitrag von ernohl » 02.10.2002 16:59:05

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... :wink:
Gruß
ernohl

Benutzeravatar
Neotux
Beiträge: 265
Registriert: 01.07.2002 13:51:21
Wohnort: Leipzig
Kontaktdaten:

Beitrag von Neotux » 02.10.2002 18:19:42

blos mal sone zwischenfrage, kann mir vielleicht jemand ein anderes Recovery Programm fürs ext2 empfehlen?

Benutzeravatar
Neotux
Beiträge: 265
Registriert: 01.07.2002 13:51:21
Wohnort: Leipzig
Kontaktdaten:

Beitrag von Neotux » 03.10.2002 19:55:40

na gut, wenn hierauf keiner antwortet, dann doch die alternative...
also für das programm geb ich normalerweisse folgenden aufruf durch "./undelete -d /dev/hdb3 -a 3000"
und wenn ich das mit den tasten übergeben machen will, muss ich das dann so machen, ja? :

Code: Alles auswählen

./undelete -d /dev/hdb3 -a 3000 < steuerung
und in die datei steuerung dann:
s \037
und wie mach ich eine schleife??? am besten endlos...

ernohl
Beiträge: 1181
Registriert: 04.07.2002 08:11:56
Wohnort: HL

Beitrag von ernohl » 03.10.2002 20:19:30

Neotux hat geschrieben:

Code: Alles auswählen

./undelete -d /dev/hdb3 -a 3000 < steuerung
und in die datei steuerung dann:
s \037
und wie mach ich eine schleife??? am besten endlos...

Code: Alles auswählen

while true
do
echo [-n] <deine_steuerung> 
done | ./undelete -d /dev/hdb3 -a 3000 
Gruß
ernohl

Benutzeravatar
Neotux
Beiträge: 265
Registriert: 01.07.2002 13:51:21
Wohnort: Leipzig
Kontaktdaten:

Beitrag von Neotux » 03.10.2002 22:43:15

hm... aber wird da nich immer wieder das Programm gestartet?

ernohl
Beiträge: 1181
Registriert: 04.07.2002 08:11:56
Wohnort: HL

Beitrag von ernohl » 03.10.2002 23:03:09

Neotux hat geschrieben:hm... aber wird da nich immer wieder das Programm gestartet?
Kommt darauf an, was Du siehst. Ich traue seit dem Umzug dem Forum noch mehr ganz (sorry feltel). Ich bekomme z.B. oft Benachrichtigungen zu neuen Antworten per mail, aber im Forum finde ich sie dann erst später. :cry:
Ich kann auch jetzt nicht erkennen, dass ich diesen Beitrag mal editiert habe. Von den teilweise immer noch doppelt kommenden Benachrichtigungsmails ganz zu schweigen.

Ich hatte mein posting kurze Zeit falsch dastehen, habe es dann korrigiert. Wenn die pipe hinter dem "done" steht, sollte es nur einmal aufgerufen werden. Dann werden die in der Schleife erzeugten Zeichen über die pipe an die Standardeingabe des nur einmal gestarteten undelete übergeben.
Gruß
ernohl

Benutzeravatar
De Kus
Beiträge: 167
Registriert: 27.08.2002 14:32:24
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Pfalz

Beitrag von De Kus » 04.10.2002 17:41:33

nur als kleine info zu deinem "s \037". wenn du das in eine datei schreibst würde er höchstwahrscheinlich als zeichen: "s<leerzeichen><blackslash>037" einlesen, besser du öffnest sie mit einem hexeditor und schreibst "731F" rein.
De Kus der Fehlerminator
Copyright (c) 2002-2005 De Kus

Love hurts, love strengthens ...

Benutzeravatar
Neotux
Beiträge: 265
Registriert: 01.07.2002 13:51:21
Wohnort: Leipzig
Kontaktdaten:

Beitrag von Neotux » 10.10.2002 18:15:05

hi...
also ich hab das script jetzt "geschrieben" und ausprobiert...
#!/bin/sh
while true
do
echo s //gleich darauf im hexeditor wurde 1F eingefügt, zeigt er nur nicht an...
done | ./undelete -d /dev/hda3 -a 3000
und im Programm sagt er mir:
key Pressed: 37
key Pressed: 12

kann mir jemand sagen, was das für tasten sind?

ernohl
Beiträge: 1181
Registriert: 04.07.2002 08:11:56
Wohnort: HL

Beitrag von ernohl » 11.10.2002 16:13:00

Neotux hat geschrieben:und im Programm sagt er mir:
key Pressed: 37
key Pressed: 12

kann mir jemand sagen, was das für tasten sind?
Oktal 37 = dezimal 31 = hexadezimal 1F = ascii "1"
Oktal 12 = dezimal 10 = hexadezimal 0A = <newline>

Die Taste "Pfeil nach unten" erzeugt sicherlich auch nur einen scancode und represäsentiert keinen ASCII-Code. ich habe allerdings keine Ahnung, ob und wie man das ins kommando schreibt.
Am ehesten noch über tput (sitze aber gerade nicht an 'ner Linux-Kiste). Deine echo Zeile würde dann ungefähr so aussehen:



Code: Alles auswählen

echo -n "s" ; tput cud1
Gruß
ernohl

Benutzeravatar
Neotux
Beiträge: 265
Registriert: 01.07.2002 13:51:21
Wohnort: Leipzig
Kontaktdaten:

Beitrag von Neotux » 11.10.2002 18:14:42

hey! geil!!! :D :D :D das jetzt gehts!
Danke Leute!!!

Antworten