Hi, 12.08.2008 05:01, David Haller wrote:
Hallo,
Am Mon, 11 Aug 2008, Arno Lehmann schrieb:
31.07.2008 18:36, David Haller wrote:
Am Mit, 30 Jul 2008, Arno Lehmann schrieb:
Das würde ich anders lösen:
TFILE=`mktemp printsomethingXXXXX` while true; do netcat -l -p 3120 > ${TFILE} UFILE=`mktmp printsomethingXXX` mv ${TFILE} ${UFILE} cat ${UFILE} >> /dev/usb/lp0 && rm ${UFILE} & done
Quoting, Locking und Fehlerbehandlung und beheben meiner Fehler darfst du selber machen :-) (Aber beim Quoting hilft David sicher gern ;-) Generell: immer so "gut" wie möglich quoten. Danke :-)
TFILE="$(mktemp "/tmp/printsomething.$$.XXXXXX")" UFILE="$(mktmp "printsomething.$$.XXXXXX")"
Sollte UFILE="$(mktemp "/tmp/printsomething.$$.XXXXXX")" sein.
Wäre wohl besser...
trap "rm -f '$TFILE' '$UFILE'" 0 1 2 15 Hmm, guter Hinweis. Aber warum noch die PID in den Dateinamen reintun?
Gewohnheit ;) Schadet nix. Ist noch eine Stufe mehr gegen Kollisionen oder Angriffe.
Na ja... Gewohnheit lass' ich ja gelten. Da mktemp m.W. aber prüft ob eine Datei schon existiert und dann einen anderen Namen wählt ist die weitere Stufe gegen Kollisionen nutzlos. Besser wäre es den returncode von mktemp zu prüfen und Fehler zu behandeln :-)
while true; do netcat -l -p 3120 > "${TFILE}" cp "${TFILE}" "${UFILE}" cat "${UFILE}" >> /dev/usb/lp0 & done
Auch wenn ich nicht kapiere, was das mit den 2 Tempfiles soll. Verhindern dass während des Ausgebens die Datei schon mit dem nächsten Job überschrieben wird, und gleichzeitig die Pause zwischen zwei netcats minimal halten... ich weiss ja nicht wie schnell die Druckjobs reinpurzeln.
Ah ok, habe ich vermutet. Aber so dürfte das eher nicht wirklich funktionieren, denn netcat + cp und die Schleife warten nicht auf den Drucker.
-v bitte... Ich hab' das ja alles selber nicht probiert, aber unter Annahme dass ein Druckjob am Stück reinkommt sehe ich kein Problem. Daten kommen an und gehen in die Temp-Datei. cp ist allerdings unsinn - mv muss es sein, das ist atomar. Da netcat zu dem Zeitpunkt nicht mehr läuft kann nichts die Datei anfassen. cat läuft dann im Hintergrund. Erst dabei kommt der Drucker ins Spiel, aber das ist dann für den Teil mit netcat irrelevant...
Kommen die Druckjobs komplett oder häppchenweise via netcat rein?
Gute Frage, aber ohne das selber zu probieren wage ich keine Prognose. Allerdings wäre ich nicht überrascht wenn Windows hier in Scheiben sendet und über kurze Timeouts fatal stolpert... Arno
-dnh
-- Arno Lehmann IT-Service Lehmann Sandstr. 6, 49080 Osnabrück www.its-lehmann.de -- 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