#!/usr/local/bin/expect -f # ## PROPERTY OF BRANT PUTTKAMMER, PLEASE CONTACT ME IF YOU HAVE QUESTIONS ## PLEASE USE CAUTION WHEN RUNNING THIS PROGRAM ON YOUR SYSTEM set force_conservative 1 ;# 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 } } # BEGIN EXPECT SCRIPT BELOW #* PROPERTY OF BRANT PUTTKAMMER, PLEASE CONTACT ME IF YOU HAVE QUESTIONS # SET THE EMAIL COMMANDS FOR COMPLETION AND ERRORS set UECUEmail "bputtkammer@uecu.coop" set AlertUECUEmail "bputtkammer@uecu.coop,brant.puttkammer@gmail.com" set SMSUECUEmail "123456789@txt.att.net" set EmailCommand "echo 'Subject:Problem with Mirror Split\nMirror Split did not complete' | sendmail $AlertUECUEmail" set DoneCommand "echo 'Subject:Done with Mirror Split\nMirror Split completed!' | sendmail $AlertUECUEmail" # DATEADD FUNCTIONS AND VARIABLES INCLUDED BELOW source /udadmin/expectscripts/DateFormats.exp source /udadmin/expectscripts/ExpectConfig.exp set DoneCommand "echo 'Subject:Done with Mirror Split\nMirror Split completed successfully on $SMSDate!' | sendmail $AlertUECUEmail" # TURN ON LOGGING - SET LOG VARIABLE NAME set LogFileName "/udadmin/expectlogs/MirrorSplit-$FileDate.log" log_file $LogFileName # CHANGE FILE PERMISSIONS AND OWNER ON LOG FILE system "chmod 777 $LogFileName" system "chown expect $LogFileName" # SET THE TIMEOUT TO 10 MINUTES set timeout 600 set EmailText "\n" set LineBreak "\n" set AccountDirectory "$DefaultLiveAccountPath" set ScriptName "mirror_split.exp" if {$AccountDirectory == "/eom/MEA.EOM"} { set EmailSubject "Mirror Split - TEST" set LoginScript "/udadmin/expectscripts/TrainUsers.exp" } else { set EmailSubject "Mirror Split - LIVE" set LoginScript "/udadmin/expectscripts/LiveUsers.exp" } # START THE TELNET SESSION spawn telnet $HOSTADDRESS # LOGIN expect { timeout { set EmailCommand "echo 'Subject:Problem with $EmailSubject\\nExpect Statements:$EmailText' | sendmail $AlertUECUEmail" system $EmailCommand system "echo 'ERROR, $ScriptName, $FileDate' >> /udadmin/expectlogs/DailyVerify$FileDate.txt" sleep 360000 } "login:" { send -- "$USERNAME\r" append EmailText $expect_out(0,string)$LineBreak } } # SEND PASSWORD expect { timeout { set EmailCommand "echo 'Subject:Problem with $EmailSubject\\nExpect Statements:$EmailText' | sendmail $AlertUECUEmail" system $EmailCommand system "echo 'ERROR, $ScriptName, $FileDate' >> /udadmin/expectlogs/DailyVerify$FileDate.txt" sleep 360000 } "Password:" { send -- "$PASSWORD\r" append EmailText $expect_out(0,string)$LineBreak } } # Systems Administration Main Menu expect { timeout { set EmailCommand "echo 'Subject:Problem with $EmailSubject\\nExpect Statements:$EmailText' | sendmail $AlertUECUEmail" system $EmailCommand system "echo 'ERROR, $ScriptName, $FileDate' >> /udadmin/expectlogs/DailyVerify$FileDate.txt" sleep 360000 } "Systems Administration Main Menu*Selection:" { send -- "1\r" append EmailText $expect_out(0,string)$LineBreak } } # System Backups and Tools expect { timeout { set EmailCommand "echo 'Subject:Problem with $EmailSubject\\nExpect Statements:$EmailText' | sendmail $AlertUECUEmail" system $EmailCommand system "echo 'ERROR, $ScriptName, $FileDate' >> /udadmin/expectlogs/DailyVerify$FileDate.txt" sleep 360000 } "System Backups and Tools*Selection:" { send -- "1\r" append EmailText $expect_out(0,string)$LineBreak } } # RFS SPLIT MIRROR expect { timeout { set EmailCommand "echo 'Subject:Problem with $EmailSubject\\nExpect Statements:$EmailText' | sendmail $AlertUECUEmail" system $EmailCommand system "echo 'ERROR, $ScriptName, $FileDate' >> /udadmin/expectlogs/DailyVerify$FileDate.txt" sleep 360000 } "Do you wish to continue? (y/n):" { send -- "y\r" append EmailText $expect_out(0,string)$LineBreak } } # RFS SPLIT MIRROR COMPLETED expect { timeout { set EmailCommand "echo 'Subject:Problem with $EmailSubject\\nExpect Statements:$EmailText' | sendmail $AlertUECUEmail" system $EmailCommand system "echo 'ERROR, $ScriptName, $FileDate' >> /udadmin/expectlogs/DailyVerify$FileDate.txt" sleep 360000 } "Press Enter to continue" { send -- "\r" append EmailText $expect_out(0,string)$LineBreak } } # System Backups and Tools # Exit Back to Previous Menu expect { timeout { # set EmailCommand "echo 'Subject:Problem with $EmailSubject\\nExpect Statements:$EmailText' | sendmail $AlertUECUEmail" # system $EmailCommand # system "echo 'ERROR, $ScriptName, $FileDate' >> /udadmin/expectlogs/DailyVerify$FileDate.txt" # sleep 360000 send -- "e\r" append EmailText $expect_out(0,string)$LineBreak } "System Backups and Tools*Selection:" { send -- "e\r" append EmailText $expect_out(0,string)$LineBreak } } # Systems Administration Main Menu # Exit Program expect { timeout { # set EmailCommand "echo 'Subject:Problem with $EmailSubject\\nExpect Statements:$EmailText' | sendmail $AlertUECUEmail" # system $EmailCommand # system "echo 'ERROR, $ScriptName, $FileDate' >> /udadmin/expectlogs/DailyVerify$FileDate.txt" # sleep 360000 send -- "e\r" append EmailText $expect_out(0,string)$LineBreak } "Systems Administration Main Menu*Selection:" { send -- "e\r" append EmailText $expect_out(0,string)$LineBreak } } # ENDING SESSION expect { timeout { exit } eof } # CALCULATE TOTAL TIME OF RUNNING SCRIPT source /udadmin/expectscripts/total_time.exp source /udadmin/expectscripts/server_time.exp set DoneCommand "echo 'Subject:Done with $EmailSubject\n$EmailSubject completed successfully on $SMSDate!\n\nMirror Split took, $TotalTime\nStart Time:$StartTimeDisplay\nEnd Time:$EndTimeDisplay\n\n$ServerTime\n\n$EmailNotes' | sendmail $AlertUECUEmail" system $DoneCommand