Skip to main content

expect foo

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

Comments

Popular posts from this blog

P2V using dd for KVM-QEMU guest

Preface: I have certainly not exhaustively tested this process.  I had a specific need and found a specific solution that worked. Situation:  I was issued a shiny new laptop running Red Hat Enterprise Linux 7 (with Corp VPN, certs, Authentication configuration, etc...)  The image was great, but I needed more flexibility on my bare metal.  So, my goal was to P2V the corporate image so I could just run it as a VM. * Remove corporate drive and install new SSD * install corp drive in external USB-3 case * Install RHEL 7 on new SSD * dd old drive to a disk-image file in a temp location which will be an image which is the same size as your actual drive (unless you have enough space in your destination to contain a temp and converted image) * convert the raw disk-image to a qcow file while pushing it to the final location - this step should reduce the disk size - however, I believe it will only reduce/collapse zero-byte blocks (not just free space - i.e. if you de...

Sun USS 7100 foo

TIP: put ALL of your LUNs into a designated TARGET and INITIATOR group when you create them.  If you leave them in the "default" group, then everything that does an discovery against the array will find them :-( I'm struggling to recognize a reason that a default should even be present on the array. Also - who, exactly, is Sun trying to kid.  The USS is simply a box.. running Solaris .. with IPMP and ZFS.  Great.  If you have ever attempted to "break-in" or "p0wn" your IBM HMC, you know that there are people out there that can harden a box - then.. there's Sun.  After a recent meltdown at the office I had to get quite intimate with my USS 7110 and learned quite a bit.  Namely: there's a shell ;-) My current irritation is how they attempt to "warn you" away from using the shell (my coverage expired a long time ago to worry about that) and then how they try to hide things, poorly. I was curious as to what version of SunOS it ...

"Error getting authority: Error initializing authority: Could not connect: No such file or directory (g-io-error-quark, 1)"

"Error getting authority: Error initializing authority: Could not connect: No such file or directory (g-io-error-quark, 1)" One issue that may cause this to arise is if you managed to break your /etc/fstab We had an engineer add a line with the intended options of "nfsvers=3" but instead added "-onfsvers=3" and it broke the system fairly catastrophically.