Equivalência Ubuntu do sucesso / falha do CentOS

8

Muitos serviços no CentOS se parecem com isso (exceto verde e vermelho, respectivamente):

$ sudo service blah start
Starting blah:           [  OK  ]
$ sudo service notrunning stop
Stopping notrunning:     [FAILED]

Isso acontece porque os scripts /etc/init.d usam scripts de utilitários em /etc/rc.d/init.d/functions chamados success e failure . Aqui está um trecho de /etc/init.d/sshd no CentOS:

echo -n $"Starting $prog: "
$SSHD $OPTIONS && success || failure

Minha pergunta é: existe um equivalente no Ubuntu? Eu poderia copiar os scripts, mas eles são mais complicados do que você pensa, e por que reinventar a roda se eu não precisar?

    
por durron597 01.10.2014 / 23:01

2 respostas

7

Acho que as funções que você está procurando são provenientes de /lib/lsb/init-functions e nomeadas log_success_msg e log_failure_msg :

$ . /lib/lsb/init-functions
$ log_success_msg foo
 * foo
$ log_failure_msg foo 
 * foo

Nesta saída, o primeiro * é cinza, o segundo é vermelho (caso de erro). Não é extremamente colorido, apenas para obter o ponto de vista ...


De /lib/lsb/init-functions :

[ ... ]

log_success_msg () {
    if [ -n "${1:-}" ]; then
        log_begin_msg $@
    fi
    log_end_msg 0
}

log_failure_msg () {
    if [ -n "${1:-}" ]; then
        log_begin_msg $@ "..."
    fi
    log_end_msg 1 || true
}

[ ... ]
    
por Volker Siegel 01.10.2014 / 23:18
2

Você pode usar as funções fornecidas pelo pacote lsb-base em /lib/lsb/init-functions . Eu vi init.d scripts sourcing esse arquivo e, em seguida, usando as funções dentro, como log_end_msg :

$ (. /lib/lsb/init-functions; log_end_msg 1)
   ...fail!
$ (. /lib/lsb/init-functions; log_end_msg 0)
   ...done.

Por exemplo, um snippet de /etc/init.d/ssh ( case para start ):

if start-stop-daemon --start --quiet --oknodo --pidfile /var/run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then
    log_end_msg 0 || true
else
    log_end_msg 1 || true
fi
    
por muru 01.10.2014 / 23:18