#!/bin/sh # ## remote-slirp-off -- turn off remote SLiRP and hangup modem # this script expects a modem to be on both stdin and stdout, # e.g. `remote-slirp-off /dev/modem # exit status sts=0 # help function function prthlp() { echo "" echo "usage: $0 [-v]" echo "" echo "exit remote SLiRP and hangup modem. we expect the modem not to be" echo "locked, and we expect our standard input and standard output to be" echo "connected to the modem. E.g.:" echo "" echo " $0 /dev/modem" echo "" echo "options:" echo "-v verbose operation; logs chat to system log." echo "" } # option defaults # not blank => verbose chat operation opt_vrbopr="" # various options for i in $*; do case $i in -v | --verbose) opt_vrbopr="-v" shift ;; -h | --help) prthlp exit 0 ;; *) break ;; esac done function sndxitcmd() { chat $opt_vrbopr \ TIMEOUT 1 \ "" 0\\d\\c \ "" 0\\d\\c \ "" 0\\d\\c \ "" 0\\d\\c \ "" 0\\d\\c return } function hupmdm() { chat $opt_vrbopr \ TIMEOUT 10 \ "" \\p+\\p+\\p+\\c \ OK ath0 \ OK \\c return } # send SLiRP exit signal echo -n "exiting remote SLiRP ... " 1>&2 if sndxitcmd ; then echo "done." 1>&2 # hangup modem echo -n "hanging up modem ... " 1>&2 if hupmdm ; then echo "done." 1>&2 else echo -e "\\nerror: could not hang up modem." 1>&2 sts=1 fi else echo "\\nerror: could not send exit command." 1>&2 sts=1 fi exit $sts