Kann mir jemand verraten, warum das folgende Skript abbricht, wenn ich den netcat in Zeile 19 mittels & in den Hintergrund schicke und eine Kontaktaufnahme zu der Portnummer erfolgt? Das Skript soll nur eine aufsteigende Portnummer an die anfragenden REchner vergeben und dann soll im Hintergrund auf die konkrete Datenübertragung gewartet werden. Es wird auch gewartet, aber sobald die Portnummer vom Quell-Rechner angesprochen wird, wird der Hintergrundprozeß abgebrochen? Wenn ich den & weglasse, klappt es, aber dann können die Dateiübertragungen ja nur sequentiell ausgeführt werden. Ich habe auch schon versucht, den netcat in ein eigenes Skript auszulagern, aber das Ergebnis ist das gleiche. 01 #!/bin/ksh 02 # 03 # 04 typeset -i NUM 05 let NUM=58000 06 while true 07 do 08 let "NUM=NUM + 1" 09 echo $NUM 10 export LOG=/tmp/save_$NUM 11 ARG=$(/usr/bin/netcat -vv -l -p 58000 ) 12 # 13 DATEI=$(echo $ARG| awk -F: '{print $2}' ) 14 RECHNER=$(echo $ARG| awk -F: '{print $1}') 15 echo $DATEI von $RECHNER 16 # Mitteilung der zu benutzenden Port-Nummer an anfragenden Rechner 17 /bin/echo :$DATEI:$NUM:$RECHNER:|/usr/bin/netcat -w 5 $RECHNER 58001 18 # Warten auf Daten�bertragung im Hintergrund 19 /usr/bin/netcat -vv -l -p $NUM > /data/$DATEI 2>> $LOG 20 # 21 sleep 20 22 jobs -l 23 echo Neustart $(/bin/date) 24 done 25 exit -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Mit, 15 Jul 2009, Hermann J. Beckers schrieb:
Kann mir jemand verraten, warum das folgende Skript abbricht, wenn ich den netcat in Zeile 19 mittels & in den Hintergrund schicke und eine Kontaktaufnahme zu der Portnummer erfolgt? [..] Es wird auch gewartet, aber sobald die Portnummer vom Quell-Rechner angesprochen wird, wird der Hintergrundprozeß abgebrochen?
Du suchst evtl. 'nohup'. -dnh -- Human beings were created by water to transport it uphill. -- BSD fortune file -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
On Thu 16 Jul 2009 04:39:46 NZST +1200, Hermann J. Beckers wrote:
Kann mir jemand verraten, warum das folgende Skript abbricht, wenn ich den netcat in Zeile 19 mittels & in den Hintergrund schicke und eine Kontaktaufnahme zu der Portnummer erfolgt?
18 # Warten auf Daten?bertragung im Hintergrund 19 /usr/bin/netcat -vv -l -p $NUM > /data/$DATEI 2>> $LOG
netcat hat allgemein einen Schaden, wenn es darum geht, EOF zu behandeln. Andere netcats sind auch nicht besser, nur anderweitig beschädigt. Beachte, daß netcat immer in beide Richtungen operiert! In Deinem Fall siehst Du wahrscheinlich alt aus, sobald netcat stdin liest - dann wird erst mal unterbrochen, weil stdin nicht verbunden ist. Möglichkeiten: netcat http://volker.dnsalias.net/ Please do not CC list postings to me. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Donnerstag 16 Juli 2009 schrieb Volker Kuhlmann: ...
Möglichkeiten:
netcat
Das kann aber auch ins Auge gehen, nur eben andersrum, weil lesen von /dev/null = EOF ist. netcats die beide Richtungen abbrechen, sobald eine EOF ist, sind hier dann Plattenplatzverschwendung.
Stimmt, hat auch nicht geholfen.
Versuche auch das netcat von SuSE 8.2. Ich halte das immer als netcat-suse8.2 vor, weil es die letzte Version mit einem anderen EOF-Verhalten war, die in meinen Fällen funktioniert, wenn die aktuelle Version nutzlos ist.
Hat mich auf den richtigen Weg gebracht. Als ich eine alte Version installieren wollte, beschwerte sich rpm zurecht, das eine neuere Version installiert sei. Als ich über yast deinstallieren wollte und netcat in die Suchmaske eingab, erschienen neben "netcat" noch "nc" und "nc6". "nc" ist laut Paketbeschreibung "openbsd-netcat" und verfügt über "-d do not attempt to read from STDIN". Wenn man dann noch aus dem netcat-Aufruf "-l -p NNN" das "-p" entfernt, klappts auch mit dem Hintergrund. MfG hjb -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (3)
-
David Haller
-
Hermann J. Beckers
-
Volker Kuhlmann