#!/cygdrive/c//bin/expect -- #Purpose: Create a standard configuration on HP blade server chassises BL20s # and read in from file a list of names for each port. # syntax: main.exp # returns: 1 bad file (chassis-server-blade-file) # 2 at least one device subdirectory can not be create (e.g. devname is a file, not a dir) # Load global ATM variables and procedures # source ./libglobal.exp # Process command tail set codepath [file dirname [info script]] set path [lindex $argv 0] set blade_file $path/Blade.csv.unix send_user $blade_file if [file exists $blade_file] { send_user "blade file exists, continuing\n" } else { send_user "bad blade file name or bad path, exiting\n" exit 1 } set debug_on [lindex $argv 1] # Initialize misc fields and controls #temporary working field, always init immediately before use set temp_string "" set timeout 60 exp_internal $debug_on set target_sdir [file dirname $blade_file] set run_log $target_sdir//run.log set run_log_txt $target_sdir/run.log.txt # Turn off screen logging, turn on file logging log_user $debug_on log_file -noappend -a $run_log # Clear a few lines on the screen and announce process status send_user "\n" send_user "\n" send_user "\n" send_user "main.exp initialized and executing!\n" set current_date_time [timestamp -format "Date:Time=%Y%m%d:%X"] send_user $current_date_time\n # Open chassis-server-blad-file set handle [open $blade_file] set end_of_file [eof $handle] # Outer loop processes chassis row in chassis-server-blade-file set chassis_row 0 gets $handle chassis_row set chassis_list [split $chassis_row ,] while {!$end_of_file == 1} { set element_idx 0 # note....lists are zero relative count set chassis_name [lindex $chassis_list 0] set server_num 0 send_user "\n\n" # Inner loop processes each server blade for server A # note.....1st element is chassis name set element_idx 1 set port 1 # note.....2nd thru 8th element are the blades while {$element_idx <= [llength $chassis_list]} { set chassis_blade [lindex $chassis_list $element_idx] set server_num [expr $server_num + 1] if ![string equal $chassis_blade ""] { # Create Server A file set server_name $chassis_blade append server_name "A" send_user "\nThe following is the config for Chassis-Server $server_name\n" send_user "_______________________________________________________\n" #snmp syntax /c/snmp/cfg name|locn|cont|rcomm|wcomm|trap1|trap2|t1comm|t2comm|auth |lnkt send_user "/c/snmp/cfg cont \"some contact info\"\n" send_user "/c/snmp/cfg rcomm snmpreadcommunity\n" send_user "/c/snmp/cfg wcomm snmpreadwritecommunity\n" send_user "/c/snmp/cfg trap1 snmp-trap-host-ip\n" send_user "/c/snmp/cfg t1comm snmpreadcommunity\n" send_user "/c/snmp/cfg auth disable\n" send_user "/c/port $port\n" set srv_prt s append srv_prt $server_num append srv_prt "p1" send_user " name \"$server_name $srv_prt\"\n" send_user "/c/snmp/cfg lnkt $port ena\n" set port [expr $port +1] send_user "/c/port [expr $port]\n" set srv_prt "s" append srv_prt $server_num append srv_prt "p2" send_user " name \"$server_name $srv_prt\"\n" send_user "/c/snmp/cfg lnkt $port ena\n" set port [expr $port +1] # Create Server B file set server_name $chassis_blade append server_name "B" send_user "\nThe following is the config for Chassis-Server $server_name\n" send_user "_______________________________________________________\n" send_user "/c/port $port\n" set srv_prt "s" append srv_prt $server_num append srv_prt "iOL" send_user " name \"$server_name $srv_prt\"\n" send_user "/c/snmp/cfg lnkt $port ena\n" set port [expr $port + 1] send_user "/c/port [expr $port]\n" set srv_prt "s" append srv_prt $server_num append srv_prt "p3" send_user " name \"$server_name $srv_prt\"\n" send_user "/c/snmp/cfg lnkt $port ena\n" set port [expr $port +1] # end of inner loop, bump element idx } else { set port [expr $port +2] } set element_idx [expr $element_idx +1] } # end of outer loop, so read next chassis-server-blade recordc gets $handle chassis_row set end_of_file [eof $handle] set chassis_list [split $chassis_row ,] } # ok....end of script, so cleanup and say goodbye send_user "\n" send_user "Script completed, exiting.\n" set current_date_time [timestamp -format "Date:Time=%Y%m%d:%X"] send_user $current_date_time\n send_user \n send_user \n sleep 1 log_file #oh, um, Create MS-DOS version of run_log now, as it breaks logging if log file open catch {exec cp $run_log $run_log_txt} catch {exec unix2dos.exe $run_log_txt} # be polite and wish the engineer luck with the run send_user "Bye.....hope the run went well for you!\n"