| Server IP : 198.38.94.67 / Your IP : 216.73.217.178 Web Server : LiteSpeed System : Linux d6054.dxb1.stableserver.net 5.14.0-570.25.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Jul 9 04:57:09 EDT 2025 x86_64 User : azfilmst ( 1070) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /lib64/nagios/plugins/ |
Upload File : |
#!/bin/bash
#
# Script to monitor the saltmaster api authentication from omni
# Ref SYSENG-4017
#
# X-Auth-Tokens for saltmasters
saltmaster1_token=$(sudo mysql omni -BNe "select token from morton_master where api like '%/saltmaster1.a2hosting.com:8000%';")
saltmaster2_token=$(sudo mysql omni -BNe "select token from morton_master where api like '%/saltmaster2.a2hosting.com:8000%';")
bmdmaster1_token=$(sudo mysql omni -BNe "select token from morton_master where api like '%/mi3-bmdmaster1.a2hosting.com:8000%';")
bmdmaster2_token=$(sudo mysql omni -BNe "select token from morton_master where api like '%/mi3-bmdmaster2.a2hosting.com:8000%';")
saltmaster_array=(saltmaster1_"$saltmaster1_token" saltmaster2_"$saltmaster2_token" mi3-bmdmaster1_"$bmdmaster1_token" mi3-bmdmaster2_"$bmdmaster2_token")
masters_checked=0
host="mi3-ss100.a2hosting.com"
# Temporary output file which stores the output of the curl command
tmp_output_file="/tmp/.saltmaster_authcheck"
for saltmaster in ${saltmaster_array[@]}; do
master_host=$(echo "$saltmaster" | awk -F'_' '{print $1}')
token=$(echo "$saltmaster" | awk -F'_' '{print $2}')
if [ "$master_host" = "mi3-bmdmaster1" ] || [ "$master_host" = "mi3-bmdmaster2" ]; then
host='mi3-bmdsaltminion-1.a2hosting.com-68.66.209.51'
else
host='mi3-ss100.a2hosting.com'
fi
curl -s -X POST -H "User-Agent: python-requests/2.23.0" -H "Accept: application/json" -H "Connection: keep-alive" -H "Content-Type: application/json" -H "X-Requested-With: XMLHttpRequest" -H "X-Auth-Token: ${token}" -d '{"client": "local", "tgt": "'"${host}"'", "fun": "test.ping", "tgt_type": "glob", "ret": "", "full_return": false}' "https://"$master_host".a2hosting.com:8000/" -o ${tmp_output_file}
# If the curl command has a non zero exit status
if [ "$?" -ne 0 ]; then
echo "check_a2_omni_saltmaster1_authcheck - saltmaster1_authcheck - curl: non zero exit status - $master_host"
exit 2
# Else if the output from the curl command is not valid JSON
elif ! $(cat /tmp/.saltmaster_authcheck|jq -e '.' >/dev/null 2>&1); then
echo "check_a2_omni_saltmaster1_authcheck - non JSON output returned - $master_host"
exit 2
fi
# Result for the host in the JSON output. 'true' if test.ping succeeded from saltmaster.
result=$(cat /tmp/.saltmaster_authcheck|jq -r ".return[].\"$host\"")
# if true increment masters_checked by 1, or else break from loop
if [ "${result}" == "true" ]; then
masters_checked=$((masters_checked + 1))
else
break
fi
done
# if masters checked = the number of salt masters, all is well, otherwise error
if (( $masters_checked == ${#saltmaster_array[@]} )); then
echo "check_a2_omni_saltmaster1_authcheck - OK"
exit 0
else
echo "check_a2_omni_saltmaster1_authcheck - Host ${host} connectivity from "$master_host" failed"
exit 2
fi