I'm not a programmer... but I strive to be lazy... therefore I do what I must to create scripts/commands to save me time. My current place of work does not allow root logins (as they shouldn't), but I can sudo to run commands, provided that I provide a passwd. So, I threw this together...
A better implementation would be to accept the command as an argument.
#!/usr/bin/expect -f
#
set force_conservative 0 ;# set to 1 to force conservative mode even if
;# script wasn't run conservatively originally
if {$force_conservative} {
set send_slow {1 .1}
proc send {ignore arg} {
sleep .1
exp_send -s -- $arg
}
}
set HOST [lindex $argv 0]
set USER [lindex $argv 1]
set PASSWD [lindex $argv 2]
puts "Arguments: $argc"
if { $argc != 3 } {
puts "Usage: ssh_then_sudo.exp <HOSTNAME> <USER> <PASSWORD>"
exit 1
}
set timeout -1
spawn $env(SHELL)
match_max 100000
puts "Connecting to: ${USER}@${HOST}:${PASSWD}"
exit 0
expect "]$ "
send -- "ssh ${USER}@${HOST} \r"
expect "]$ "
send -- "\r"
expect "\r"
send -- "sudo su -\r"
expect "sudo] "
send -- "${PASSWD}\r"
expect "]# "
# THIS SECTION IS A HARD CODED COMMAND
send -- "yum -y update\r"
expect "Complete!\r"
# END COMMAND
send -- "exit\r"
expect "]$ "
send -- "exit\r"
expect "closed.\r\r"
send -- "logout \r"
expect eof
exit
A better implementation would be to accept the command as an argument.
#!/usr/bin/expect -f
#
set force_conservative 0 ;# set to 1 to force conservative mode even if
;# script wasn't run conservatively originally
if {$force_conservative} {
set send_slow {1 .1}
proc send {ignore arg} {
sleep .1
exp_send -s -- $arg
}
}
set HOST [lindex $argv 0]
set USER [lindex $argv 1]
set PASSWD [lindex $argv 2]
puts "Arguments: $argc"
if { $argc != 3 } {
puts "Usage: ssh_then_sudo.exp <HOSTNAME> <USER> <PASSWORD>"
exit 1
}
set timeout -1
spawn $env(SHELL)
match_max 100000
puts "Connecting to: ${USER}@${HOST}:${PASSWD}"
exit 0
expect "]$ "
send -- "ssh ${USER}@${HOST} \r"
expect "]$ "
send -- "\r"
expect "\r"
send -- "sudo su -\r"
expect "sudo] "
send -- "${PASSWD}\r"
expect "]# "
# THIS SECTION IS A HARD CODED COMMAND
send -- "yum -y update\r"
expect "Complete!\r"
# END COMMAND
send -- "exit\r"
expect "]$ "
send -- "exit\r"
expect "closed.\r\r"
send -- "logout \r"
expect eof
exit
Comments
Post a Comment