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

PXE boot a LiveCD image

Summary: I have wanted to build a kickstart environment which hosted a "rescue CD" or LiveCD to allow you to boot over the network after you blew your stuff up and needed to repair a few things.  Today I have worked through a method of doing so, with the help of the people who published a succinct script with the Red Hat Enterprise Virtualization Hypervisor.  (the script will be at the bottom of this post - if I have somehow not followed the GPL, please let me know and I will correct whatever is necessary) NOTE/Warning: The boot will fail due the initrd being too large (645mb).  I'm not sure how to proceed.  This procedure worked for RHEVh, because it is quite a bit smaller.  Hopefully I can report back with progress on this? :-$ Procedure: download your LiveCD image to /export/isos/RESCUE/Fedora-16-i686-Live-Desktop.iso # cd /var/tmp # vi livecd-iso-to-pxeboot (populate the file with the script shown below) # chmod 754 ./livecd-iso-to-pxeb...

"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.

MOTD with colors! (also applies to shell profiles)

I'm not sure why I had never looked into this before, but this evening I became obsessed with discovering how to present different colored text in the /etc/motd. A person had suggested creating a shell script (rather than using special editing modes in vi, or something) and I agree that is the simplest way of getting this accomplished quickly. This most noteworthy portion of this script is the following: RESET="\033[0m" that puts the users shell back to the original color. I typically like a green text on black background. Also - a great reference for the different colors and font-type (underscore, etc...) https://wiki.archlinux.org/index.php/Color_Bash_Prompt I found this example on the web and I wish I could recall where so that I could provide credit to that person. #!/bin/bash #define the filename to use as output motd="/etc/motd" # Collect useful information about your system # $USER is automatically defined HOSTNAME=`uname -n` KERNEL=`un...