#!/usr/local/bin/expectk -f # # dialUpManager - start and stop asppp (Solaris) using Expectk # # version 1/29/99 # # prie@abl.com (after Don Libes' tkpasswd and su2) # # (note that Expect can't overload Tk's "send", so we use "exp_send") # initialize variables # set password "" set saveword "" set DEBUG "no" ;# either "yes" or not # # either keep a copy of script output or disable script output # if {$DEBUG == "yes"} { log_file dUMout } else { log_user 0 } # create password frame with entry-field and its label and button # click on button or hit return to create/get pty # frame .password_frame -relief raised -bd 1 entry .password -textvar password -relief sunken -width 10 label .prompt -text "Password:" -bd 0 # button .suStart -text "set" -command {set spawn_id [suStart]} bind .password {set spawn_id [suStart]} # # layout the widgets # focus .password pack .prompt .password .suStart -in .password_frame \ -side left -padx 2 -pady 2 pack .password_frame -fill x # create ppp frame with buttons # frame .ppp_frame -relief raised -bd 1 button .pppUp -text "connect" \ -command {exp_send "/etc/init.d/asppp start\r"} button .pppDown -text "disconnect" \ -command {exp_send "/etc/init.d/asppp stop\r"} # pack .pppUp .pppDown -in .ppp_frame \ -side left -expand 1 -fill x -padx 2 -pady 2 pack .ppp_frame -fill x # create ping button # button .ping -text ping -command jumpStart pack .ping -side left -padx 2 -pady 2 # create quit button # button .quit -text quit -command exit pack .quit -side right -padx 2 -pady 2 # script ends when user hits quit (or closes the window) # # ###### procedures: # # procedure to create pty for superuser commands and then hide password # proc suStart {} { global password saveword spawn su - root expect "word:" if {$password != "**********"} { exp_send "$password\r" set saveword $password } else { exp_send "$saveword\r" } expect { "Sun" {set password "**********"} "Sor" {set password "**Sorry!**"} } return $spawn_id } # procedure that jump starts the dial up process # tries to "ping" a nonexistent host # proc jumpStart {} { exp_send "/usr/sbin/ping unkHost.com\r" return }