|  | #!/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 |