#!/usr/bin/expect # # $Id: autoPackager.sh 421 2007-04-05 15:46:55Z dhill $ # # Remote command execution script to another server set USERNAME root set PASSWORD Calpont1 set RELEASE "" set PKGSERVER srvdeb5 set OLD "n" log_user 0 spawn -noecho /bin/bash for {set i 0} {$i<[llength $argv]} {incr i} { set arg($i) [lindex $argv $i] } set i 0 while true { if { $i == [llength $argv] } { break } if { $arg($i) == "-h" } { send_user "\n" send_user "'autoPackager' generates a packages based on the set of RPMs\n" send_user "in the calweb/iterations branch.\n" send_user "It will place the packages in //calweb/shared/Iterations/Latest/packages\n" send_user "and in //calweb/shared/Iterations/'release'/packages when specified\n" send_user "\n" send_user "Usage: autoPackage -r 'release' -o\n" send_user " release - Calpont release number\n" send_user " -o - Build Old Calpont Packages\n" exit } if { $arg($i) == "-r" } { incr i set RELEASE $arg($i) } if { $arg($i) == "-o" } { set OLD "y" } incr i } if { $RELEASE == "" } { send_user "\nError: provide a release number with -r option\n" exit 1 } set PKGCOMMAND "'/root/autoOAM/buildCalpontPackages.sh $RELEASE'" if { $OLD == "n"} { set PKGCOMMAND "'/root/autoOAM/buildInfiniDBPackages.sh $RELEASE'" } set timeout 3700 # # send command to build calpont rpms # #get current date exec date >/tmp/datesync.tmp exec cat /tmp/datesync.tmp set newtime [exec cat /tmp/datesync.tmp] send_user "\nStart Time: $newtime\n" log_user 1 set timeout 900 # # send command to build calpont packages # if { $OLD == "n"} { send_user "\nGenerating 4.x INFINIDB Packages takes 15 minutes to complete, please wait...\n" } else { send_user "\nGenerating 3.x CALPONT Packages takes 15 minutes to complete, please wait...\n" } log_user 0 send "ssh $USERNAME@$PKGSERVER $PKGCOMMAND\n" expect { -re "authenticity" { send "yes\n" expect { -re "word: " { send "$PASSWORD\n" } abort } } -re "service not known" { send_user "FAILED: Invalid Host\n" ; exit -1 } -re "Connection refused" { send_user "FAILED: Connection refused\n" ; exit -1 } -re "word: " { send "$PASSWORD\n" } abort } log_user 1 expect { -re "TIMEOUT" { send_user "Calpont Packages Build Failed, timeout" } abort timeout { send_user "Calpont Packages Build Failed, timeout" } abort -re "No such file" { send_user "$COMMAND file not found" } abort -re "no rpm" { send_user "Calpont Packages Build Failed, check build log files" } abort -re "Calpont Packages Build Successfully Completed" { send_user "Calpont Packages Successfully Completed" } abort } #get current date exec date >/tmp/datesync.tmp exec cat /tmp/datesync.tmp set newtime [exec cat /tmp/datesync.tmp] send_user " $newtime\n" file delete -force $RELEASE send_user "\nBuild-Packaging successfully completed\n" exit 0