Execução de Script [RESOLVIDO]

1. Execução de Script [RESOLVIDO]

ftm
fharley

(usa Debian)

Enviado em 15/09/2011 - 11:55h

Olá amigos, sei que já existe um número considerável de perguntas sobre execução de scripts diretamente no shell. Mas embora esteja pesquisando há alguns dias, ainda não achei uma resposta satisfatória. Espero que possam me ajudar.
Estou usando Ubuntu Server, fiz um script simples para testar um link que está em redundância. Ocorre que o script não executa quando agendado no crontab, de forma nenhuma. já usei várias formas. No entanto quando executado manualmente funciona sem problemas.
Enfim já direcionei a saída da execução para terminal, já usei parâmetros de execução, já trabalhei as permissões de usuário, mas nada disso resolveu. O que poderia ser? Além das opções que já citei. Alguém tem um palpite? Obrigado e no aguardo!


  


2. Re: Execução de Script [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 15/09/2011 - 11:56h

Poste aki o conteúdo do seu script e como vc tá fazendo para agendar no cron.


3. Re: Execução de Script [RESOLVIDO]

ftm
fharley

(usa Debian)

Enviado em 15/09/2011 - 12:22h

Na verdade é um script bem simples ainda, que fiz apenas parte de sua funcionalidade para um pequeno teste de interface ppp0
##############################################################
#!/bin/sh

ARQUIVO=`ip route list table spd | grep default`;

if [ -z "$ARQUIVO" ] ;then

ifdown dsl-provider;
ifup dsl-provider;
shorewall restart;
conntrack -D;

echo "A interface ppp0 foi ligada..." >> /home/suporte/verificappp.log

else


echo "A interface ppp0 ja esta funcionando..." >> /home/suporte/verificappp.log
echo "$ARQUIVO"

fi

exit
#############################################################

No cron, já tentei várias possibilidades, mas enfim:

*/1 * * * * /home/suporte/verificappp.sh

dessa forma vejo que pelo menos ele ainda executa parte e coloca mensagem de "echo" no log, se eu coloco usuário e direciono a saída, nem isso ocorre:

*/1 * * * * root /home/suporte/verificappp.sh >> /dev/tty1 (ou /dev/null 2 &&)

Enfim resumindo todas tentativas, é basicamente isso! Aceito sugestões.


4. Re: Execução de Script [RESOLVIDO]

cr0n
_di0

(usa FreeBSD)

Enviado em 15/09/2011 - 13:02h

O que tudo indica, Crontab executará scripts que estejam em uma das "PATHs" onde estão arquivos binários(executáveis, não necessariamente em formato binário). Há ao menos duas formas de solução.

1) Rode em seu shell, $PATH, será retornado os diretório que indica trajetória dos caminhos dos binários. Por exemplo, no meu caso retornou entre vários, o diretório /usr/sbin, coloque seu script dentro desse diretório, mude o caminho do arquivo a ser executado no contrab para esse caminho, onde se encontra agora o arquivo script, logo em seguida teste.


2) Coloque o diretório onde se encontra o arquivo, nos "PATHS" binários do Linux.

Ex: É comum administradores criarem /home/usuario/bin, e colocá-lo nos paths de binários do sistema.

Obviamente, fique atento à segurança do seu sistema, cuidado com que executa com usuário não root.


5. Re: Execução de Script [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 15/09/2011 - 13:26h

_di0 escreveu:

O que tudo indica, Crontab executará scripts que estejam em uma das "PATHs" onde estão arquivos binários(executáveis, não necessariamente em formato binário). Há ao menos duas formas de solução.

1) Rode em seu shell, $PATH, será retornado os diretório que indica trajetória dos caminhos dos binários. Por exemplo, no meu caso retornou entre vários, o diretório /usr/sbin, coloque seu script dentro desse diretório, mude o caminho do arquivo a ser executado no contrab para esse caminho, onde se encontra agora o arquivo script, logo em seguida teste.


2) Coloque o diretório onde se encontra o arquivo, nos "PATHS" binários do Linux.

Ex: É comum administradores criarem /home/usuario/bin, e colocá-lo nos paths de binários do sistema.

Obviamente, fique atento à segurança do seu sistema, cuidado com que executa com usuário não root.


Era isso q eu ia falar... heheheh! Outro lance é vc inserir o PATH dentro do cron. Vc pode copiar a saída abaixo:

$ env | grep PATH


6. Re: Execução de Script [RESOLVIDO]

ftm
fharley

(usa Debian)

Enviado em 15/09/2011 - 16:08h

Não sei se entendi direito, mas segui as instruções e ainda não funcionou. Acho que ainda está faltando alguma coisa. Na verdade agora ele está de certa forma rodando, mas não executa as alterações na interface de rede ou restarta os serviços de firewall. Acompanho pelo log e vejo que está executando, mas não funciona, ou seja, só "enche" o log como se estivesse realmente funcionando. Usei o Path: /usr/sbin direto no crontab e coloquei o script no mesmo caminho. Mais alguma sugestão?


7. Re: Execução de Script [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 15/09/2011 - 16:10h

Como q vc inseriu dentro do cron?


8. Re: Execução de Script [RESOLVIDO]

ftm
fharley

(usa Debian)

Enviado em 15/09/2011 - 16:17h

Novamente tentei com usuário, direcionando saída, mudei proprieade do script... mas não funcionou. No momento está assim:

*/1 * * * * /usr/sbin/verificappp.sh


Mas tenho certeza que está faltando alguma coisa. Agradeço as dicas.


9. Re: Execução de Script [RESOLVIDO]

Daniel Lara Souza
danniel-lara

(usa Fedora)

Enviado em 15/09/2011 - 16:20h

fharley escreveu:

Novamente tentei com usuário, direcionando saída, mudei proprieade do script... mas não funcionou. No momento está assim:

*/1 * * * * /usr/sbin/verificappp.sh


Mas tenho certeza que está faltando alguma coisa. Agradeço as dicas.




Faltou colocar o usuário que irá executar o script

*/1 * * * * root /usr/sbin/verificappp.sh


Abraço


10. Re: Execução de Script [RESOLVIDO]

ftm
fharley

(usa Debian)

Enviado em 15/09/2011 - 16:21h

Entendi, mas quando coloco o usuário, estranhamente, não cria nem log.


11. Re: Execução de Script [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 15/09/2011 - 16:34h

Deixe dessa forma:


PATH=/bin:/usr/bin:/sbin:/usr/sbin

*/1 * * * * /usr/sbin/verificappp.sh 2>&1 /dev/null



E, no seu script, comente as linhas q estão com echo, pois o cron não aceita...


12. Re: Execução de Script [RESOLVIDO]

ftm
fharley

(usa Debian)

Enviado em 16/09/2011 - 12:54h

Olá Renato, após algumas configurações adicionais, o script está rodando pelo cron, mas não executa nenhuma instrução que faça qualquer tipo de alteração no sistema. Apenas instruções de visualização, saída de comando, checagem de informações e etc.. Já executei o script como root no cron, já dei permissões de root para o usuário diretamente em /etc/passwd... mas nada disso resolve. Como já disse, no entanto, quando executo o script manualmente no prompt, ele executa todas as funções sem problemas. Será que seria algum problema diretamente do Ubuntu Server, alguma coisa relacionada ao gdm, privilégios numa camada mais abaixo... enfim alguma sugestão? Obrigado.



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts