⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ans

📁 控制语音Modem的程序
💻
📖 第 1 页 / 共 2 页
字号:
            play_message $PASSWD_CH "#"         fi      fi   fi   $RM -f $TMP1   $RM -f $TMP2   }#-------------------------------------------------------------------------# remote_mode(void)#-------------------------------------------------------------------------remote_mode()   {   local N   local ABORT   local OPTIONS   get_passwd $TMP1   if [ $? -eq 1 ]; then      $DIFF -q $PASSWD $TMP1 > $NULL      if [ $? -ne 0 ]; then         play_message $WRONG_PASSWD "#"         log "Wrong passwd: $($CAT $TMP1)"      else         OPTIONS="1234#bd"         ABORT=false         while [ $ABORT = false ]; do            play_message $REMOTE_MENU $OPTIONS            N=$?            play_beep            if [ $N -eq 0 ]; then               # Listen for the command.               $VMCP -c"$AT_SILENCE_DIS" -wOK               $VMCP -c"$AT_VRX" -W"\cCONNECT\r\n" -e -t15 -x$OPTIONS               N=$?               $VMCP -c"\c\n" -wVCON               $VMCP -c"$AT_SILENCE_ENA" -wOK            fi            case $N in               1)                  log "Retrieving messages"                  retrieve_messages                  ;;               2)                  play_message $GREETING "#"                  play_beep                  ;;               3)                  log "Changing greeting"                  change_greeting                  ;;               4)                  log "Changing password"                  change_password                  ;;               *)                  log "Leaving remote menu"                  ABORT=true                  ;;            esac         done      fi   fi   $RM -f $TMP1   }#-------------------------------------------------------------------------# retrieve_messages(void)#-------------------------------------------------------------------------retrieve_messages()   {   local I   local N   local LC   local FNAME   play_message $GET_MSGS_MNU "#"   # Create a list of messages to play.   $FIND $VOICEDIR -name "*.${EXT}" -type f -maxdepth 1 | $SORT > $TMP1   # Create a list of messages to delete.   $CP $NULL $TMP2   I=1   LC=$($WC -l < $TMP1)   while [ $I -le $LC ]; do      FNAME=$($SED -n ${I},${I}p $TMP1)      play_message $FNAME "649#"      case $? in         0|1)            # Next message.            I=$[$I + 1]            ;;         2)            # Previous message.            if [ $I -gt 1 ]; then I=$[$I - 1]; fi            ;;         3)            # Add filename to delete.            $ECHO $FNAME >> $TMP2            play_message $MSG_DELETED "#"            I=$[$I + 1]            ;;         *)            # Exit from retrieving messages.            I=$[$LC + 1]            ;;      esac      # Signal end of message.      play_beep   done   $RM -f $(cat $TMP2)   $RM -f $TMP1   $RM -f $TMP2   }#-------------------------------------------------------------------------# change_greeting(void)#-------------------------------------------------------------------------change_greeting()   {   play_message $CH_GREETING "#"   record_message $TMP1 "#9bqsd"   case $? in      1)         $MV -f $TMP1 $GREETING         log "Greeting changed"         ;;      *)         $RM -f $TMP1         log "Greeting unchanged"         ;;   esac   }#-------------------------------------------------------------------------# fax_call(filename)# Receive a fax and store it in ${FAXDIR}/filename#-------------------------------------------------------------------------fax_call()   {   $VMCP -c"$AT_FAX" -wOK   exec $EFAX -d $DEVICE -v chewmainr -x "#${LOCK}" -or -i "E0X3" -i "+FCLASS=2;+FCR=1;\Q1" -c "1,5,0,2,0,0,0,0" -l "+39 55 291568" -z "&F" -r ${FAXDIR}/${1}   }#-------------------------------------------------------------------------# data_call(void)#-------------------------------------------------------------------------data_call()   {   $VMCP -c"$AT_DATA" -wOK   $VMCP -c"$AT_A" -t60 -w"\cCONNECT"   if [ $? -eq 0 ]; then      exec $AGETTY -h -t60 38400,19200,9600,4800,2400,1200 $TTYS   fi   }#-------------------------------------------------------------------------# do_stop(void)#-------------------------------------------------------------------------do_stop()   {   if [ -f $STOPFILE ]; then      log "Stopfile already exists: it will NOT answer"   else      if $TOUCH $STOPFILE; then         log "Stopfile created: it will NOT answer"      fi   fi   if [ -f $LOCK ]; then      if $KILL $($CAT $LOCK); then         log "$DEVICE unlocked"      else         log "Can't unlock $DEVICE"      fi   else      log "It seems that $DEVICE is not locked"   fi   }#-------------------------------------------------------------------------# do_start(void)#-------------------------------------------------------------------------do_start()   {   if $RM -f $STOPFILE; then      log "Stopfile removed: it WILL answer"   fi   }#-------------------------------------------------------------------------# do_play(void)#-------------------------------------------------------------------------do_play()   {   local FILE   local WASSTOP   if [ -f $STOPFILE ]; then WASSTOP=true; else WASSTOP=false; fi   do_stop   $ECHO "Playing $($LS ${VOICEDIR}/*.$EXT | $WC -w) message(s) in ${VOICEDIR}"   $VMCP -c"$AT_VOICE" -wOK   $VMCP -c"$AT_PLAYDEV" -wVCON   for FILE in ${VOICEDIR}/*.${EXT}; do      if [ -f $FILE ]; then         $LS -lG $FILE | $CUT -b21-         $VMCP -c"$AT_VTX" -wCONNECT         $VMCP -k -e -q -t$TIMEOUT -i$FILE         $VMCP -c"\c\020\003" -wVCON      fi   done   $VMCP -c"$AT_H" -wOK   if [ $WASSTOP = false ]; then do_start; fi   }#-------------------------------------------------------------------------# do_delete(void)#-------------------------------------------------------------------------do_delete()   {   local R   $ECHO -n "Remove all messages from ${VOICEDIR}? [N/y] "   read R   if [ "$R" = "y" -o "$R" = "Y" ]; then      $RM ${VOICEDIR}/*.${EXT}   fi   }#-------------------------------------------------------------------------# do_now(void)#-------------------------------------------------------------------------do_now()   {   if [ -f $STOPFILE ]; then      log "Can't answer now: ans is stopped"   else      if [ -f $LOCK ]; then         $TOUCH $DOITNOW         if $KILL $($CAT $LOCK); then            log "$DEVICE unlocked"         else            log "Can't unlock $DEVICE"            $RM -f $DOITNOW         fi      else         log "Can't answer now: $DEVICE is not locked by ans"      fi   fi   }#-------------------------------------------------------------------------# MAIN LOOP#-------------------------------------------------------------------------# Check for command line argument.if [ $# -gt 0 ]; then   case $1 in      now)         do_now; exit         ;;      stop)         do_stop; exit         ;;      start)         do_start; exit         ;;      play)         do_play; exit         ;;      delete)         do_delete; exit         ;;      *)         $ECHO "Answering machine script for voice modems."         $ECHO -e "Usage: $0 [OPTION]"         $ECHO -e "\tnow\t\tforce a running process to answer immediately"         $ECHO -e "\tplay\t\tplay received messages"         $ECHO -e "\tdelete\t\tdelete received messages"         $ECHO -e "\tstop\t\tprevent a running process from answering the phone"         $ECHO -e "\tstart\t\tresume a running process answering the phone"         $ECHO -e "Without option, start waiting for a call."         exit         ;;   esacfiif [ ! -d $VOICEDIR -o ! -w $VOICEDIR ]; then   log "$VOICEDIR: No such directory or permission denied"   exitfiif [ ! -d $FAXDIR -o ! -w $FAXDIR ]; then   log "$FAXDIR: No such directory or permission denied"   exitfiif [ -f $LOCK ]; then   log "Device $DEVICE locked by PID $($CAT $LOCK)"   exitfiumask $UMASKlog "Resetting the modem and waiting for $WAITRINGS rings"wait_rings $WAITRINGS# Generate a filename for the incoming message.MSGNAME=$($DATE +%y%m%d%H%M%S)# Answer the call.$VMCP -c"$AT_VOICE" -wOK$VMCP -c"$AT_SILENCE_ENA" -wOK$VMCP -c"$AT_A" -wVCON# Play the greeting only if needed.if [ -f $DOITNOW ]; then   $RM -f $DOITNOW   N=0else   play_message $GREETING "c2e3#ht"   N=$?fi# Discriminate call...case $N in   0)      log "Receiving a Voice call"      voice_call $MSGNAME      ;;   1|2)      log "Receiving a Fax"      fax_call $MSGNAME      ;;   3|4)      log "Receiving a Data call"      data_call      ;;   5)      log "Entering remote mode"      remote_mode      ;;   6|7)      log "Answer aborted"      ;;esac$VMCP -c"$AT_H" -wOK

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -