|  | #!/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 && 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 | 
|  | ${nc} -u -l -p ${port} < /dev/null & | 
|  | exec ${nc} -u ${ip} ${port} |