Estou tentando personalizar o script de evento do doshutdown do apcupsd para executar um determinado programa java que, entre outras coisas, no final, hiberna todas as máquinas virtuais e, finalmente, o próprio sistema principal.
/ etc / apcupsd / doshutdown está aqui:
[root@localhost apcupsd]# cat doshutdown
#!/bin/bash
#
# This shell script is placed in /etc/apcupsd
# will be called by /etc/apcupsd/apccontrol when apcupsd
# thinks to shutdown the system
# Instead of shutdown we first hibernate all VMWare VMs and the the system
wall ${USER} "Hibernate of VMs and system begins now."
rm /var/log/apcupsd_doshutdown_error.log
/usr/bin/java -version 2>> /var/log/apcupsd_doshutdown_error.log
/usr/bin/java -Dlogback.configurationFile=/etc/apcupsd/BTool.xml -cp /etc/apcupsd/BTool-assembly-1.0.jar Shutdown hibernate NOFLAG 2>> /var/log/apcupsd_doshutdown_error.log
wall ${USER} "Hibernate done."
# Do not run default shutdown after this!!!
exit 99
Quando o no-break é forçado a funcionar com bateria, o doshutdown (ou apcupsd) é impresso na parede
Power failure on UPS localhost.localdomain. Running on batteries.
root Hibernate of VMs and system begins now.
Battery time limit exceeded on UPS localhost.localdomain. Doing shutdown.
root Hibernate done.
apcupsd_doshutdown_error.log é:
/etc/apcupsd/doshutdown: line 11: /usr/bin/java: Permission denied
/etc/apcupsd/doshutdown: line 12: /usr/bin/java: Permission denied
Assim, o script doshutdown é iniciado, mas falha ao executar o programa java.
As permissões do Java são:
lrwxrwxrwx. 1 root root 22 Sep 25 11:45 /usr/bin/java -> /etc/alternatives/java
lrwxrwxrwx. 1 root root 46 Sep 25 11:45 /etc/alternatives/java -> /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin/java
-rwxr-xr-x. 1 root root 9488 Jan 21 20:25 /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin/java
Eu posso executar o doshutdown do terminal como usuário comum ou como root, mas ele falha quando iniciado pelo apcupsd como root.
Eu posso rodar o java no terminal e a versão é
$ java -version
openjdk version "1.8.0_71"
OpenJDK Runtime Environment (build 1.8.0_71-b15)
OpenJDK 64-Bit Server VM (build 25.71-b15, mixed mode)
Distro:
CentOS release 6.7 (Final)
Linux localhost.localdomain 2.6.32-573.18.1.el6.x86_64 #1 SMP Tue Feb 9 22:46:17 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
Qual é o motivo do erro de permissão e como corrigi-lo?
EDITAR: Adicionado mais permissões de java, versão java e distro. Adicionado java -version ao script doshutdown e erro relacionado no log.
Tags permissions java linux