#!/bin/sh # \ exec tclsh "$0" ${1+"$@"} # # Cisco 7960 command-line dialer # v0.1 # 14th April 2005 # # Copyright 2005 Nabeel Jafferali. # All rights reserved. # # Usage: # tclsh cisco.tcl [option(s)] number-to-be-dialed # # Options: # -v: Verbose (default: no) # -h: Use headset (default: no) # -: Use line (default: 1) # # Note: # Change "set ip" and "set password" lines below to reflect # correct IP and password of phone. package require Expect set ip set password exp_log_user 0 set verbose 0 set headset 0 proc help {} { puts stdout "Cisco 7960 command-line dialer\nv0.1\n\nCopyright 2005 Nabeel Jafferali.\nAll rights reserved.\n\nUsage:\n\ttclsh cisco.tcl \[option(s)\] number-to-be-dialed\n\nOptions:\n\t-v: Verbose (default: no)\n\t-h: Use headset (default: no)\n\t-: Use line (default: 1)\n" exit } proc invalid {} { puts stdout "Usage: tclsh cisco.tcl \[options(s)\] number-to-be-dialed\nTry 'tclsh cisco.tcl -?' for more information.\n" exit } set line 1 while {[llength $argv]>0} { set flag [lindex $argv 0] if {0==[regexp "^-" $flag]} break set argv [lrange $argv 1 end] switch -- $flag \ "-1" { set line 1 } "-2" { set line 2 } "-3" { set line 3 } "-4" { set line 4 } "-5" { set line 5 } "-6" { set line 6 } "-v" { set verbose 1 } "-h" { set headset 1 } "-?" { help } default { invalid } } if {0==[llength $argv]} invalid if {$verbose} { exp_log_user 1 } set timeout 60 spawn telnet $ip expect "Password :" sleep .5 send "$password\r" expect { "Password :" { puts stdout "Invalid password" exit } ">" { sleep .5 send "test open\r" } } expect ">" sleep .5 send "test key line$line\r" set y [split [lindex $argv 0] {}] foreach digit $y { expect ">" sleep .5 send "test key $digit\r" } expect ">" sleep .5 send "test key soft4\r" expect ">" sleep .5 send "test key soft1\r" expect ">" sleep .5 send "test key soft3\r" if {$headset} { expect ">" sleep .5 send "test key headset\r" } expect ">" sleep .5 send "test close\r" expect ">" sleep .5 send "exit\r" close wait