1c20e4a9fb
The standard netcat, while ubiquitous, doesn't handle broadcast udp packets properly. The local ncb util does however. So if ncb can be located in the standard locations, automatically use that instead. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
60 lines
1.0 KiB
Bash
Executable File
60 lines
1.0 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
usage() {
|
|
(
|
|
echo "Usage: $0 <board IP> [board port]"
|
|
echo ""
|
|
echo "If port is not specified, '6666' will be used"
|
|
[ -z "$*" ] && exit 0
|
|
echo ""
|
|
echo "ERROR: $*"
|
|
exit 1
|
|
) 1>&2
|
|
exit $?
|
|
}
|
|
|
|
while [ -n "$1" ] ; do
|
|
case $1 in
|
|
-h|--help) usage;;
|
|
--) break;;
|
|
-*) usage "Invalid option $1";;
|
|
*) break;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
ip=$1
|
|
port=${2:-6666}
|
|
|
|
if [ -z "${ip}" ] || [ -n "$3" ] ; then
|
|
usage "Invalid number of arguments"
|
|
fi
|
|
|
|
for nc in netcat nc ; do
|
|
type ${nc} >/dev/null 2>&1 && break
|
|
done
|
|
|
|
trap "stty icanon echo intr ^C" 0 2 3 5 10 13 15
|
|
echo "NOTE: the interrupt signal (normally ^C) has been remapped to ^T"
|
|
|
|
stty -icanon -echo intr ^T
|
|
(
|
|
if type ncb 2>/dev/null ; then
|
|
# see if ncb is in $PATH
|
|
exec ncb ${port}
|
|
|
|
elif [ -x ${0%/*}/ncb ] ; then
|
|
# maybe it's in the same dir as the netconsole script
|
|
exec ${0%/*}/ncb ${port}
|
|
|
|
else
|
|
# blah, just use regular netcat
|
|
while ${nc} -u -l -p ${port} < /dev/null ; do
|
|
:
|
|
done
|
|
fi
|
|
) &
|
|
pid=$!
|
|
${nc} -u ${ip} ${port}
|
|
kill ${pid} 2>/dev/null
|