Executar na inicialização, exibir com zenity
Crie um arquivo /usr/local/sbin/rkhunter-check
e torne-o executável:
sudo touch /usr/local/sbin/rkhunter-check
sudo chmod +x /usr/local/sbin/rkhunter-check
Edite o arquivo gksu gedit /usr/local/sbin/rkhunter-check
#!/usr/bin/env bash
export DISPLAY=:0
MAINUSER="$(awk -F: '==1000{print }' /etc/passwd)"
LOG=/tmp/.rkhunter-warnings
rm -f $LOG
touch $LOG
rkhunter --checkall --report-warnings-only | while read OUTPUT; do
if [ "$OUTPUT" != "" ]; then
OUTPUT="${OUTPUT//[\'\"\']/}"
echo "$OUTPUT">>$LOG
fi
done
if [ "$(cat $LOG)" = "" ]; then
#like this there is always a notification, even if there is no warning, it will show an empty notification.
echo "#no warnings">$LOG
fi
if [ "$(cat $LOG)" != "" ]; then
su $MAINUSER -c 'zenity --text-info --width 800 --title "Rkhunter warnings" < '"$LOG"
fi
Se o rkhunter rodar gerar alguma saída (apenas avisos), este script aparecerá como uma janela rolável com a saída rkhunter.
-
cria um script de inicialização do systemd
Crie o script
/etc/systemd/system/rkhunter.service
:[Unit] Description=starts rkhunter and displays any findings with zenity [Service] ExecStartPre=/bin/sleep 1800 ExecStart=/usr/local/sbin/rkhunter-check [Install] WantedBy=default.target
Atualize o systemd com:
sudo systemctl daemon-reload sudo systemctl enable rkhunter sudo systemctl start rkhunter
-
inicie por
/etc/rc.local
Em sistemas sem
systemd
, chame o script em tempo de execução em/etc/rc.local
e coloque um sleep antes de todo o comando:gksu gedit /etc/rc.local
Adicione este comando antes da última linha em
/etc/rc.local
que contémexit 0
:sleep 1800 && /usr/local/sbin/rkhunter-check &
Ambas as soluções aguardarão 30 minutos antes de executar a verificação do rkhunter como root .
Você também pode combinar essa solução com a solução de envio de notificações, pois, caso não haja avisos, a caixa de diálogo do zenity não é perfeita. uma notificação seria suficiente nesse caso
#!/usr/bin/env bash
export DISPLAY=:0
MAINUSER="$(awk -F: '==1000{print }' /etc/passwd)"
LOG=/tmp/.rkhunter-warnings
echo ""> $LOG
rkhunter --checkall --report-warnings-only | while read OUTPUT; do
if [ "$OUTPUT" != "" ]; then
OUTPUT="${OUTPUT//[\'\"\']/}"
echo "$OUTPUT">>$LOG
fi
done
if [ "$(cat $LOG)" = "" ]; then
MAINUSER="$(awk -F: '==1000{print }' /etc/passwd)"
if [ -r "/home/$MAINUSER/.dbus/Xdbus" ]; then
. "/home/$MAINUSER/.dbus/Xdbus"
fi
su $MAINUSER -c $"notify-send \"rkhunter: no warnings\""
fi
if [ "$(cat $LOG)" != "" ]; then
su $MAINUSER -c 'zenity --text-info --width 800 --title "Rkhunter warnings" < '"$LOG"
fi
source: Como executar um script durante a inicialização como raiz