/usr/sbin/crm_standby is in pacemaker-cli-utils 1.1.18-0ubuntu1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
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  | #!/bin/bash
HELPTEXT="crm_standby - convenience wrapper for crm_attribute
Check, enable or disable standby mode for a cluster node.
Nodes in standby mode may not host cluster resources.
Usage: crm_standby <command> [options]
Commands:
 --help                 Display this text and exit
 --version              Display version information and exit
 -G, --query            Display the current value of standby mode (on/off)
 -v, --update=<value>   Update the value of standby mode (on/off)
 -D, --delete           Let standby mode use default value
Options:
 -V, --verbose          Increase debug output (may be specified multiple times)
 -q, --quiet            Print nothing on stdout except the standby status
 -N, --node=<value>     Operate on the named node instead of the current one
 -l, --lifetime=<value> Until when the setting should take effect (reboot/forever)
 -i, --id=<value>       (Advanced) ID used to identify the XML attribute"
op=""
options=""
lifetime=0
target=""
BACKWARD_COMPATIBLE="get-value,attr-value:,delete-attr,uname:,attr-id:"
TEMP=$(getopt -o qDGQVN:U:v:i:l: \
    --long help,version,query,update:,delete,verbose,quiet,node:,lifetime:,id:,$BACKWARD_COMPATIBLE \
    -n 'crm_standby' -- "$@")
if [ $? -ne 0 ]; then
    echo
    echo "$HELPTEXT"
    exit 1
fi
# The quotes around $TEMP are essential!
eval set -- "$TEMP"
while true ; do
    case "$1" in
        -N|--node|-U|--uname)       target="$2"; shift 2;;
        -G|--query|--get-value)     options="$options --query"; op=g; shift;;
        -v|--update|--attr-value)   options="$options --update $2"; op=u; shift 2;;
        -D|--delete|--delete-attr)  options="$options --delete"; op=d; shift;;
        -l|--lifetime)              options="$options --lifetime $2"; lifetime=1; shift 2;;
        -i|--id|--attr-id)          options="$options --id $2"; shift 2;;
        -q|-Q|--quiet|-V|--verbose) options="$options $1"; shift;;
        --version)                  crm_attribute --version; exit 0;;
        --help)                     echo "$HELPTEXT"; exit 0;;
        --)                         shift ; break ;;
        *) echo "crm_standby: unrecognized option '$1'"; echo; echo "$HELPTEXT"; exit 1;;
    esac
done
# It's important to call cluster commands only after arguments are processed,
# so --version and --help work without problems even if those commands don't.
if [ "$target" = "" ]; then
    target=$(crm_node -n)
fi
options="-N $target -n standby $options"
if [ x$op = x ]; then
    options="$options -G"; op=g
fi
# If the user didn't explicitly specify a lifetime ...
if [ $lifetime -eq 0 ]; then
    case $op in
        g)
            # For query, report the forever entry if one exists, otherwise
            # report the reboot entry if one exists, otherwise report off.
            crm_attribute $options -l forever 2>&1 > /dev/null
            if [ $? -eq 0 ]; then
                options="$options -l forever"
            else
                options="$options -l reboot -d off"
            fi
            ;;
        u)
            # For update, default to updating the forever entry.
            options="$options -l forever"
            ;;
        d)
            # For delete, default to deleting both forever and reboot entries.
            crm_attribute $options -l forever
            crm_attribute $options -l reboot
            exit 0
            ;;
    esac
fi
crm_attribute $options
 |