rar nimmt keine Eingabe durch eine pipe entgegen

Wieder mal ein kleines bash-Problem.

Folgendes Script soll in einem Verzeichnis alle rar-Archive mit dem vorgegebenen Passwort "passwort" entpacken:

Code:
for file in `ls *rar`
do
	passwort | rar e $file.rar
	#"passwort" | rar e $file.rar
	#echo "passwort" | rar e $file.rar
done
sleep 99

Leider scheint rar das Passwort nicht annehmen zu wollen, trotz der pipe, werde ich nach einem Passwort gefragt. Mach ich da was falsch oder liegt es an rar, dass die pipe nicht funktioniert? Und wie könnte ich das ohne pipe hinbekommen?

PS: Es ist die kommerzielle rar-Version
 
Ich vermute, dass das an rar selbst liegt. Ich könnte mir denken, dass es Daten von der Standardeingabe lesen kann (mit - als Dateinamen), aber bestimmt keine Passwörter. In deinem Beispiel ist die dritte Version mit echo die einzige, die überhaupt funktionieren kann, weil sonst "passwort" als Befehl interpretiert würde.

Eventuell gibt es eine Option wie -pPasswort o.Ä., mein unrar (V3.70 Beta 3 Freeware) hat das.
 
Auch die Version mit 'echo' wird nicht funktionieren, da echo auf stdout und nicht auf stdin ausgegeben wird. Hier ist mal wieder 'expect' gefragt, über das man dann das Passwort an rar übergeben kann.
 
Weil das zwei unterschiedliche Paar Schuhe sind. 'less' kann direkt aus der Pipe lesen. Das wäre also vergleichbar mit 'cat meinedatei.rar | unrar e'. Das Pipe wird aber unterbrochen, wenn 'rar/unrar' einen Output gibt (in diesem Fall 'Password: ') und daraufhin versucht von stdin zu lesen.
 
Dumme Frage aber warum übergibts du rar das Passwort über eine Pipe wenn man es auch mit einem Parameter übergeben kann? ?(
rar x -pPASSWORT $file.rar
 
Original von 2Bios
Dumme Frage aber warum übergibts du rar das Passwort über eine Pipe wenn man es auch mit einem Parameter übergeben kann? ?(
rar x -pPASSWORT $file.rar

Weil:

Code:
-p<password>
              Encrypt  files  with  the  string  <password>  as password while
              archiving.  The password is  case-sensitive.  If  you  omit  the
              password  on the command line, you will be prompted with message
              "Enter password".
 
Schonmal hiermit versucht?


$ unrar x -p8cjc8300028dkvhsw9sdki Ein\ Herz\ für\ Satanisten.bmp.rar /tmp/

UNRAR 3.70 beta 7 freeware Copyright (c) 1993-2007 Alexander Roshal


Extracting from Ein Herz für Satanisten.bmp.rar

Extracting /tmp/Ein Herz für Satanisten.bmp OK
All OK
$
 
Mal als Hinweis für den OP: "unrar"

Da geht das mit -p auch und dort wird dich die hilfe wohl auch nicht so verwirren, dass das Passwort nur fürs ver- und nicht fürs entschlüsseln ist.

/edit: Die Hilfe ist nicht dumm, nur ist das bei den Commandline-Tools, so wie ich bisher festgestellt habe, immer ein $packer und un$packer (rar-unrar, zip-unzip, gzip-gunzip, bzip2-bunzip2). Sollte man sich dafür vllt mal merken.
Warum rar auch entpacken kann weiss ich nicht, aber die andern können das nicht, da ist $packer immer zum packen und un$packer immer zum entpacken.
 
Original von lookshe
Warum rar auch entpacken kann weiss ich nicht, aber die andern können das nicht, da ist $packer immer zum packen und un$packer immer zum entpacken.

Das ist so nicht ganz richtig. Die meisten anderen können das auch 'gzip'->'gzip -d', 'bzip2'->'bzip2 -d'. Lediglich 'zip' stellt eine Ausnahme dar. Da wäre mir jetzt spontan kein Parameter zum Entpacken bekannt.
 
Zurück
Oben