scp tentativa em um script bash acionado pelo cron falha; funciona quando executar script manualmente

0

Tentando scp um arquivo em um script bash agendado pelo cron. Quando o cron dispara, o scp falha com uma mensagem de erro de permissão negada. Quando eu executo o script manualmente usando um comando como:

/etc/scripts>  bash script3

o comando scp funciona muito bem.

De uma pergunta anterior sobre como solucionar problemas de cron em geral, aprendi que as variáveis de ambiente podem ser diferentes entre quando eu estou executando via linha de comando manualmente e quando o cron é executado. Então, seguindo uma das dicas de solução de problemas sugeridas, eu agendei o seguinte trabalho via cron:

lab-1:/etc/scripts# cat cronenvtest         
OFILE=/tmp/crons.environment                                      
(/usr/bin/whoami                                                  
/usr/bin/env ) > $OFILE 2>&1    

A saída é assim:

lab-1:/var/www/# tail -f /tmp/crons.environment
HOME=/root
RC_SVCNAME=crond
LOGNAME=root
RC_SERVICE=/etc/init.d/crond
TERM=screen
SVCNAME=crond
PATH=/bin:/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
LANG=en.utf8
SHELL=/bin/sh
PWD=/root

Quando eu executo "env" na linha de comando, é assim:

lab-1:/tmp# env                                            
SSH_CLIENT=10.1.1.1 57728 22                                                
USER=root                                                                        
MAIL=/var/mail/root                                                              
SHLVL=1                                                                          
OLDPWD=/etc/scripts                                                              
HOME=/root                                                                       
SSH_TTY=/dev/pts/4                                                               
PAGER=less                                                                       
PS1=\h:\w\$                                                                      
LOGNAME=root                                                                     
TERM=screen                                                                      
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin                
LANG=en.utf8                                                                     
SSH_AUTH_SOCK=/tmp/ssh-eGvX0isT3V/agent.22951                                    
SHELL=/bin/ash                                                                   
PWD=/tmp                                                                         
CHARSET=UTF-8                                                                    
SSH_CONNECTION=10.1.1.1 57728 10.2.2.2 22           

Aqui está a linha no script que tenta fazer o scp:

 scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null @$server:/tmp/"$server.db" "$dir/"

O que eu tentei até agora

Eu tentei mudar o comando scp para incluir o usuário root, assim:

scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@$server:/tmp/$"server.db" "$dir/"

Tentou alterar o destino da variável $ dir para um caminho codificado como "/ tmp"

Tentou adicionar a seguinte linha ao script bash, logo antes do scp:

PWD=/etc/scripts

Até agora, nada disso funcionou. Alguma dica?

    
por dot 15.03.2018 / 16:10

0 respostas