Script bash via CRON (Linux CentOS 5) [RESOLVIDO]

1. Script bash via CRON (Linux CentOS 5) [RESOLVIDO]

Janduy Euclides da Silva
janduy

(usa CentOS)

Enviado em 17/03/2017 - 12:07h

Olá pessoal, boa tarde.

Estou passando por uma coisa curiosa com um linux CentOS 5, estou usando um script bash para rodar a cada 5 minutos, ele deve coletar algumas informacoes e me enviar por e-mail, até aqui tudo certo. O problema é que quando eu coloco isso no meu cron ele roda mas nao envia os dados, curioso que se eu rodar o script "sh /root/meuscript.sh" funciona, ele roda e me envia os dados.

Eu já dei permissões mas sem sucesso, olhando no log do messages e cron ele roda a cada 5 minutos como configurado.

​contrab -e
5,10,15,20,25,30,35,40,45,50,55 * * * * /bin/sh /root/meuscript.sh >/dev/null 2>&1​

Log messages:
Mar 17 09:45:01 srvcentos /root/meuscript.sh: ########## Executing ##########
Mar 17 09:45:01 srvcentos /root/meuscript.sh: No Phones SIP Registration Offline
Mar 17 09:45:01 srvcentos /root/meuscript.sh: ########## End Execution ##########

​Log messages, quando eu executo o script "sh /root/meuscript.sh"
​Mar 17 09:49:57 srvcentos /root/meuscript.sh: ########## Executing ##########
Mar 17 09:49:57 srvcentos /root/meuscript.sh: Seguintes ramais ou trunks offline. Email enviado para: janduyeuclides@gmail.com
Mar 17 09:49:57 srvcentos /root/meuscript.sh: Extension: 8301
Mar 17 09:49:57 srvcentos /root/meuscript.sh:
Mar 17 09:49:57 srvcentos /root/meuscript.sh: Total Offline: 1
Mar 17 09:49:57 srvcentos /root/meuscript.sh: ########## End Execution ##########
Mar 17 09:50:01 srvcentos /root/meuscript.sh: ########## Executing ##########
Mar 17 09:50:01 srvcentos /root/meuscript.sh: No Phones SIP Registration Offline
Mar 17 09:50:01 srvcentos /root/meuscript.sh: ########## End Execution ##########

​Desde ja agradeço a ajuda


  


2. Tenta isso

Bruno Cavalcanti
Bruno_Cavalcanti

(usa CentOS)

Enviado em 17/03/2017 - 12:34h

*/5 * * * * su - root -c /bin/sh /root/meuscript.sh
*/5 = 5 minutos de 60
su - root -c = subistitute user root --command /bin/sh /root/meuscript.sh
espero que resolva

abraço


3. Re: Script bash via CRON (Linux CentOS 5) [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 17/03/2017 - 12:35h

Deixe seu cron dessa forma abaixo:


*/5 * * * * /bin/sh /root/meuscript.sh >> /home/usuario/log 2>&1


Assim, todo erro ele vai reportar para esse arquivo ae. Já t adiantando, o cron tem um ambiente próprio quando ele roda os scripts, por isso q dá esse xabu todo. O log vai t mostrar exatamente o q tá ocorrendo e a partir dele vc conserta as paradas, blz? Caso não saiba o q fazer, poste a saída aqui.
--
Renato Carneiro Pacheco
Certificado Linux LPIC-1
Especialista em Segurança em Redes de Computadores
Graduado em Redes de Comunicação

http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh


4. Re: Script bash via CRON (Linux CentOS 5) [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 17/03/2017 - 12:37h

Bruno_Cavalcanti escreveu:

*/5 * * * * su - root -c /bin/sh /root/meuscript.sh
*/5 = 5 minutos de 60
su - root -c = subistitute user root --command /bin/sh /root/meuscript.sh
espero que resolva

abraço


Acredito q ele já esteja executando como root (caso ele tenha executado o comando crontab -e logado como root).

--
Renato Carneiro Pacheco
Certificado Linux LPIC-1
Especialista em Segurança em Redes de Computadores
Graduado em Redes de Comunicação

http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh


5. Re: Script bash via CRON (Linux CentOS 5) [RESOLVIDO]

Janduy Euclides da Silva
janduy

(usa CentOS)

Enviado em 17/03/2017 - 13:38h

renato_pacheco escreveu:

Bruno_Cavalcanti escreveu:

*/5 * * * * su - root -c /bin/sh /root/meuscript.sh
*/5 = 5 minutos de 60
su - root -c = subistitute user root --command /bin/sh /root/meuscript.sh
espero que resolva

abraço


Acredito q ele já esteja executando como root (caso ele tenha executado o comando crontab -e logado como root).

--
Renato Carneiro Pacheco
Certificado Linux LPIC-1
Especialista em Segurança em Redes de Computadores
Graduado em Redes de Comunicação

http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh

Boa tarde, pessoal.

Log:
/root/meuscript.sh: ########## End Execution ##########
/root/meuscript.sh: ########## Executing ##########
/root/meuscript.sh: line 21: root: command not found ==> AQUI É O XABU!KKK
/root/meuscript.sh: No Phones SIP Registration Offline
/root/meuscript.sh: ########## End Execution ##########



A linha 21 informada no erro é "if asterisk -rx "sip show peers" | grep 'UNKNOWN\|UNREACHABLE\|LAGGED' | grep -vE $PATTERN_EXCLUDE"

Estranho que a linha está correta, eu testei a parte, segue anexo meu script.
#!/bin/sh
logger -st$0 '########## Executing ##########'
PBX_NAME="srvcentos"
EMAIL_TO="janduyeuclides@gmail.com"
PATTERN_EXCLUDE='(825[0467]|826[1])'
EMAIL_HEADER="Verificacao de Terminais SIP - Existem ramais com problemas!"
EMAIL_FOOTER="Acione o Suporte."
rm -f /tmp/offlinePhones
if asterisk -rx "sip show peers" | grep 'UNKNOWN\|UNREACHABLE\|LAGGED' | grep -vE $PATTERN_EXCLUDE
then
touch /tmp/offlinePhones
echo $EMAIL_HEADER > /tmp/offlinePhones
echo "" >> /tmp/offlinePhones
echo "Os seguintes ramais ou trunks estao Offline" >> /tmp/offlinePhones
echo "" >> /tmp/offlinePhones
asterisk -rx "sip show peers" | grep 'UNKNOWN\|UNREACHABLE\|LAGGED' | grep -vE $PATTERN_EXCLUDE | awk -F"(" 'NR > 0 {print "Extension: " $1} END { print "\nTotal Offline:" NR}' >> /tmp/offlinePhones
echo "" >> /tmp/offlinePhones
echo $EMAIL_FOOTER >> /tmp/offlinePhones
cat /tmp/offlinePhones | mail -s "$NUM_OFFLINE Phones Offline" $EMAIL_TO -- -F"$PBX_NAME"
logger -st $0 "Seguintes ramais ou trunks offline. Email enviado para: $EMAIL_TO"
asterisk -rx "sip show peers" | grep 'UNKNOWN\|UNREACHABLE\|LAGGED' | grep -vE $PATTERN_EXCLUDE | awk -F"(" 'NR > 0 {print "Extension: " $1} END { print "\nTotal Offline: " NR}' | logger -st $0
rm -f /tmp/offlinePhones
else
logger -st $0 "No Phones SIP Registration Offline "
fi

logger -st $0 '########## End Execution ##########'


Desde já agradeço a todos a ajuda!

Atenciosamente,
Janduy Euclides


6. Re: Script bash via CRON (Linux CentOS 5) [RESOLVIDO]

Bruno Cavalcanti
Bruno_Cavalcanti

(usa CentOS)

Enviado em 17/03/2017 - 13:41h

renato_pacheco escreveu:

Bruno_Cavalcanti escreveu:

*/5 * * * * su - root -c /bin/sh /root/meuscript.sh
*/5 = 5 minutos de 60
su - root -c = subistitute user root --command /bin/sh /root/meuscript.sh
espero que resolva

abraço


Acredito q ele já esteja executando como root (caso ele tenha executado o comando crontab -e logado como root).

--
Renato Carneiro Pacheco
Certificado Linux LPIC-1
Especialista em Segurança em Redes de Computadores
Graduado em Redes de Comunicação

http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh


Segue linhas abaixo do cron de um de meus servidores Centos 5.
Não imagina o quanto eu apanhei para aprender que nem tudo é como parece.
Quando o script cria arquivo de controle, precisa excluir arquivo de algum usuario de serviço em CentOS 5 as vezes da alguns problemas de permissão...

nessas linhas estou forçando a executar o script como root.
Nas versões mais atuais do sistema, não acontece esse problema.

*/5 * * * * su - roo -c /root/bin/pmenos_check_fidelizacao.sh
*/10 * * * * su - root -c /root/bin/pmenos_check_criptografia.sh

Abraço e Viva o Linux





7. Re: Script bash via CRON (Linux CentOS 5) [RESOLVIDO]

Janduy Euclides da Silva
janduy

(usa CentOS)

Enviado em 17/03/2017 - 14:22h

Bruno_Cavalcanti escreveu:

renato_pacheco escreveu:

Bruno_Cavalcanti escreveu:

*/5 * * * * su - root -c /bin/sh /root/meuscript.sh
*/5 = 5 minutos de 60
su - root -c = subistitute user root --command /bin/sh /root/meuscript.sh
espero que resolva

abraço


Acredito q ele já esteja executando como root (caso ele tenha executado o comando crontab -e logado como root).

--
Renato Carneiro Pacheco
Certificado Linux LPIC-1
Especialista em Segurança em Redes de Computadores
Graduado em Redes de Comunicação

http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh


Segue linhas abaixo do cron de um de meus servidores Centos 5.
Não imagina o quanto eu apanhei para aprender que nem tudo é como parece.
Quando o script cria arquivo de controle, precisa excluir arquivo de algum usuario de serviço em CentOS 5 as vezes da alguns problemas de permissão...

nessas linhas estou forçando a executar o script como root.
Nas versões mais atuais do sistema, não acontece esse problema.

*/5 * * * * su - roo -c /root/bin/pmenos_check_fidelizacao.sh
*/10 * * * * su - root -c /root/bin/pmenos_check_criptografia.sh

Abraço e Viva o Linux




Bruno_Cavalcanti escreveu:

renato_pacheco escreveu:

Bruno_Cavalcanti escreveu:

*/5 * * * * su - root -c /bin/sh /root/meuscript.sh
*/5 = 5 minutos de 60
su - root -c = subistitute user root --command /bin/sh /root/meuscript.sh
espero que resolva

abraço


Acredito q ele já esteja executando como root (caso ele tenha executado o comando crontab -e logado como root).

--
Renato Carneiro Pacheco
Certificado Linux LPIC-1
Especialista em Segurança em Redes de Computadores
Graduado em Redes de Comunicação

http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh


Segue linhas abaixo do cron de um de meus servidores Centos 5.
Não imagina o quanto eu apanhei para aprender que nem tudo é como parece.
Quando o script cria arquivo de controle, precisa excluir arquivo de algum usuario de serviço em CentOS 5 as vezes da alguns problemas de permissão...

nessas linhas estou forçando a executar o script como root.
Nas versões mais atuais do sistema, não acontece esse problema.

*/5 * * * * su - roo -c /root/bin/pmenos_check_fidelizacao.sh
*/10 * * * * su - root -c /root/bin/pmenos_check_criptografia.sh

Abraço e Viva o Linux




Opa Bruno, boa tarde.
Brother no meu server ele roda, vejo no log do cron, mas sem progresso.
A versao do meu CentOS release 5.4 (Final)

Deixei assim => */5 * * * * su - root -c /bin/sh /root/meuscript.sh >>/tmp/logcron 2>&1
Ja validei assim tambem => */5 * * * * su - root -c /bin/sh /root/meuscript.sh

Abs,
Janduy Euclides

Atenciosamente,
Janduy Euclides


8. Re: Script bash via CRON (Linux CentOS 5) [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 17/03/2017 - 14:56h

janduy escreveu:

Log:
/root/meuscript.sh: ########## End Execution ##########
/root/meuscript.sh: ########## Executing ##########
/root/meuscript.sh: line 21: root: command not found ==> AQUI É O XABU!KKK
/root/meuscript.sh: No Phones SIP Registration Offline
/root/meuscript.sh: ########## End Execution ##########

A linha 21 informada no erro é "if asterisk -rx "sip show peers" | grep 'UNKNOWN\|UNREACHABLE\|LAGGED' | grep -vE $PATTERN_EXCLUDE"

Estranho que a linha está correta, eu testei a parte, segue anexo meu script.
#!/bin/sh
logger -st$0 '########## Executing ##########'
PBX_NAME="srvcentos"
EMAIL_TO="janduyeuclides@gmail.com"
PATTERN_EXCLUDE='(825[0467]|826[1])'
EMAIL_HEADER="Verificacao de Terminais SIP - Existem ramais com problemas!"
EMAIL_FOOTER="Acione o Suporte."
rm -f /tmp/offlinePhones
if asterisk -rx "sip show peers" | grep 'UNKNOWN\|UNREACHABLE\|LAGGED' | grep -vE $PATTERN_EXCLUDE
then
touch /tmp/offlinePhones
echo $EMAIL_HEADER > /tmp/offlinePhones
echo "" >> /tmp/offlinePhones
echo "Os seguintes ramais ou trunks estao Offline" >> /tmp/offlinePhones
echo "" >> /tmp/offlinePhones
asterisk -rx "sip show peers" | grep 'UNKNOWN\|UNREACHABLE\|LAGGED' | grep -vE $PATTERN_EXCLUDE | awk -F"(" 'NR > 0 {print "Extension: " $1} END { print "\nTotal Offline:" NR}' >> /tmp/offlinePhones
echo "" >> /tmp/offlinePhones
echo $EMAIL_FOOTER >> /tmp/offlinePhones
cat /tmp/offlinePhones | mail -s "$NUM_OFFLINE Phones Offline" $EMAIL_TO -- -F"$PBX_NAME"
logger -st $0 "Seguintes ramais ou trunks offline. Email enviado para: $EMAIL_TO"
asterisk -rx "sip show peers" | grep 'UNKNOWN\|UNREACHABLE\|LAGGED' | grep -vE $PATTERN_EXCLUDE | awk -F"(" 'NR > 0 {print "Extension: " $1} END { print "\nTotal Offline: " NR}' | logger -st $0
rm -f /tmp/offlinePhones
else
logger -st $0 "No Phones SIP Registration Offline "
fi

logger -st $0 '########## End Execution ##########'


Desde já agradeço a todos a ajuda!

Atenciosamente,
Janduy Euclides


Aqui é simples, mano. Aprenda q pra colocar qualquer coisa no cron, o seu script precisa q todos os executáveis estejam com o seu caminho absoluto! No caso do asterisk, vc precisa colocar o caminho absoluto dele. Se não souber, digite which asterisk pra descobrir. Depois vc altera no seu script. Outra coisa é em relação ao cron. Nada tem a v o q o Bruno colocou lá, pois vc já tá usando o comando crontab -e com o usuário root. Deixe seu cron assim:


*/5 * * * * /caminho/script/script.sh >> /caminho/log 2>&1


E veja se há mais erros. Não esqueça de deixar o seu script com permissões de execução:


chmod +x /caminho/script/script.sh

--
Renato Carneiro Pacheco
Certificado Linux LPIC-1
Especialista em Segurança em Redes de Computadores
Graduado em Redes de Comunicação

http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh


9. Re: Script bash via CRON (Linux CentOS 5) [RESOLVIDO]

Janduy Euclides da Silva
janduy

(usa CentOS)

Enviado em 17/03/2017 - 16:00h

renato_pacheco escreveu:

janduy escreveu:

Log:
/root/meuscript.sh: ########## End Execution ##########
/root/meuscript.sh: ########## Executing ##########
/root/meuscript.sh: line 21: root: command not found ==> AQUI É O XABU!KKK
/root/meuscript.sh: No Phones SIP Registration Offline
/root/meuscript.sh: ########## End Execution ##########

A linha 21 informada no erro é "if asterisk -rx "sip show peers" | grep 'UNKNOWN\|UNREACHABLE\|LAGGED' | grep -vE $PATTERN_EXCLUDE"

Estranho que a linha está correta, eu testei a parte, segue anexo meu script.
#!/bin/sh
logger -st$0 '########## Executing ##########'
PBX_NAME="srvcentos"
EMAIL_TO="janduyeuclides@gmail.com"
PATTERN_EXCLUDE='(825[0467]|826[1])'
EMAIL_HEADER="Verificacao de Terminais SIP - Existem ramais com problemas!"
EMAIL_FOOTER="Acione o Suporte."
rm -f /tmp/offlinePhones
if asterisk -rx "sip show peers" | grep 'UNKNOWN\|UNREACHABLE\|LAGGED' | grep -vE $PATTERN_EXCLUDE
then
touch /tmp/offlinePhones
echo $EMAIL_HEADER > /tmp/offlinePhones
echo "" >> /tmp/offlinePhones
echo "Os seguintes ramais ou trunks estao Offline" >> /tmp/offlinePhones
echo "" >> /tmp/offlinePhones
asterisk -rx "sip show peers" | grep 'UNKNOWN\|UNREACHABLE\|LAGGED' | grep -vE $PATTERN_EXCLUDE | awk -F"(" 'NR > 0 {print "Extension: " $1} END { print "\nTotal Offline:" NR}' >> /tmp/offlinePhones
echo "" >> /tmp/offlinePhones
echo $EMAIL_FOOTER >> /tmp/offlinePhones
cat /tmp/offlinePhones | mail -s "$NUM_OFFLINE Phones Offline" $EMAIL_TO -- -F"$PBX_NAME"
logger -st $0 "Seguintes ramais ou trunks offline. Email enviado para: $EMAIL_TO"
asterisk -rx "sip show peers" | grep 'UNKNOWN\|UNREACHABLE\|LAGGED' | grep -vE $PATTERN_EXCLUDE | awk -F"(" 'NR > 0 {print "Extension: " $1} END { print "\nTotal Offline: " NR}' | logger -st $0
rm -f /tmp/offlinePhones
else
logger -st $0 "No Phones SIP Registration Offline "
fi

logger -st $0 '########## End Execution ##########'


Desde já agradeço a todos a ajuda!

Atenciosamente,
Janduy Euclides


Aqui é simples, mano. Aprenda q pra colocar qualquer coisa no cron, o seu script precisa q todos os executáveis estejam com o seu caminho absoluto! No caso do asterisk, vc precisa colocar o caminho absoluto dele. Se não souber, digite which asterisk pra descobrir. Depois vc altera no seu script. Outra coisa é em relação ao cron. Nada tem a v o q o Bruno colocou lá, pois vc já tá usando o comando crontab -e com o usuário root. Deixe seu cron assim:


*/5 * * * * /caminho/script/script.sh >> /caminho/log 2>&1


E veja se há mais erros. Não esqueça de deixar o seu script com permissões de execução:


chmod +x /caminho/script/script.sh

--
Renato Carneiro Pacheco
Certificado Linux LPIC-1
Especialista em Segurança em Redes de Computadores
Graduado em Redes de Comunicação

http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh


Renato,
Agora rolou, eu não me atentei em colocar o caminho absoluto, nos meus servers CentOS 6 nao precisei colocar.

Obrigado a todos pela ajuda!
Valeu \0/

Atenciosamente,
Janduy Euclides






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts