LinuxForum.Fans
Тема

Удаленное управление демонами

Автор: opryatniyav 195 сообщений 20485 просмотров
#194674
opryatniyav написал:
подскажите пожалуйста как в данном скрипте настроить логирование ошибок и отправку их по почте

Если использовать конструкцию из вашего предыдущего сообщения, то так (только обратите внимание на символ перенаправления «>>» вместо «>» — вывод каждой из команд будет дописывать в файл, вместо перезаписи).

text

#!/bin/bash
ssh 10.77.*.* /etc/init.d/jboss stop 2>> /var/log/script.log || pkill -9 java 2>> /var/log/script.log && scp /u02/file 10.77.*.*:/u02/file 2>> /var/log/script.log && ssh 10.77.*.* /etc/init.d/jboss start 2>> /var/log/script.log
cat /var/log/script.log | mail -s "Error log on $(hostname -f)" root@YOUR-ADDRESS
rm -f /var/log/script.log
#194841

mail -s "Error log on $(hostname -f)" - hostname это что имя хоста с которого отправка идет?

root@YOUR-ADDRESS - а это на какой адрес будут отсылаться логи?

а можно сделать так чтоб отправлялся лог только в случае ошибки а не постоянно
просто есть 15 серверов и чтоб было понятно что если пришло одно письмо то скрипт не выполнился на одном сервере
а если 5 то на 5

Lupo Alberto огромное спасибо за помощь

#194843
opryatniyav написал:
mail -s "Error log on $(hostname -f)" - hostname это что имя хоста с которого отправка идет

Если совсем уж точно, следующая за опцией «-s» строка даёт тему отправляемому сообщению.

opryatniyav написал:
root@YOUR-ADDRESS - а это на какой адрес будут отсылаться логи?

Да.

opryatniyav написал:
можно сделать так чтоб отправлялся лог только в случае ошибки а не постоянно

Как-то так

text
[ -f /var/log/script.log ] && cat /var/log/script.log | mail -s "Error log on $(hostname -f)" root@YOUR-ADDRESS
#194845

а ключ -f что означает $(hostname -f)

#194848
opryatniyav написал:
а ключ -f что означает $(hostname -f)

[console]lupo@gentoo-laptop ~ % hostname -f
gentoo-laptop.ha0s.net
lupo@gentoo-laptop ~ % hostname
gentoo-laptop[/console]

#194954

[console]
#!/bin/bash
ssh 10.77.*.* /etc/init.d/jboss stop 2>> /var/log/script.log || pkill -9 java 2>> /var/log/script.log && scp /u02/file 10.77.*.*:/u02/file 2>> /var/log/script.log && ssh 10.77.*.* /etc/init.d/jboss start 2>> /var/log/script.log
[ -f script.log ] && cat script.log | mail -s "Error log on $(hostname -f)" root@YOUR-ADDRESS
[/console]
написал мне это что не так?
./ssh_02.sh: line 3: [: missing `]'

#194959

opryatniyav, это я запутался и вас запутал. Ведь сам скрипт запускается на локальной машине, а лог нужно получить с удалённой.
Попробуйте так:

text
#!/bin/bash
ssh 10.77.*.* '/etc/init.d/jboss stop 2>> /var/log/script.log || pkill -9 java 2>> /var/log/script.log' && \
scp /u02/file 10.77.*.*:/u02/file && \
ssh 10.77.*.* '/etc/init.d/jboss start 2>> /var/log/script.log' \
ssh 10.77.*.* '[ -f script.log ] && cat script.log | mail -s "Error log on $(hostname -f)" root@YOUR-ADDRESS'
#194961

а зачем мне лог с удаленного сервера если скрипт выполняется на клиенте и мне нужно видить в почте отчет ошибок если он не выполнился

#194962
opryatniyav написал:
написал мне это что не так?
./ssh_02.sh: line 3: [: missing `]'

А это, вероятно, из-за того, что вы при копировании скрипта на форуме, скопировали и переносы wink

#194964

какие здесь переносы чтото понять не могу вот третяя строка моего скрипта

[ -f script.log ] && cat script.log | mail -s "Error log on $(hostname -f)" aleksandr.opryatniy@co.ksoe.com.ua

а он мне этот матюк ./ssh_02.sh: line 3: [: missing `]'

#194965

ssh_02.sh ето имя моего срипта

#194973
opryatniyav написал:
а зачем мне лог с удаленного сервера если скрипт выполняется на клиенте и мне нужно видить в почте отчет ошибок если он не выполнился

Значит, я не правильно вас понял.

А сама конструкция работает:
[console]lupo@gentoo-laptop ~ $ ls -l > script.log
lupo@gentoo-laptop ~ $ [ -f script.log ] && cat script.log | mail -s "Error log on $(hostname -f)" root
lupo@gentoo-laptop ~ $ mail
Mail version 8.1.2 01/15/2001. Type ? for help.
"/var/mail/lupo": 1 message 1 new
>N 1 lupo@gentoo-lapto Fri Sep 23 16:03 31/1517 Error log on gentoo-laptop.ha0s.net
& [/console]

Что у вас за оболочка на машине, на которой вы запускаете скрипт?
Сама отправка почты настроена?

#194976

я незнаю а как посмотреть какая оболочка
стоит SLES9 SP4
оболочка стандартная

#194977

opryatniyav, какое-то всё равно «корявое» решение получается.
Сам скрипт, IMHO, должен находиться на удалённом компьютере и отчёт должен приходить оттуда.

#194978

почта настроена через postfix

#194979

мне нужен отчет только для того чтобы понять если нету связи с удаленным сервером приходил отчет и я мог обратно запустить скрипт когда появится связь

#194980
opryatniyav написал:
я незнаю а как посмотреть какая оболочка

Покажите
[console]echo $SHELL[/console]

#194983

[console]linuxssh01:/bash # echo $SHELL
/bin/bash[/console]

#194986

[console]linuxssh01:/bash # ls -l > scrip.log
linuxssh01:/bash # [ -f script.log ] && cat script.log | mail -s "Error log on $(hostname -f)" root
linuxssh01:/bash # mail
mailx version nail 10.6 11/15/03. Type ? for help.
"/var/mail/root": 2 messages 2 new
>N 1 root@linux.site Thu Sep 15 18:28 28/878 SuSEconfig: xntp.caveats
N 2 root@linux.site Thu Sep 15 18:28 43/1819 SuSEconfig: SuSEfirewall2_update[/console]

#194990
opryatniyav написал:
linuxssh01:/bash # ls -l > scrip.log

Букву пропустили — ls -l > script.log

Войдите или зарегистрируйтесь, чтобы ответить.