Purpose:
This is a really simple way to automate CLI command execution on multiple F5 devices using Bash & TCL scripting. The scripts have been tested on a linux and a mac machine.
How to use it:
There is a bash script (F5_Bash_v1) that is utilized to collect the username/password for F5 access. A text file (F5_Host.txt) that stores the management IP address of multiple F5 devices and a TCL script (F5_Out_v1.exp) that is used to execute CLI commands on the F5 devices.
The bash script is the master script that obtains the username/password and executes the TCL script for multiple F5 devices.
Setup:
On a linux machine that is utilized to connect to the F5 device:
#Create a directory
mkdir F5_Check
Within the “F5_Check” directory, create the following 3 files:
F5_Host.txt
F5_Bash_v1
F5_Out_v1.exp
File Content: F5_Host.txt contains the management IP of the F5 devices.
Example:
$ cat F5_Host.txt
10.12.12.200
10.12.12.201
10.12.12.202
10.12.12.203
File Content: F5_Bash_v1
#!/bin/bash
# Collect the username and password for F5 access
echo -n "Enter the username "
read -s -e user
echo -ne '\n'
echo -n "Enter the password "
read -s -e password
echo -ne '\n'
# Feed the expect script a device list & the collected username & passwords
for device in `cat ~/F5_Check/F5_Host.txt`; do
./F5_Out_v1.exp $device $password $user ;
done
File Content: F5_Out_v1.exp
#!/usr/bin/expect -f
# Set variables
set hostname [lindex $argv 0]
set password [lindex $argv 1]
set username [lindex $argv 2]
# Log results
log_file -a ~/F5_Check/F5LOG.log
# Announce which device we are working on and the time
send_user "\n"
send_user ">>>>> Working on $hostname @ [exec date] <<<<<\n"
send_user "\n"
# SSH access to device
spawn ssh $username@$hostname
expect {
"no)? " {
send "yes\n"
expect "*assword: "
sleep 1
send "$password\r"
}
"*assword: " {
sleep 1
send "$password\r"
}
}
expect "(tmos)#"
send "sys\n"
expect "(tmos.sys)#"
send "show software\n"
expect "#"
send "exit\n"
expect "#"
send "quit\n"
expect ":~\$"
exit