← Back to team overview

sslug-teknik team mailing list archive

netcat driller

 

Hej

Jeg sidder og udvikler noget server software og vil teste det med shell
scripts og netcat, men er stødt på et problem.

Jeg har følgende script:
#!/bin/bash
#keepalive.sh
con_file=$(tempfile -p imc_)
send_file=$(tempfile -p ims_)
while [ -f ${send_file} ] && [ -f ${con_file} ]; do
    echo "Sending" > /dev/stderr
    echo "<msg/>"
    sleep 5
done
while [ -f ${con_file} ]; do
    echo "Waiting" > /dev/stderr
    sleep 5
done
rm -f ${con_file} ${send_file}

...og det kalder jeg med:
nc -c ./keepalive.sh localhost 7100

Sålænge de to filer findes, holdes forbindelsen åben og der sendes.
Hvis ${con_file} slettes så afsluttes scriptet og forbindelsen lukkes.
Hvis ${send_file} slettes så holder scriptet op med at sende men
forbindelsen holdes åben.

Min server vil da efter et stykke tid uden at have modtaget data lukke
forbindelsen.
Jeg kan med wireshark se, at forbindelsen faktisk bliver lukket (fin-ack
og så'n), og så regnede jeg med at netcat afsluttede, men den kører videre.

Jeg har også prøvet følgende:
nc -q 1 -c ./keepalive.sh localhost 7100

Dokumentationen siger:
        -q secs                 quit after EOF on stdin and delay of secs

Men det sker heller ikke.
Kan man ikke få netcat til at afslutte scriptet og lukke, når
forbindelsen ryger ?

VH
Robert