SCP não está funcionando no trabalho CRON, somente manualmente

0

Eu tenho um script em um servidor remoto (bServer) que SSH é para um servidor central (vamos chamá-lo cServer) e chuta um script que mais SSH's para 2 outros servidores (server13 / server14). Um script é executado em cada um desses servidores, o que produz um arquivo.

Eu tenho chaves SSH DSA configuradas de cServer para server13 / 14. O cServer irá então puxar os arquivos produzidos do servidor 13/14 e então o bServer irá puxá-los do cServer.

Isso funciona perfeitamente quando executado manualmente.

No entanto, quando eu agendar o trabalho no bServer em cron , o arquivo do server14 não será puxado para o cServer.

Veja o que é mais interessante: o arquivo do servidor13 não transfere de cServer para bServer quando o comando ssh ou scp to server14 está presente o mesmo script.

Se eu os tiver em scripts separados, o arquivo do server13 retornará ao bServer, mas o arquivo do server14 será produzido e não será transferido de volta para o cServer.

Tanto o server13 quanto o server14 estão executando a mesma versão do SunOS.

Li tantas soluções diferentes para problemas semelhantes, mas não encontrei nenhuma resolução.

Alguma idéia de como resolver isso?

    
por cardycakes 29.10.2013 / 08:10

3 respostas

1

Nenhuma das soluções sugeridas funcionou.

Para consertar isso, eu tive que ter 2 tarefas cron separadas. Um que puxa o arquivo do server14 para o server13 e então retorna para o bServer. Um segundo trabalho cron (não funciona se for executado como segundo script no mesmo trabalho) e, em seguida, puxa o arquivo do servidor13.

Muito estranho. É uma pena que não consegui encontrar uma solução mais elegante.

    
por 05.11.2013 / 15:06
1

Ao executar um trabalho via cron, você não está mantendo seu ambiente. Se você já efetuou login no servidor remoto como o usuário que possui o script cron, você pode tentar, para fins de diagnóstico, executar o mesmo script por meio do comando at , que em vez disso faz.

Se você colocou seus comandos em um script executável chamado my_script, o seguinte comando

 at -f my_script 0936.00

executará o comando my_script às 9 horas e 36 minutos. Se isso funcionar, você saberá que no cron você está perdendo algum componente essencial do seu ambiente.

    
por 29.10.2013 / 08:35
1

Provavelmente, o problema está nas variáveis de ambiente que são usadas por cron . Execute "env > out.txt" de cron e shell e compare os resultados.

Veja esta solução link

Você pode tentar adicionar source /etc/profile no início do seu script. Além disso, você pode tentar executar o script com #!/bin/bash -l

    
por 29.10.2013 / 08:30

Tags