Re: bashscript und inetd

2003-04-02 Diskussionsfäden Michael Tuschik

 -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

2003-04-02 Diskussionsfäden Andre Frimberger


 -Original Message-
 From: Michael Tuschik [mailto:[EMAIL PROTECTED] 
 Sent: Wednesday, April 02, 2003 9:35 AM
 To: [EMAIL PROTECTED]
 Subject: 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 Michael,

 
 Wenn man weiß, woran es liegt, ist auch wieder alles ganz logisch ;-)
... das ist wohl meistens so :)

 Wenn du das Script über inetd startest, kommen die Eingaben 
 ja über TCP.
ja, das is klar

 Und hier werden für Zeilenumbrüche 0x0D 0x0A verwendet und nicht, wie
ahh... (und ein Lichtlein ging auf ;) )

 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.
erklärt alles... :)

 Hänge doch mal ein | hexdump -C an dein echo hinten dran, 
 dann siehst
 du, was ich meine.
jo, stimmt... ich glaub da hätt ich in 100 Jahren noch gesucht *g*
zumal ich immer den Fehler in meinem Script vermutet habe.

 
 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.
ja, man kann ja in der inetd dem Script noch einen Parameter mit
übergeben.
Die frägt man dann einfach ab und je nach dem beschneidet man die
Variable.


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

2003-04-02 Diskussionsfäden Jan Trippler
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

2003-04-01 Diskussionsfäden Andre Frimberger


 -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

2003-04-01 Diskussionsfäden Frank Kster
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

2003-04-01 Diskussionsfäden Andre Frimberger
 -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

2003-04-01 Diskussionsfäden Frank Kster
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

2003-04-01 Diskussionsfäden Christian Knoke
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

2003-04-01 Diskussionsfäden Andre Frimberger


 -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

2003-03-31 Diskussionsfäden Frank Kster
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

2003-03-31 Diskussionsfäden Andre Frimberger


 -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)