[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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 ge"seek"t 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



Reply to: