HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux ns3133907 6.8.0-86-generic #87-Ubuntu SMP PREEMPT_DYNAMIC Mon Sep 22 18:03:36 UTC 2025 x86_64
User: cssnetorguk (1024)
PHP: 8.2.28
Disabled: NONE
Upload Files
File: //usr/share/bash-completion/completions/monit
# install this file to /etc/bash_completion.d/ directory


# get the path to the configuration file if specified on the command-line
_monit_config()
{
    local haveconfig opt
    for opt in "${COMP_WORDS[@]}"
    do
        if [[ $haveconfig == 1 ]]
        then
            local _configuration=`eval echo ${opt//>}`
            if [ -f "${_configuration}" ]
            then
                configuration="-c ${_configuration}"
            fi
            return
        elif [[ $opt == "-c" ]]
        then
            haveconfig=1
        fi
    done
}


# check if we need to use sudo
_monit_sudo()
{
    if [[ $($monit $configuration -t 2>&1 | grep "Permission denied") ]]
    then
        sudo="sudo"
    fi
}


# get monit service list
_monit_services()
{
    _monit_config
    _monit_sudo
    services=$($sudo $monit $configuration -vIt | grep "Name" | sed -e "s/.* = //")
}


# get monit servicegroup list
_monit_servicegroups()
{
    _monit_config
    _monit_sudo
    servicegroups=$($sudo $monit $configuration -vIt | grep "Group" | sed -e "s/.* = //" | sed -e "s/, /\n/g")
}


_monit()
{
    local cur prev
    local options="--batch --conf --daemon --group --hash --help --id --interactive --logfile --pidfile --resetid --statefile --test --verbose --version"
    local commands="start stop restart monitor unmonitor reload status summary report quit validate procmatch"
    local report="up down initialising unmonitored total"

    monit=${COMP_WORDS[0]}
    
    COMPREPLY=()

    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"

    case "${prev}" in
        -c|--conf|-l|--logfile|-p|--pidfile|-s|--statefile|-H|--hash)
            _filedir
            return 0
            ;;
        -g|--group)
            _monit_servicegroups
            COMPREPLY=( $(compgen -W "${servicegroups}" -- ${cur}) )
            return 0
            ;;
        start|stop|restart|monitor|unmonitor)
            _monit_services
            services+=" all"
            COMPREPLY=( $(compgen -W "${services}" -- ${cur}) )
            return 0
            ;;
        status|summary)
            _monit_services
            COMPREPLY=( $(compgen -W "${services}" -- ${cur}) )
            return 0
            ;;
        report)
            COMPREPLY=( $(compgen -W "${report}" -- ${cur}) )
            return 0
            ;;
        procmatch)
            _pnames
            return 0
            ;;
        *)
        ;;
    esac

    case "${cur}" in
        -*)
            COMPREPLY=( $(compgen -W "${options}" -- ${cur}) )
            return 0
            ;;
        *)
            COMPREPLY=($(compgen -W "${commands}" -- ${cur}))  
            ;;
    esac

    return 0
}
complete -F _monit monit