Re: datei zerhacken und per netcat verschicken
Hallo, Am Fri, 13 May 2005, Michelle Konzack schrieb: Am 2005-05-13 03:29:15, schrieb David Haller: Am Fri, 13 May 2005, Michelle Konzack schrieb: Also hier wird nichts auch die Platte gekippt: 8 #!/bin/bash let SIZE=`cat $1 |wc -c` Das macht einen arithmetischen Wert daraus useless use of let, useless use of cat SIZE=`wc -c $1` Das macht aber ne Zeichenkette Stimmt ;) Da sollte 'declare' helfen, wenn man 'wc' nicht traut ;) Das 'cat' ist aber auch mit 'let' ueberfluessig. Und fuetter deine Version mal mit nem Dateinamen, der z.B. ein '*' enthaelt und wenn du in einem Verzeichnis bist, das passende Dateinamen enthaelt. Quoten, quoten, quoten... *scnr* Falls 'stat' vorhanden ist (bei mir nicht ;), ist stat -c '%s' wohl die bessere Wahl. man bash Wenn Du Zeit hat den Schmöker mal durchzugehen. *g* Hab ich nie, werde ich wohl auch nicht mehr. Ich hab das abschnittsweise gelesen ;) Ich habe unzählige scripts in denen es zu unerwarteten fehlern bei Deiner Version kommt. Ich keins (und ich hab durchaus einiges an scripten). Bei Deiner version kommt dann sowas wie1234 also eine Zeichen- ketteraus, während bei mir 1234 einer ein zahlenwert rauskommt. for SEEK in `seq 0 $SIZE` ; do dd if=$1 of=- bs=584 seek=$SEEK count=1 |\ *rausred* Das ist in diesem Falle unkritisch, da $SIZE _nicht_ gequoted ist und IFS das Leerzeichen enthaelt... ;) Achso, ansonsten vertrete ich Quoten bis der Arzt kommt... ;) (siehe die andere Mail wg. seek vs. skip) Da fehlt die Umrechung in die Bloecke (s.u.)... Du rufst so dd fuer jedes byte auf... Ups, sollte for SEEK in `seq 0 584 $SIZE` ; do sein. Ah!!! _Da_ hast du's versteckt. Immer diese bloeden unsichtbaren Zeichen ;) Dann ist's auch in deiner Version blockweise, also richtig. netcat -u -q 0 127.0.0.1 2006 if [ $? == 1 ] ; then break ; fi Useless use of test (s.u.). Ausserdem sollte das, wenn schon, dann Nein, denn die Schleife rennt weiter wenn 'netcat' einen Fehler hat. 'break' beendet die Schleife. Ja eben. 'netcat ... || break'. Ok, wenn netcat auch exit-codes groesser 1 zurueckgibt, bei denen man die Schleife weiterlaufen lassen will, ist es nicht aequivalent... Jedenfalls: foo || break ist ja (innerhalb einer while/for Schleife) gerade aequivalent zu: foo; if test $? -ne 0; then break; fi wie ich schon schrieb. Falls man _explizt_ Fehlercodes != 1 anders behandeln will, dann sollte man die eben auch behandeln, also z.B. per case $? in 0) : ;; 1) break;; 2) exit;; 3) panic;; *) continue;; esac oder wie auch immer... Ansonsten reicht aber eben das '|| break'. Ja, bei sowas bin ich ein Pedant ;) Abgesehen vom 'seq' funktioniert mein Script Jup ;) Allerdings sind halt funktioniert und gut und gut und portabel drei verschiedene Dinge (oder so)... *scnr* Wobei ich explizit betonen will, dass ich nicht einmal andeuten will, dass meine scripte/programme auch nur einen Deut besser waeren. ;) -dnh -- Jetzt kriege ich es echt mit der Angst: da gibt es Zeilen in meinem Code der identisch mit dem von SCO ist, etwa ein include stdio.h oder aber auch ein hinterlistiges default:break;. -- Michael Karges in suse-linux -- 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: datei zerhacken und per netcat verschicken
Hallo, Am Fri, 13 May 2005, Martin Dickopp schrieb: David Haller [EMAIL PROTECTED] writes: dd if=$1 of=- bs=584 seek=$SEEK count=1 |\ Da fehlt die Umrechung in die Bloecke (s.u.)... Du rufst so dd fuer jedes byte auf... Was meinst Du mit Umrechung in die Blöcke? Das was du nicht zitiert hast. for SEEK in `seq 0 $SIZE` d.h. fuer jedes Byte der Eingabedatei wird das dd aufgerufen. Dieser Befehl führt eine einzige Leseoperation aus, in der er 584 Bytes liest. Fehlerhaft ist allerdings, daß seek nicht im Input, sondern im Output Blöcke überspringt. Gemeint war wohl skip. Stimmt. BLKSZ=584 [...] dd if=$1 bs=$BLKSZ seek=$seek count=1 | \ Abgesehen vom fehlenden of=-, Unterschieden im Quoting und unter- schiedlichen Variablennamen unterscheidet sich das nicht von der Zeile, die Du kritisiert hattest. Du hast's wieder nicht zitiert. Jetzt also nochmal richtig: BLKSZ=584 SIZE=`wc -c $1` BLOCKS=`echo ($SIZE / $BLKSZ) | bc` ### das hier ist der ### Unterschied. Da seq ab 0 ### kann das +1 doch wegfallen. for skip in `seq 0 $BLOCKS`; do dd if=$1 bs=$BLKSZ skip=$skip count=1 | \ netcat -u -q 0 127.0.0.0 2006 || break done -dnh -- NT is the only OS that has caused me to beat a piece of hardware to death with my bare hands. -- Derry Hamilton -- 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: datei zerhacken und per netcat verschicken
David Haller [EMAIL PROTECTED] writes: dd if=$1 of=- bs=584 seek=$SEEK count=1 |\ Da fehlt die Umrechung in die Bloecke (s.u.)... Du rufst so dd fuer jedes byte auf... Was meinst Du mit Umrechung in die Blcke? Dieser Befehl fhrt eine einzige Leseoperation aus, in der er 584 Bytes liest. Fehlerhaft ist allerdings, da seek nicht im Input, sondern im Output Blcke berspringt. Gemeint war wohl skip. BLKSZ=584 [...] dd if=$1 bs=$BLKSZ seek=$seek count=1 | \ Abgesehen vom fehlenden of=-, Unterschieden im Quoting und unter- schiedlichen Variablennamen unterscheidet sich das nicht von der Zeile, die Du kritisiert hattest. Diese Loesung hat allerdings den Nachteil, dass bei grossen Dateien die Ausfuehrungszeit exponentiell steigt, weil fuer jedes Fragment a $BLKSZ Bytes die Datei neu geoeffnet werden muss, an die richtige Stelle geseekt werden muss, und dann jeweils nur ein Block von $BLKSZ Bytes gelesen und ausgegeben wird... Bei kleinen Dateien (sagen wir, bis 100 * $BLKSZ) geht das noch, aber darueber wird's schnell eklig. Die Zeit, um an eine bestimmte Stelle in einer Datei zu seeken, ist ungefhr konstant, unabhngig davon, wo in der Datei die Stelle liegt. Darum ist die Ausfhrungszeit des Skriptes _linear_ von der Dateigre abhngig. Davon, da dd tatschlich den Systemcall lseek verwendet, kann man sich im Quellcode (coreutils 5.2.1) in Datei src/dd.c, Zeile 818 berzeugen. Martin
Re: datei zerhacken und per netcat verschicken
Am 2005-05-13 03:29:15, schrieb David Haller: Hallo, Am Fri, 13 May 2005, Michelle Konzack schrieb: Also hier wird nichts auch die Platte gekippt: 8 #!/bin/bash let SIZE=`cat $1 |wc -c` Das macht einen arithmetischen Wert daraus useless use of let, useless use of cat SIZE=`wc -c $1` Das macht aber ne Zeichenkette man bash Wenn Du Zeit hat den Schmöker mal durchzugehen. Ich habe unzählige scripts in denen es zu unerwarteten fehlern bei Deiner Version kommt. Bei Deiner version kommt dann sowas wie1234 also eine Zeichen- ketteraus, während bei mir 1234 einer ein zahlenwert rauskommt. for SEEK in `seq 0 $SIZE` ; do dd if=$1 of=- bs=584 seek=$SEEK count=1 |\ Da fehlt die Umrechung in die Bloecke (s.u.)... Du rufst so dd fuer jedes byte auf... Ups, sollte for SEEK in `seq 0 584 $SIZE` ; do sein. netcat -u -q 0 127.0.0.1 2006 if [ $? == 1 ] ; then break ; fi Useless use of test (s.u.). Ausserdem sollte das, wenn schon, dann Nein, denn die Schleife rennt weiter wenn 'netcat' einen Fehler hat. 'break' beendet die Schleife. if test $? -ne 0; then break; fi oder meinetwegen auch per Stringvergleich if test x$? != x0; then break; fi sein. 'help test' hilft. Ausserdem sollte man beachten, ob man einen String oder eine Zahl vergleicht. Und das dann auch passend umsetzen. Das macht nichts in diesem Fall (Exit Status), kann entweder if [ $? == 1 ] ; then break ; fi oder if [ $? -eq 9 ] ; then break ; fi verwenden Ja, bei sowas bin ich ein Pedant ;) Abgesehen vom 'seq' funktioniert mein Script -dnh Greetings Michelle -- Linux-User #280138 with the Linux Counter, http://counter.li.org/ Michelle Konzack Apt. 917 ICQ #328449886 50, rue de Soultz MSM LinuxMichi 0033/3/8845235667100 Strasbourg/France IRC #Debian (irc.icq.com) signature.pgp Description: Digital signature
Re: datei zerhacken und per netcat verschicken
Am 2005-05-13 09:15:22, schrieb Martin Dickopp: David Haller [EMAIL PROTECTED] writes: dd if=$1 of=- bs=584 seek=$SEEK count=1 |\ Da fehlt die Umrechung in die Bloecke (s.u.)... Du rufst so dd fuer jedes byte auf... Was meinst Du mit Umrechung in die Blöcke? Dieser Befehl führt eine einzige Leseoperation aus, in der er 584 Bytes liest. Fehlerhaft ist allerdings, daß seek nicht im Input, sondern im Output Blöcke überspringt. Gemeint war wohl skip. Oops... genau, das war was vorhin auch noch korregieren wollte... Martin Greetings Michelle -- Linux-User #280138 with the Linux Counter, http://counter.li.org/ Michelle Konzack Apt. 917 ICQ #328449886 50, rue de Soultz MSM LinuxMichi 0033/3/8845235667100 Strasbourg/France IRC #Debian (irc.icq.com) signature.pgp Description: Digital signature
datei zerhacken und per netcat verschicken
Hi Liste, ich hab hier eine ziemlich große Datei (4mb), die per udp in 540Byte-Paketen mit einem abstand von 1/60s verschickt werden soll. Wie ich die Daten mit netcat verschicke weis ich, aber nicht, wie ich für die 540Byte-Häppchen sorgen soll. Für einfaches Split ist die Datei zu groß (mit zwei Suffixbuchstaben können nicht genug Dateien erzeugt werden, wie benötigt). Kann mir einer auf die Schnelle nen kleinen Kommandozeilenhack schicken, der ungefähr das hier leistet: cat testdatei | zerhacke in 540Byte | netcat -u localhost 2006 Auf die 1/60s Pausse zwischen jedem Packet kommt es nicht an, obwohl es natürlich das Sahnehäubchen wäre ;) Schöne Grüße Bastian -- 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: datei zerhacken und per netcat verschicken
Bastian Venthur schrieb: Hi Liste, ich hab hier eine ziemlich große Datei (4mb), die per udp in 540Byte-Paketen mit einem abstand von 1/60s verschickt werden soll. Wie ich die Daten mit netcat verschicke weis ich, aber nicht, wie ich für die 540Byte-Häppchen sorgen soll. Für einfaches Split ist die Datei zu groß (mit zwei Suffixbuchstaben können nicht genug Dateien erzeugt werden, wie benötigt). *räusper* [EMAIL PROTECTED]:~$ split --help Aufruf: split [OPTION] [EINGABE [PRÄFIX]] Stücke fester Größe der EINGABE auf PRÄFIXaa, PRÄFIXab, ... ausgeben; Vorgabe für PRÄFIX ist ,,x. Wenn keine EINGABE angegeben wurde oder die EINGABE ,,- ist, Standardeingabe lesen. Erforderliche Argumente für lange Optionen sind auch für kurze erforderlich. -a, --suffix-length=NSuffixe mit Länge N verwenden (Vorgabe 2) Gruß Bernd -- 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: datei zerhacken und per netcat verschicken
Bernd Schwendele wrote: Bastian Venthur schrieb: Hi Liste, ich hab hier eine ziemlich große Datei (4mb), die per udp in 540Byte-Paketen mit einem abstand von 1/60s verschickt werden soll. Wie ich die Daten mit netcat verschicke weis ich, aber nicht, wie ich für die 540Byte-Häppchen sorgen soll. Für einfaches Split ist die Datei zu groß (mit zwei Suffixbuchstaben können nicht genug Dateien erzeugt werden, wie benötigt). *räusper* [...] Gruß Bernd Autsch! Ich muss sagen, der hat gesessen. Ok das Problem mit den zwei Suffixbuchstaben ist ja jetzt gelöst, aber das Problem ist, dass das ganze immernoch ziemlich unelegant aussieht: ,---[schnipp]--- | #!/bin/sh | | # Zerhacke die Datei in kleine Häppchen | cat $1 | split --bytes=584 --suffix-length=5 | | # Sende die Häppchen | for i in `ls x*`; | do | cat $i | netcat -u -q 0 127.0.0.1 2006 | done | | # Lösche die Häppchen | rm x* `---[schnapp]--- Das Splitten und Löschen kostet schon ziemlich viel zeit und wenn ich am Emfpfänger (wo ich die Daten hinschicke) genug gesehen habe, und das Skript abbreche bleiben natürlich die ganzen gesplitteten Dateien übrig, die dann per Hand löschen muss. Kann man nicht irgendwie die Ausgabe von split direkt an netcat leiten (Pipe funktioniert in diesem Fall nicht), ohne die gesplitteten Dateien tatsächlich *anlegen* zu müssen? Schöne Grüße Bastian -- 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: datei zerhacken und per netcat verschicken
On Thu, May 12, 2005 at 09:27:11PM +0200, Bastian Venthur wrote: | for i in `ls x*`; Was würde gegen for i in x* sprechen? cu ulf -- Ulf Volmer [EMAIL PROTECTED] www.u-v.de -- 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: datei zerhacken und per netcat verschicken
Hallo, Am Thu, 12 May 2005, Bastian Venthur schrieb: Autsch! Ich muss sagen, der hat gesessen. Ok das Problem mit den zwei Suffixbuchstaben ist ja jetzt gelöst, aber das Problem ist, dass das ganze immernoch ziemlich unelegant aussieht: ,---[schnipp]--- | #!/bin/sh | | # Zerhacke die Datei in kleine Häppchen | cat $1 | split --bytes=584 --suffix-length=5 | | # Sende die Häppchen | for i in `ls x*`; | do | cat $i | netcat -u -q 0 127.0.0.1 2006 | done | | # Lösche die Häppchen | rm x* `---[schnapp]--- Das Splitten und Löschen kostet schon ziemlich viel zeit und wenn ich am Emfpfänger (wo ich die Daten hinschicke) genug gesehen habe, und das Skript abbreche bleiben natürlich die ganzen gesplitteten Dateien übrig, die dann per Hand löschen muss. Kann man nicht irgendwie die Ausgabe von split direkt an netcat leiten (Pipe funktioniert in diesem Fall nicht), ohne die gesplitteten Dateien tatsächlich *anlegen* zu müssen? UNGETESTET[1] #!/bin/sh test -r $1 || exit 1 dd if=$1 bs=584 cbs=584 conv=unblock | while read -r frag; do echo $frag | netcat -u -q 0 127.0.0.1 2006 done Koennte trotz 'read -r' noch Probleme mit Sonderzeichen (binary?) geben... HTH, -dnh [1] nur per: echo -n '123456' | dd bs=2 cbs=2 conv=unblock | \ while read x; do echo $x; done -- Rincewind groaned. His bones were very angry at the treatment they had recently received and were queuing up to complain. -- Terry Pratchett, The Light Fantastic -- 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: datei zerhacken und per netcat verschicken
Am 2005-05-12 21:27:11, schrieb Bastian Venthur: | #!/bin/sh | | # Zerhacke die Datei in kleine Häppchen | cat $1 | split --bytes=584 --suffix-length=5 | | # Sende die Häppchen | for i in `ls x*`; | do | cat $i | netcat -u -q 0 127.0.0.1 2006 | done | | # Lösche die Häppchen | rm x* `---[schnapp]--- Das Splitten und Löschen kostet schon ziemlich viel zeit und wenn ich am Emfpfänger (wo ich die Daten hinschicke) genug gesehen habe, und das Skript abbreche bleiben natürlich die ganzen gesplitteten Dateien übrig, die dann per Hand löschen muss. Kann man nicht irgendwie die Ausgabe von split direkt an netcat leiten (Pipe funktioniert in diesem Fall nicht), ohne die gesplitteten Dateien tatsächlich *anlegen* zu müssen? Also hier wird nichts auch die Platte gekippt: 8 #!/bin/bash let SIZE=`cat $1 |wc -c` for SEEK in `seq 0 $SIZE` ; do dd if=$1 of=- bs=584 seek=$SEEK count=1 |\ netcat -u -q 0 127.0.0.1 2006 if [ $? == 1 ] ; then break ; fi done 8 Schöne Grüße Bastian Greetings Michelle -- Linux-User #280138 with the Linux Counter, http://counter.li.org/ Michelle Konzack Apt. 917 ICQ #328449886 50, rue de Soultz MSM LinuxMichi 0033/3/8845235667100 Strasbourg/France IRC #Debian (irc.icq.com) signature.pgp Description: Digital signature
Re: datei zerhacken und per netcat verschicken
Michelle Konzack wrote: Also hier wird nichts auch die Platte gekippt: 8 #!/bin/bash let SIZE=`cat $1 |wc -c` for SEEK in `seq 0 $SIZE` ; do dd if=$1 of=- bs=584 seek=$SEEK count=1 |\ netcat -u -q 0 127.0.0.1 2006 if [ $? == 1 ] ; then break ; fi done 8 Also danke an Alle für die Mühe, auf die Idee dd zu Missbrauchen bin ich garnicht gekommen. Bei mir läuft folgende vereinfachte Version dd if=testlauf bs=854 | netcat -u -q 0 127.0.0.1 2006 Sehr gut und vor allem ca 100 mal schneller als die split-methode. Das einzige Problem ist, dass die Statusmeldung am Ende auf diese Weise auch ans über die Pipe an netcat geht. Aber wenn ich morgen wieder etwas wacher bin, werd ich mir die dd-Beispiele hier nochmal genauer ansehen ;) Danke nochmal und nächtsle Bastian -- 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: datei zerhacken und per netcat verschicken
Am 2005-05-13 00:46:13, schrieb Bastian Venthur: Also danke an Alle für die Mühe, auf die Idee dd zu Missbrauchen bin ich garnicht gekommen. Bei mir läuft folgende vereinfachte Version dd if=testlauf bs=854 | netcat -u -q 0 127.0.0.1 2006 Sehr gut und vor allem ca 100 mal schneller als die split-methode. Das einzige Problem ist, dass die Statusmeldung am Ende auf diese Weise auch ans über die Pipe an netcat geht. Aber wenn ich morgen wieder etwas wacher bin, werd ich mir die dd-Beispiele hier nochmal genauer ansehen ;) Dann mach sie doch weg :-) dd if=testlauf bs=854 2/dev/null | netcat -u -q 0 127.0.0.1 2006 Danke nochmal und nächtsle Bastian Greetings Michelle -- Linux-User #280138 with the Linux Counter, http://counter.li.org/ Michelle Konzack Apt. 917 ICQ #328449886 50, rue de Soultz MSM LinuxMichi 0033/3/8845235667100 Strasbourg/France IRC #Debian (irc.icq.com) signature.pgp Description: Digital signature
Re: datei zerhacken und per netcat verschicken
Bastian Venthur wrote: Michelle Konzack wrote: Also hier wird nichts auch die Platte gekippt: 8 #!/bin/bash let SIZE=`cat $1 |wc -c` for SEEK in `seq 0 $SIZE` ; do dd if=$1 of=- bs=584 seek=$SEEK count=1 |\ netcat -u -q 0 127.0.0.1 2006 if [ $? == 1 ] ; then break ; fi done 8 Also danke an Alle für die Mühe, auf die Idee dd zu Missbrauchen bin ich garnicht gekommen. Bei mir läuft folgende vereinfachte Version dd if=testlauf bs=854 | netcat -u -q 0 127.0.0.1 2006 Sehr gut und vor allem ca 100 mal schneller als die split-methode. Das einzige Problem ist, dass die Statusmeldung am Ende auf diese Weise auch ans über die Pipe an netcat geht. Aber wenn ich morgen wieder etwas wacher Nene, da hab ich mich wohl geirrt. Die Statusinfo geht nicht über die Pipe, insofern läuft der Einzeiler da oben perfekt durch. Das Problem ist hier, das die Datei kein Vielfaches von 584Bytes groß ist, aber dass ist ein anderes Problem. Danke nochmal -- Problem gelöst ;) -- 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: datei zerhacken und per netcat verschicken
Am Donnerstag, 12. Mai 2005 22:27 schrieb Bernd Schwendele: [...] ,---[schnipp]--- | #!/bin/sh | | # Zerhacke die Datei in kleine Häppchen | cat $1 | split --bytes=584 --suffix-length=5 | | # Sende die Häppchen | for i in `ls x*`; | do | cat $i | netcat -u -q 0 127.0.0.1 2006 | done | | # Lösche die Häppchen | rm x* `---[schnapp]--- Das Splitten und Löschen kostet schon ziemlich viel zeit und wenn ich am Emfpfänger (wo ich die Daten hinschicke) genug gesehen habe, und das Skript abbreche bleiben natürlich die ganzen gesplitteten Dateien übrig, die dann per Hand löschen muss. Kann man nicht irgendwie die Ausgabe von split direkt an netcat leiten (Pipe funktioniert in diesem Fall nicht), ohne die gesplitteten Dateien tatsächlich *anlegen* zu müssen? Sorry, mir stellt sich aber gerade die Frage, warum Du überhaupt die Dateien splitten willst? Macht für mich gerade keinen Sinn... Gruß Bernd Weil die Anwendung die UDP-Pakete ungepuffert entgegen nimmt, d.h. sie liest ganz stumpf aus jeden eingehendem Datagram die ersten x Bytes, wirft den Rest weg und wartet auf neue Pakete. Das ist in sofern sinnvoll, da trotz aller Schwächen von UDP die Datagramme immer vollständig ankommen und die Anwendung an sich ca 60 mal pro Sekunde so ein Datagramm empfängt. Um das zu simulieren reicht es also nicht, die ganze Datei in einem Schub zu verschicken, da die Anwendung sonnst nur ein Datagramm sieht.
Re: datei zerhacken und per netcat verschicken
Hallo, Am Fri, 13 May 2005, Michelle Konzack schrieb: Also hier wird nichts auch die Platte gekippt: 8 #!/bin/bash let SIZE=`cat $1 |wc -c` useless use of let, useless use of cat SIZE=`wc -c $1` for SEEK in `seq 0 $SIZE` ; do dd if=$1 of=- bs=584 seek=$SEEK count=1 |\ Da fehlt die Umrechung in die Bloecke (s.u.)... Du rufst so dd fuer jedes byte auf... netcat -u -q 0 127.0.0.1 2006 if [ $? == 1 ] ; then break ; fi Useless use of test (s.u.). Ausserdem sollte das, wenn schon, dann if test $? -ne 0; then break; fi oder meinetwegen auch per Stringvergleich if test x$? != x0; then break; fi sein. 'help test' hilft. Ausserdem sollte man beachten, ob man einen String oder eine Zahl vergleicht. Und das dann auch passend umsetzen. Ja, bei sowas bin ich ein Pedant ;) done BLKSZ=584 SIZE=`wc -c $1` BLOCKS=`echo ($SIZE / $BLKSZ)+1 | bc` for seek in `seq 0 $BLOCKS`; do dd if=$1 bs=$BLKSZ seek=$seek count=1 | \ netcat -u -q 0 127.0.0.0 2006 || break done Diese Loesung hat allerdings den Nachteil, dass bei grossen Dateien die Ausfuehrungszeit exponentiell steigt, weil fuer jedes Fragment a $BLKSZ Bytes die Datei neu geoeffnet werden muss, an die richtige Stelle geseekt werden muss, und dann jeweils nur ein Block von $BLKSZ Bytes gelesen und ausgegeben wird... Bei kleinen Dateien (sagen wir, bis 100 * $BLKSZ) geht das noch, aber darueber wird's schnell eklig. Meine dd-Loesung mit dem cbs=584 conv=unblock scheitert uebrigens wohl mindestens an Dateien, die ein '\n'-Byte enthalten. Anders formuliert: man sollte evtl. eine andere Loesung, z.B. in Perl o.ae. in Betracht ziehen. Bastian: erzaehl doch noch ein bisserl mehr darueber, was du eigentlich machen willst... -dnh -- The goal of Computer Science is to build something that will last at least until we've finished building it. -- BSD fortune file -- 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)