Re: bashscript und inetd
-Ursprüngliche Nachricht- Von: Andre Frimberger [mailto:[EMAIL PROTECTED] Gesendet: Dienstag, 1. April 2003 22:44 mach ich ein echo $username, geht alles... das verrückt dadran ist: USERNAME=HALO; PASSWORD=TEEET; echo $MOUNT_PATH -t smbfs -o username=$USERNAME,password=$PASSWORD -o ro -o debug=0 //$WINDOWS_COMPUTERNAME/$WINDOWS_SHARE $LOCAL_PATH; funktioniert. Aber kommen $username und $password von read, werden teile abgeschnitten ?!? ... ist irgendwie ziemlich wirr! (wehe es behauptet nochmal jemand Computer würden logisch sein ;-) ) Hallo Andre, Wenn man weiß, woran es liegt, ist auch wieder alles ganz logisch ;-) Wenn du das Script über inetd startest, kommen die Eingaben ja über TCP. Und hier werden für Zeilenumbrüche 0x0D 0x0A verwendet und nicht, wie unter UNIX üblich, nur 0x0A. Da die bash davon nix weiß, ließt sie beim read eben solange, bis ein 0x0A kommt, und packt das 0x0D mit in deine Variablen. Und da 0x0D ja Carriage Return heißt, fährt er beim echo den Cursor immer schön an den Anfang der Zeile zurück und überschreibt dort das bisher ausgegebene. Hänge doch mal ein | hexdump -C an dein echo hinten dran, dann siehst du, was ich meine. Eine schnelle Lösung mit bash-Boardmitteln wäre, die beiden Variablen nach dem read um das letzte Zeichen zu beschneiden: username=${username:0:${#username}-1} password=${password:0:${#password}-1} Leider funktioniert das dann nicht mehr im Terminal sondern nur noch per inetd. Aber es gibt sicher noch viele andere Wege, das Problem zu beseitigen/zu umgehen. Grüße Michael -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: bashscript und inetd
On Mit, 02 Apr 2003 at 09:35 (+0200), Michael Tuschik wrote: [\r in Variablen] Eine schnelle Lösung mit bash-Boardmitteln wäre, die beiden Variablen nach dem read um das letzte Zeichen zu beschneiden: username=${username:0:${#username}-1} password=${password:0:${#password}-1} Leider funktioniert das dann nicht mehr im Terminal sondern nur noch per inetd. Aber es gibt sicher noch viele andere Wege, das Problem zu beseitigen/zu umgehen. Wie wäre es mit: username=`echo $username | tr -d '\r'` password=`echo $password | tr -d '\r'` Dann funktioniert es in beiden Varianten. Jan -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
RE: bashscript und inetd
-Original Message- From: Frank Küster [mailto:[EMAIL PROTECTED] Sent: Monday, March 31, 2003 5:47 PM Andre Frimberger [EMAIL PROTECTED] schrieb: MOUNT_PATH=/bin/mount; ... echo -n Username: ; read username; echo -n password: ; read -s password; ... echo $MOUNT_PATH -t smbfs -o username=$username,password=$password -o ro -o debug=0 //$WINDOWS_COMPUTERNAME/$WINDOWS_SHARE $LOCAL_PATH; ... = auf der bash funktioniert das Skript, so wie's da steht. Das echo kommt natürlich weg, wenn die Ausgabe funktioniert Ich bin verwirrt. Wenn du es interaktiv aufrufst, dann fragt er dich als Aufrufenden nach Username und Passwort. Und wen soll er fragen, wenn das Skript über inetd aufgerufen wird? ... ich hab vergessen zu erwähnen, dass das Skript über telnet aufgerufen wird. also quasi so: telnet / | inetd / | bash-script = kannst du das Skript mal bei dir ausprobieren ? (also die variante mit dem inetd) Gruss André -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: bashscript und inetd
Andre Frimberger [EMAIL PROTECTED] schrieb: Ich bin verwirrt. Wenn du es interaktiv aufrufst, dann fragt er dich als Aufrufenden nach Username und Passwort. Und wen soll er fragen, wenn das Skript über inetd aufgerufen wird? ... ich hab vergessen zu erwähnen, dass das Skript über telnet aufgerufen wird. also quasi so: telnet / | inetd / | bash-script = kannst du das Skript mal bei dir ausprobieren ? (also die variante mit dem inetd) Ich wäre bereit das zu tun. Ich bin aber nicht bereit, mich in inetd und wasweisich einzulesen, damit ich weiß, wie der Eintrag in der inetd.conf aussehen muss. Also liefere doch bitte ein lauffähiges Skript und einen funktionierenden inetd.conf-Eintrag. Im übrigen zweifle ich immer noch daran, dass es so funktioniert. Meines Wissens stehen hinter dem inetd normalerweise Programme, die wissen, wie man Informationen übers Netz schickt. Das heisst es sind Dämonen, die man genauso einfach auf der Kommandozeile starten könnte und die auch dann nicht Eingaben und Ausgaben auf der Kommandozeile machen würden, sondern ins bzw. vom Netzwerk. Ich denke, das müsstest du deinem Skript beibringen. Aber vielleicht irre ich mich. Gruß, Frank -- Frank Küster, Biozentrum der Univ. Basel Abt. Biophysikalische Chemie -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
RE: bashscript und inetd
-Original Message- From: Frank Küster [mailto:[EMAIL PROTECTED] Sent: Tuesday, April 01, 2003 2:44 PM To: [EMAIL PROTECTED] Subject: Re: bashscript und inetd Andre Frimberger [EMAIL PROTECTED] schrieb: Ich bin verwirrt. Wenn du es interaktiv aufrufst, dann fragt er dich als Aufrufenden nach Username und Passwort. Und wen soll er fragen, wenn das Skript über inetd aufgerufen wird? ... ich hab vergessen zu erwähnen, dass das Skript über telnet aufgerufen wird. also quasi so: snip = kannst du das Skript mal bei dir ausprobieren ? (also die variante mit dem inetd) Ich wäre bereit das zu tun. Ich bin aber nicht bereit, mich in inetd und wasweisich einzulesen, damit ich weiß, wie der Eintrag in der inetd.conf ok ok ;) sorry, dachte du kennst dich soweit aus. Hier der Eintrag in die inetd.conf 12345 stream tcp nowait root /root/smbbackup smbbackup ^ ^ ^ ^^ ^ PortSockettyp | |Pfad_zum_Skript Argument Protokoll | User, unter dem das Skript aus- geführt wird. aussehen muss. Also liefere doch bitte ein lauffähiges Skript und einen funktionierenden inetd.conf-Eintrag. Skript: #!/bin/bash # # MOUNT_PATH=/bin/mount; WINDOWS_SHARE=test; WINDOWS_COMPUTERNAME=testcomputer; echo -e +++ Please enter Username and Password for configured Windows Share +++\n\r; echo -n Username: ; read username; echo -n password: ; read -s password; echo -e \r; echo -e +\r; echo -e mounting share now:\r; echo -e +\r; echo -e ; echo -e +\r echo -e Username: $username; echo -e Passwort: $password; echo $MOUNT_PATH -t smbfs -o username=$username,password=$password -o ro -o debug=0 //$WINDOWS_COMPUTERNAME/$WINDOWS_SHARE $LOCAL_PATH; Bis hierhin macht das Skript nichts anderes, als den Befehl auszugeben, der später eine Windows Freigabe mounten soll (für Backup). Im übrigen zweifle ich immer noch daran, dass es so funktioniert. Meines Wissens stehen hinter dem inetd normalerweise Programme, die wissen, wie man Informationen übers Netz schickt. Das heisst es sind Dämonen, die nein, darum kümmert sich imho der inetd. Der macht den ganzen kram, wie Verbindungsaufbau, usw. man genauso einfach auf der Kommandozeile starten könnte und die auch dann nicht Eingaben und Ausgaben auf der Kommandozeile machen würden, sondern ins bzw. vom Netzwerk. Ich denke, das müsstest du probiers einfach mal aus, dann wirst du sehen, dass es funktioniert... Erwartungsgemäß müsste er Username und Passwort noch ausgeben, aber den mount Befehl nicht mehr ganz. deinem Skript beibringen. Aber vielleicht irre ich mich. Gruss und Danke André Frimberger -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: bashscript und inetd
Andre Frimberger [EMAIL PROTECTED] schrieb: sorry, dachte du kennst dich soweit aus. Keine Ursache sich zu entschuldigen. Aber ich traue mir zwar zu, ein Shell-Skript zu debuggen, aber eben nicht den inetd.conf-Eintrag zu machen. echo $MOUNT_PATH -t smbfs -o username=$username,password=$password -o ro -o debug=0 //$WINDOWS_COMPUTERNAME/$WINDOWS_SHARE $LOCAL_PATH; [...] man genauso einfach auf der Kommandozeile starten könnte und die auch dann nicht Eingaben und Ausgaben auf der Kommandozeile machen würden, sondern ins bzw. vom Netzwerk. Ich denke, das müsstest du probiers einfach mal aus, dann wirst du sehen, dass es funktioniert... In der Tat, es funktioniert. Sehr schön. Erwartungsgemäß müsste er Username und Passwort noch ausgeben, aber den mount Befehl nicht mehr ganz. Das verstehe ich jetzt nicht - warum soll er etwa nicht ganz ausgeben? Jedenfalls solltest du mal die Zeile kürzen und dann schrittweise wieder aufbauen. Bis echo $MOUNT_PATH -t smbfs -o username= funktioniert alles bestens. Und dann siehst du (je nach Länge des Usernamens auch erst im Wort password=), wie er an einem virtuellen Zeilenende ankommt und, anstatt in die nächste Zeile zu hüpfen, den Anfang wieder überschreibt. Und das ist nun sicher kein Effekt von echo oder der bash, sondern entweder von inetd bzw. den zugrundeliegenden Mechanismen, oder vom Zusammenspiel von bash mit dem ungewöhnlichen Terminal, mit dem sie es zu tun hat. Gruß, Frank -- Frank Küster, Biozentrum der Univ. Basel Abt. Biophysikalische Chemie -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: bashscript und inetd
On Mon, Mar 31, 2003 at 04:43:01PM +0200, Andre Frimberger wrote: Andre Frimberger [EMAIL PROTECTED] schrieb: ich hab ein kleines bashscript geschrieben, das auf der shell einwandfrei funktioniert. Lass ich es aber per inetd aufrufen, funktioniert folgende Zeile nicht mehr (alles vor dem ersten -o wird abgeschnitten) Alles? inclusive echo? mh, nee... ne Ausgabe kommt :) echo $MOUNT_PATH -t smbfs -o username=$username,password=$password -o ro -o debug=0 //$WINDOWS_COMPUTERNAME/$WINDOWS_SHARE $LOCAL_PATH; Ist das Problem vielleicht, dass in der Shell diese Variablen definiert sind, nicht jedoch, wenn inetd es ausführt? Gruß Christian -- Christian Knoke * * * http://www.enter.de/~c.knoke/ * * * * * * * * * Ceterum censeo Microsoft esse dividendum. -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
RE: bashscript und inetd
-Original Message- From: Christian Knoke [mailto:[EMAIL PROTECTED] Sent: Tuesday, April 01, 2003 10:32 PM To: Andre Frimberger; [EMAIL PROTECTED] Subject: Re: bashscript und inetd On Mon, Mar 31, 2003 at 04:43:01PM +0200, Andre Frimberger wrote: Andre Frimberger [EMAIL PROTECTED] schrieb: ich hab ein kleines bashscript geschrieben, das auf der shell einwandfrei funktioniert. Lass ich es aber per inetd aufrufen, funktioniert folgende Zeile nicht mehr (alles vor dem ersten -o wird abgeschnitten) Alles? inclusive echo? mh, nee... ne Ausgabe kommt :) echo $MOUNT_PATH -t smbfs -o username=$username,password=$password -o ro -o debug=0 //$WINDOWS_COMPUTERNAME/$WINDOWS_SHARE $LOCAL_PATH; Ist das Problem vielleicht, dass in der Shell diese Variablen definiert sind, nicht jedoch, wenn inetd es ausführt? nein, eben nicht... mach ich ein echo $username, geht alles... das verrückt dadran ist: USERNAME=HALO; PASSWORD=TEEET; echo $MOUNT_PATH -t smbfs -o username=$USERNAME,password=$PASSWORD -o ro -o debug=0 //$WINDOWS_COMPUTERNAME/$WINDOWS_SHARE $LOCAL_PATH; funktioniert. Aber kommen $username und $password von read, werden teile abgeschnitten ?!? ... ist irgendwie ziemlich wirr! (wehe es behauptet nochmal jemand Computer würden logisch sein ;-) ) Gruss André Frimberger -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: bashscript und inetd
Andre Frimberger [EMAIL PROTECTED] schrieb: Hi, ich hab ein kleines bashscript geschrieben, das auf der shell einwandfrei funktioniert. Lass ich es aber per inetd aufrufen, funktioniert folgende Zeile nicht mehr (alles vor dem ersten -o wird abgeschnitten) Alles? inclusive echo? echo $MOUNT_PATH -t smbfs -o username=$username,password=$password -o ro -o debug=0 //$WINDOWS_COMPUTERNAME/$WINDOWS_SHARE $LOCAL_PATH; Die Zeilenumbrüche sind da so drin? Poste doch einfach mal das Skript, bzw. relevante Teile. Gruß, Frank -- Frank Küster, Biozentrum der Univ. Basel Abt. Biophysikalische Chemie -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
RE: bashscript und inetd
-Original Message- From: Frank Küster [mailto:[EMAIL PROTECTED] Sent: Monday, March 31, 2003 10:20 AM To: [EMAIL PROTECTED] Subject: Re: bashscript und inetd Andre Frimberger [EMAIL PROTECTED] schrieb: Hi, ich hab ein kleines bashscript geschrieben, das auf der shell einwandfrei funktioniert. Lass ich es aber per inetd aufrufen, funktioniert folgende Zeile nicht mehr (alles vor dem ersten -o wird abgeschnitten) Alles? inclusive echo? mh, nee... ne Ausgabe kommt :) echo $MOUNT_PATH -t smbfs -o username=$username,password=$password -o ro -o debug=0 //$WINDOWS_COMPUTERNAME/$WINDOWS_SHARE $LOCAL_PATH; Die Zeilenumbrüche sind da so drin? nein! steht alles in einer Zeile Poste doch einfach mal das Skript, bzw. relevante Teile. ... MOUNT_PATH=/bin/mount; ... echo -n Username: ; read username; echo -n password: ; read -s password; ... echo $MOUNT_PATH -t smbfs -o username=$username,password=$password -o ro -o debug=0 //$WINDOWS_COMPUTERNAME/$WINDOWS_SHARE $LOCAL_PATH; ... = auf der bash funktioniert das Skript, so wie's da steht. Das echo kommt natürlich weg, wenn die Ausgabe funktioniert Gruss und Danke André Frimberger -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)