Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env expect
- proc try_password { pass } {
- expect {
- {[Pp][Aa][Ss][Ss][Ww][Oo][Rr][Dd]*} { send "$pass\r" }
- # fix for push_enable_admin in case of
- # "You already have the administrator's privilege!"
- {You already*} { return }
- }
- }
- proc push_auth_tacacs {} {
- send "$::env(tacacs_user)\r"
- try_password "$::env(tacacs_pass)"
- }
- proc push_auth_builtin {} {
- send "$::env(builtin_user)\r"
- try_password "$::env(builtin_pass)"
- }
- proc push_enable_admin {} {
- send "enable admin\r"
- try_password "$::env(tacacs_sudo)"
- }
- proc go_interactive {} {
- set timeout 0
- send "# $::env(tacacs_user), welcome to $::env(ip)! :)\r"
- interact -nobuffer
- exit
- }
- proc try_auth_extreme { callback } {
- expect {[Ll][Oo][Gg][Ii][Nn]*} { $callback }
- expect {*# } { go_interactive }
- }
- proc try_auth_dlink { callback } {
- expect {[Uu][Ss][Ee][Rr][Nn][Aa][Mm][Ee]*} { $callback }
- expect {*#} { push_enable_admin; go_interactive }
- }
- set timeout 5
- ### linux
- # spawn -noecho telnet $::env(ip)
- ### freebsd
- spawn -noecho telnet -4 -N $::env(ip)
- sleep 1
- set timeout 5
- if { $::env(vendor) == "extreme" } {
- try_auth_extreme push_auth_tacacs
- try_auth_extreme push_auth_builtin
- try_auth_extreme exit
- }
- if { $::env(vendor) == "dlink" } {
- expect {User Access Verification} {
- try_auth_dlink push_auth_tacacs
- }
- try_auth_dlink push_auth_builtin
- try_auth_dlink exit
- }
- exit
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement