📝 描述:该脚本用于自动化巡检F5,适用于BIG-IP 12版本以上。有问题可随时留言与我联系 :@(献花)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 #!/bin/bash hostname=`uname -a |cut -d ' ' -f2` date =`date +"%y%m%d" `function begin_execute (){ echo -e "\033[32m\nBegin to execute shell script,Please Wait for a few minutes.\033[0m" echo "------------------------------------------------------------" } function base_info (){ echo -e "\033[33m1. Basic equipment information\033[0m" echo -e "\t 1). Hostname :\t\t\t\t $hostname " model=`tmsh show sys hardware|grep -A 1 "Platform" |grep ^" Name" |awk -F "Name " '{print $2}' ` echo -e "\t 2). BIG-IP Model : \t\t\t $model " sn=` tmsh show sys hardware | grep -E "Chassis Serial|Appliance Serial" |awk '{print $3}' ` echo -e "\t 3). Serial Number : \t\t\t $sn " ManagementIP=`tmsh list sys management-ip |awk '{print $3}' ` echo -e "\t 4). Management_IP : \t\t\t $ManagementIP " F5version=`tmsh show sys version|grep 'Version ' |awk '{print $2}' ` echo -e "\t 5). BIG-IP Version : \t\t\t $F5version \n" } function cluster_info (){ echo -e "\033[33m2. Cluster status information\033[0m" failoverstatus=`tmsh show cm failover-status | grep ^"Status" | awk '{print $2}' ` echo -e "\t 1). Failover Status : \t\t\t $failoverstatus " syncstatus=`tmsh show cm sync-status | grep ^"Status" | awk '{print $2,$3}' ` echo -e "\t 2). Sync Status : \t\t\t $syncstatus \n" } function stastistic (){ echo -e "\033[33m3. Business status information\033[0m" cpu=`tmsh show sys cpu|grep "Utilization" |awk '{print $3}' ` echo -e "\t 1). CPU Utilization :\t\t\t $cpu %" mem=`tmsh show sys memory|grep "TMM Memory Used" |awk '{print $5}' ` echo -e "\t 2). Memory Utilization :\t\t $mem %" new_conn=`tmsh show sys performance connections| grep "Client Connections" |awk '{print $3}' ` echo -e "\t 3). New Connections : \t\t\t $new_conn " active_conn=`tmsh show sys performance connections| grep ^"Connections" |awk '{print $3}' ` echo -e "\t 4). Total Connections : \t\t $active_conn " throughput=`tmsh show sys performance throughput | grep "Service" |head -1|awk '{print $2}' ` echo -e "\t 5). Throughput : \t\t\t $throughput \n" echo -e "\033[33m4. Virtual Server Health Information\033[0m" virtual_name=`tmsh list ltm virtual| grep "ltm virtual " |awk '{print $3}' ` available_=0 unknown_=0 offline_=0 for virtual_ in $virtual_name do vs_status=`tmsh show ltm virtual $virtual_ | grep Availability|awk '{print $3}' ` if [[ $vs_status = "available" ]] ;then available_=$[$available_ +1] elif [[ $vs_status = "unknown" ]] ;then unknown_=$[$unknown_ +1] elif [[ $vs_status = "offline" ]] ;then offline_=$[$offline_ +1] fi done echo -e "\t 1). Virtial Available : \t\t $available_ " echo -e "\t 2). Virtial unknown : \t\t\t $unknown_ " echo -e "\t 3). Virtial offline : \t\t\t $offline_ \n" } function log_status (){ echo -e "\033[33m5. Log Warning Information\033[0m" sys_log=`cat /var/log/messages|grep -E 'warning|err|emerg|crit|alert' |wc -l` echo -e "\t 1). System Warning Log : \t\t $sys_log " ltm_log=`cat /var/log/ltm|grep -E 'warning|err|emerg|crit|alert' |wc -l` echo -e "\t 2). LTM Warning Log : \t\t\t $ltm_log " gtm_log=`cat /var/log/gtm|grep -E 'warning|err|emerg|crit|alert' |wc -l` echo -e "\t 3). GTM Warning Log : \t\t\t $gtm_log " lcd_log=`tmsh show sys alert|grep -E 'warning|err|emerg|crit|alert' |wc -l` echo -e "\t 4). LCD Warning Log : \t\t\t $lcd_log \n" } function device_hardware (){ echo -e "\033[33m6. Device Hardware Information\033[0m" echo -e "\t 1). Device Fans Status :" fan_number=`tmsh show sys hardware field-fmt | grep "chassis-fan-status-index" |awk '{print $4}' ` for fan_n in $fan_number do fan_sta=`tmsh show sys hardware field-fmt | sed -n '/chassis-fan-status-index $fan_n {/,/}/p' | grep "status " |awk '{print $2}' ` if [ $fan_sta =="up" ] then echo -e "\t\tFans $fan_n Status : \t\t Success" else echo -e "\t\t\033[31mFans $fan_n Status: \t\t Failed\033[0m" fi done echo -e "\t 2). Temperature $temp_n Status :" temp_number=`tmsh show sys hardware field-fmt | grep "chassis-temperature-status-index" |awk '{print $4}' ` for temp_n in $temp_number do cur_temp=`tmsh show sys hardware field-fmt | grep -A7 "chassis-temperature-status-index $temp_n " | grep "temperature " |awk '{print $2}' ` lo_temp=`tmsh show sys hardware field-fmt | grep -A7 "chassis-temperature-status-index $temp_n " | grep "lo-limit" |awk '{print $2}' ` high_temp=`tmsh show sys hardware field-fmt | grep -A7 "chassis-temperature-status-index $temp_n " | grep "hi-limit" |awk '{print $2}' ` if [ $cur_temp -le $high_temp ] && [ $cur_temp -ge $lo_temp ];then echo -e "\t\tTemp $temp_n Status : \t\t Success" else echo -e "\t\t\033[31mTemp $temp_n Status : \t\t Failed\033[0m" fi done echo -e "\t 3). Device Power status :" power_number=`tmsh show sys hardware field-fmt | grep "chassis-power-supply-status-index" |awk '{print $4}' ` for power_name in $power_number do power_status=`tmsh show sys hardware field-fmt | grep -A4 "chassis-power-supply-status-index 1" | grep "status up" |awk '{print $2}' ` if [ $power_status == "up" ];then echo -e "\t\tPower $power_name status: \t\t Success" else echo -e "\t\t\033[31mPower $power_name status: \t\t Failed\033[0m" fi done echo -e "\033[33m\n7. Device Interface Information\033[0m" trunk_name=`tmsh list net vlan one-line | grep "interfaces" | awk -F "interfaces { " '{print $2}' |awk -F " {" '{print $1}' |sort -u|grep -v ^"[0-9]" ` for trunk_ in $trunk_name do trunk_interface=`tmsh list net trunk $trunk_ interfaces | awk '{print $1}' |grep ^[0-9]` for interface_ in $trunk_interface do isun=`tmsh show net interface $interface_ field-fmt | grep "status up" |wc -l` if [[ $isun == "1" ]];then echo -e "\t Trunk : $trunk_ Interface $interface_ Status : \t Success" else echo -e "\t\033[31m Trunk : $trunk_ Interface $interface_ Status : \t Failed\033[0m" fi done done interface_name=`tmsh list net vlan one-line | grep "interfaces" | awk -F "interfaces { " '{print $2}' |awk -F " {" '{print $1}' |sort -u|grep ^[0-9] ` for inte_name in $interface_name do interface_sta=`tmsh show net interface $inte_name field-fmt | grep "status up" |wc -l` if [[ $interface_sta == "1" ]];then echo -e "\t Interface $inte_name Status : \t\t Success" else echo -e "\t\033[31m Interface $inte_name Status : \t\t Failed\033[0m" fi done } function backup_config (){ echo -e "\n\033[33m8. Backup configuration\033[0m" dir ="/var/local/ucs/" tmsh save sys ucs $date $hostname .ucs >/dev/null 2>&1 backup=`find $dir -name $date $hostname .ucs` if [[ $backup =~ ".ucs" ]] then echo -e "\tUCS Backup : \t\t\t\t Success" else echo -e "\t\033[31m UCS Backup : \t\t\t\t Failed\033[0m" fi } function finish_execute (){ echo -e "\n------------------------------------------------------------" echo -e "\033[32mDevice Check Finish .\n\033[0m" } begin_execute base_info cluster_info stastistic log_status device_hardware backup_config finish_execute
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 #!/bin/bash hostname=`uname -a |cut -d ' ' -f2` date =`date +"%y%m%d" `function begin_execute (){ echo -e "\033[32m\nBegin to execute shell script,Please Wait for a few minutes.\033[0m" echo "------------------------------------------------------------" echo "$hostname Check Information" > /var/tmp/$date $hostname .txt echo "------------------------------------------------------------" >> /var/tmp/$date $hostname .txt } function base_info (){ echo -e "\033[33m1. Basic equipment information\033[0m" echo -e "1. Basic equipment information" >> /var/tmp/$date $hostname .txt echo -e "\t 1). Hostname :\t\t\t\t $hostname " echo -e "\t 1). Hostname :\t\t\t $hostname " >> /var/tmp/$date $hostname .txt model=`tmsh show sys hardware|grep -A 1 "Platform" |grep ^" Name" |awk -F "Name " '{print $2}' ` echo -e "\t 2). BIG-IP Model : \t\t\t $model " echo -e "\t 2). BIG-IP Model : \t\t\t $model " >> /var/tmp/$date $hostname .txt sn=` tmsh show sys hardware | grep -E "Chassis Serial|Appliance Serial" |awk '{print $3}' ` echo -e "\t 3). Serial Number : \t\t\t $sn " echo -e "\t 3). Serial Number : \t\t\t $sn " >> /var/tmp/$date $hostname .txt ManagementIP=`tmsh list sys management-ip |awk '{print $3}' ` echo -e "\t 4). Management_IP : \t\t\t $ManagementIP " echo -e "\t 4). Management_IP : \t\t\t $ManagementIP " >> /var/tmp/$date $hostname .txt F5version=`tmsh show sys version|grep 'Version ' |awk '{print $2}' ` echo -e "\t 5). BIG-IP Version : \t\t\t $F5version \n" echo -e "\t 5). BIGIP Version : \t\t\t $F5version \n" >> /var/tmp/$date $hostname .txt } function cluster_info (){ echo -e "\033[33m2. Cluster status information\033[0m" echo -e "2. Cluster status information" >> /var/tmp/$date $hostname .txt failoverstatus=`tmsh show cm failover-status | grep ^"Status" | awk '{print $2}' ` echo -e "\t 1). Failover Status : \t\t\t $failoverstatus " echo -e "\t 1). Failover Status : \t\t\t $failoverstatus " >> /var/tmp/$date $hostname .txt syncstatus=`tmsh show cm sync-status | grep ^"Status" | awk '{print $2,$3}' ` echo -e "\t 2). Sync Status : \t\t\t $syncstatus \n" echo -e "\t 2). Sync Status : \t\t\t $syncstatus \n" >> /var/tmp/$date $hostname .txt } function stastistic (){ echo -e "\033[33m3. Business status information\033[0m" echo -e "3. Business status information" >> /var/tmp/$date $hostname .txt cpu=`tmsh show sys cpu|grep "Utilization" |awk '{print $3}' ` echo -e "\t 1). CPU Utilization :\t\t\t $cpu %" echo -e "\t 1). CPU Utilization : \t\t $cpu %" >> /var/tmp/$date $hostname .txt mem=`tmsh show sys memory|grep "TMM Memory Used" |awk '{print $5}' ` echo -e "\t 2). Memory Utilization :\t\t $mem %" echo -e "\t 2). Memory Utilization : \t\t $mem %" >> /var/tmp/$date $hostname .txt new_conn=`tmsh show sys performance connections| grep "Client Connections" |awk '{print $3}' ` echo -e "\t 3). New Connections : \t\t\t $new_conn " echo -e "\t 3). New Connections : \t\t $new_conn " >> /var/tmp/$date $hostname .txt active_conn=`tmsh show sys performance connections| grep ^"Connections" |awk '{print $3}' ` echo -e "\t 4). Total Connections :\t\t $active_conn " echo -e "\t 4). Total Connections : \t\t $active_conn " >> /var/tmp/$date $hostname .txt throughput=`tmsh show sys performance throughput | grep "Service" |head -1|awk '{print $2}' ` echo -e "\t 5). Throughput : \t\t\t $throughput \n" echo -e "\t 5). Throughput : \t\t $throughput \n" >> /var/tmp/$date $hostname .txt echo -e "\033[33m4. Virtual Server Health Information\033[0m" echo -e "\n4. Virtual Server Health Information" >> /var/tmp/$date $hostname .txt virtual_name=`tmsh list ltm virtual| grep "ltm virtual " |awk '{print $3}' ` available_=0 unknown_=0 offline_=0 for virtual_ in $virtual_name do vs_status=`tmsh show ltm virtual $virtual_ | grep Availability|awk '{print $3}' ` if [[ $vs_status = "available" ]] ;then available_=$[$available_ +1] elif [[ $vs_status = "unknown" ]] ;then unknown_=$[$unknown_ +1] elif [[ $vs_status = "offline" ]] ;then offline_=$[$offline_ +1] fi done echo -e "\t 1). Virtial Available : \t\t $available_ " echo -e "\t 2). Virtial unknown : \t\t\t $unknown_ " echo -e "\t 3). Virtial offline : \t\t\t $offline_ \n" echo -e "\t 1). Virtial Available : \t\t $available_ " >> /var/tmp/$date $hostname .txt echo -e "\t 2). Virtial unknown : \t\t $unknown_ " >> /var/tmp/$date $hostname .txt echo -e "\t 3). Virtial offline : \t\t $offline_ \n" >> /var/tmp/$date $hostname .txt } function log_status (){ echo -e "\033[33m5. Log Warning Information\033[0m" echo -e "5. Log Warning Information" >> /var/tmp/$date $hostname .txt sys_log=`cat /var/log/messages|grep -E 'warning|err|emerg|crit|alert' |wc -l` echo -e "\t 1). System Warning Log : \t\t $sys_log " echo -e "\t 1). System Warning Log : \t\t $sys_log " >> /var/tmp/$date $hostname .txt cat /var/log/messages|grep -E 'warning|err|emerg|crit|alert' |tail >> /var/tmp/$date $hostname .txt ltm_log=`cat /var/log/ltm|grep -E 'warning|err|emerg|crit|alert' |wc -l` echo -e "\t 2). LTM Warning Log : \t\t\t $ltm_log " echo -e "\t 2). LTM Warning Log : \t\t $ltm_log " >> /var/tmp/$date $hostname .txt cat /var/log/ltm|grep -E 'warning|err|emerg|crit|alert' |tail >> /var/tmp/$date $hostname .txt gtm_log=`cat /var/log/gtm|grep -E 'warning|err|emerg|crit|alert' |wc -l` echo -e "\t 3). GTM Warning Log : \t\t\t $gtm_log " echo -e "\t 3). GTM Warning Log : \t\t $gtm_log " >> /var/tmp/$date $hostname .txt cat /var/log/gtm|grep -E 'warning|err|emerg|crit|alert' |tail >> /var/tmp/$date $hostname .txt lcd_log=`tmsh show sys alert|grep -E 'warning|err|emerg|crit|alert' |wc -l` echo -e "\t 4). LCD Warning Log : \t\t $lcd_log \n" echo -e "\t 4). LCD Warning Log : \t\t $lcd_log " >> /var/tmp/$date $hostname .txt tmsh show sys alert|grep -E 'warning|err|emerg|crit|alert' |tail >> /var/tmp/$date $hostname .txt } function device_hardware (){ echo -e "\033[33m6. Device Hardware Information\033[0m" echo -e "\n6. Device Hardware Information" >> /var/tmp/$date $hostname .txt echo -e "\t 1). Device Fans Status :" echo -e "\n\t1) Device Fan Status Information:" >> /var/tmp/$date $hostname .txt fan_number=`tmsh show sys hardware field-fmt | grep "chassis-fan-status-index" |awk '{print $4}' ` for fan_n in $fan_number do fan_sta=`tmsh show sys hardware field-fmt | sed -n '/chassis-fan-status-index $fan_n {/,/}/p' | grep "status " |awk '{print $2}' ` if [ $fan_sta =="up" ] then echo -e "\t\tFans $fan_n Status : \t\t Success" echo -e "\t\tFan $fan_n : Up " >> /var/tmp/$date $hostname .txt else echo -e "\t\t\033[31mFans $fan_n Status: \t\t Failed\033[0m" echo -e "\t\tFan $fan_n : Failed" >> /var/tmp/$date $hostname .txt fi done echo -e "\t 2). Temperature $temp_n Status :" echo -e "\n\t2) Device Temperature Information:" >> /var/tmp/$date $hostname .txt echo -e "\t\tTemp_point\tlow\tcur\thi" >> /var/tmp/$date $hostname .txt temp_number=`tmsh show sys hardware field-fmt | grep "chassis-temperature-status-index" |awk '{print $4}' ` for temp_n in $temp_number do cur_temp=`tmsh show sys hardware field-fmt | grep -A7 "chassis-temperature-status-index $temp_n " | grep "temperature " |awk '{print $2}' ` lo_temp=`tmsh show sys hardware field-fmt | grep -A7 "chassis-temperature-status-index $temp_n " | grep "lo-limit" |awk '{print $2}' ` high_temp=`tmsh show sys hardware field-fmt | grep -A7 "chassis-temperature-status-index $temp_n " | grep "hi-limit" |awk '{print $2}' ` if [ $cur_temp -le $high_temp ] && [ $cur_temp -ge $lo_temp ];then echo -e "\t\tTemp $temp_n Status : \t\t Success" else echo -e "\t\t\033[31mTemp $temp_n Status : \t\t Failed\033[0m" fi echo -e "\t\tTemp_$temp_n \t$lo_temp \t$cur_temp \t$high_temp " >> /var/tmp/$date $hostname .txt done echo -e "\t 3). Device Power status :" echo -e "\n\t3) Device Power Information :" >> /var/tmp/$date $hostname .txt power_number=`tmsh show sys hardware field-fmt | grep "chassis-power-supply-status-index" |awk '{print $4}' ` for power_name in $power_number do power_status=`tmsh show sys hardware field-fmt | grep -A4 "chassis-power-supply-status-index 1" | grep "status up" |awk '{print $2}' ` if [ $power_status == "up" ];then echo -e "\t\tPower $power_name status: \t\t Success" else echo -e "\t\t\033[31mPower $power_name status: \t\t Failed\033[0m" fi echo -e "\t\tPower $power_name status : $power_status " >> /var/tmp/$date $hostname .txt done echo -e "\033[33m\n7. Device Interface Information\033[0m" echo -e "\n7. Device Interface Information :" >> /var/tmp/$date $hostname .txt trunk_name=`tmsh list net vlan one-line | grep "interfaces" | awk -F "interfaces { " '{print $2}' |awk -F " {" '{print $1}' |sort -u|grep -v ^"[0-9]" ` for trunk_ in $trunk_name do trunk_interface=`tmsh list net trunk $trunk_ interfaces | awk '{print $1}' |grep ^[0-9]` for interface_ in $trunk_interface do isun=`tmsh show net interface $interface_ field-fmt | grep "status up" |wc -l` if [[ $isun == "1" ]];then echo -e "\t Trunk : $trunk_ Interface $interface_ Status : \t Success" echo -e "\t Trunk : $trunk_ Interface $interface_ Status : \t Success" >> /var/tmp/$date $hostname .txt else echo -e "\t\033[31m Trunk : $trunk_ Interface $interface_ Status : \t Failed\033[0m" echo -e "\t Trunk : $trunk_ Interface $interface_ Status : \t failed" >> /var/tmp/$date $hostname .txt fi done done interface_name=`tmsh list net vlan one-line | grep "interfaces" | awk -F "interfaces { " '{print $2}' |awk -F " {" '{print $1}' |sort -u|grep ^[0-9] ` for inte_name in $interface_name do interface_sta=`tmsh show net interface $inte_name field-fmt | grep "status up" |wc -l` if [[ $interface_sta == "1" ]];then echo -e "\t Interface $inte_name Status : \t\t Success" echo -e "\t Interface $inte_name Status : \t\t Success" >> /var/tmp/$date $hostname .txt else echo -e "\t\033[31m Interface $inte_name Status : \t\t Failed\033[0m" echo -e "\t Interface $inte_name Status : \t\t failed" >> /var/tmp/$date $hostname .txt fi done } function backup_config (){ echo -e "\n\033[33m8. Backup configuration\033[0m" echo -e "\n8. Backup configuration :" >> /var/tmp/$date $hostname .txt dir ="/var/local/ucs/" tmsh save sys ucs $date $hostname .ucs >/dev/null 2>&1 backup=`find $dir -name $date $hostname .ucs` if [[ $backup =~ ".ucs" ]] then echo -e "\tUCS Backup : \t\t\t\t Success" echo -e "\tUCS Backup : \t\t\t\t Success" >> /var/tmp/$date $hostname .txt else echo -e "\t\033[31m UCS Backup : \t\t\t\t Failed\033[0m" echo -e "\tUCS Backup : \t\t\t\t failed" >> /var/tmp/$date $hostname .txt fi } function finish_execute (){ echo -e "\n------------------------------------------------------------" echo -e "\033[32mDevice Check Finish , Report in /var/tmp/$date$hostname .txt\n\033[0m" echo -e "\n------------------------------------------------------------" >> /var/tmp/$date $hostname .txt echo -e "Device Check Finish .\n" >> /var/tmp/$date $hostname .txt } begin_execute base_info cluster_info stastistic log_status device_hardware backup_config finish_execute