A última linha nunca é executada porque você sai do script antes dela.
exit 0
deve ser a última linha do seu script.
Eu escrevi um pequeno script para fazer upload de um log para o meu servidor ftp, você pode ignorar tudo além da última linha que deve reiniciar o rsyslog. Executar o comando a partir da linha de comando funciona bem, mas não funciona no arquivo de script. Alguém pode ajudar?
#!/bin/bash
mv /var/log/rtx8660.log /home/vocovo/RTX8660_$(date +"%Y-%m-%d-%H_%M").log
touch /var/log/rtx8660.log
cd /home/vocovo
FTPLOG=/tmp/ftplogfile
ftp -inv <<! > $FTPLOG
open SERVER
user USER PASS
cd /Wickes_Test
prompt
mput RTX*
close
quit
!
FTP_SUCCESS_MSG="226 Transfer complete"
if fgrep "$FTP_SUCCESS_MSG" $FTPLOG ;then
echo "ftp OK"
rm RTX*
else
echo "ftp Error: "$OUT
fi
exit 0
service rsyslog restart
A última linha nunca é executada porque você sai do script antes dela.
exit 0
deve ser a última linha do seu script.
Você não mencionou qual versão do Debian, mas supondo que esteja usando uma retransmitida no init.d, você pode tentar:
/etc/init.d/rsyslog restart
Lembre-se de executar como root.