#!/bin/sh
bipipe() {
local FIFO=/tmp/.bipipe.$$
rm -f "$FIFO"
mkfifo "$FIFO" || return
bash -c "$1" < "$FIFO" | \
bash -c "$2" > "$FIFO"
}
prompt() {
local PROMPT=$1 VARNAME=$2
read -p "$PROMPT: " $VARNAME
REPLY=`eval echo '$'$VARNAME`
read -p "You selected '$REPLY' for $VARNAME. Correct (y/n)? "
if [ "$REPLY" = "y" ]; then
return
else
prompt "$PROMPT" "$VARNAME"
fi
}
prompt "Netcat command" NC
prompt "Retry interval" RETRY_VAL
prompt "Timeout" TIMEOUT
select TYPE in server client; do
if [ "$TYPE" = "server" ]; then
prompt "Source host" SRC_HOST
prompt "Source port" SRC_PORT
prompt "Dest host" DEST_HOST
prompt "Dest port" DEST_PORT
while
:
do
bipipe "$NC -vw '$TIMEOUT' '$SRC_HOST' '$SRC_PORT'" \
"$NC -vw '$TIMEOUT' '$DEST_HOST' '$DEST_PORT'"
sleep "$RETRY_VAL"
done
else
prompt "Dest port" DEST_PORT
prompt "Listening port" DEST_LPORT
while
:
do
bipipe "$NC -vlw '$TIMEOUT' -p '$DEST_PORT'" \
"$NC -vlw '$TIMEOUT' -p '$DEST_LPORT'"
sleep "$RETRY_VAL"
done
fi
done
Download