web-dev-qa-db-fra.com

Equivalent Ubuntu du succès / échec de CentOS

Beaucoup de services dans CentOS ressemblent à ceci (sauf vert et rouge, respectivement):

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

Cela est dû au fait que les scripts /etc/init.d utilisent des scripts d’utilitaire dans /etc/rc.d/init.d/functions appelés success et failure. Voici un extrait de /etc/init.d/sshd dans CentOS:

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

Ma question est la suivante: existe-t-il un équivalent d'ubuntu? Je pourrais copier les scripts, mais ils sont plus compliqués que vous ne le pensez et pourquoi réinventer la roue si je ne suis pas obligé?

8
durron597

Je pense que les fonctions que vous recherchez proviennent de /lib/lsb/init-functions et sont nommées log_success_msg et log_failure_msg:

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

Dans cette sortie, le premier * est gris, le second est rouge (cas d'erreur). Pas très coloré, juste assez pour faire passer le message ...


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
}

[ ... ]
7
Volker Siegel

Vous pouvez utiliser les fonctions fournies par le package _lsb-base_ dans _/lib/lsb/init-functions_. J'ai vu des scripts _init.d_ extraire ce fichier, puis utiliser les fonctions qu'il contient, tels que _log_end_msg_:

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

Par exemple, un extrait de _/etc/init.d/ssh_ (case pour 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
_
2
muru