Problema ao enviar arquivo do linux para o windows com o smbclient

2

Eu tenho um arquivo localizado na minha caixa linux que é gerado por um script python, o arquivo é colocado dentro do diretório / root /

Meu script bash parece assim:

#!/bin/bash
# Run the HR Data feed
cd /root/hr-feed
# the file created here will land one directory above the scripts in /root/
python main.py     

# Transfer the file to the server
cd /root/
smbclient \\[SERVER]\[SHARE] --workgroup=[WRKGRP] --user=[USR] [PASS] -c 'put HRDataFeed.txt'

Tudo funciona conforme desejado até a última linha. Ele deve estar sendo executado com um erro (embora eu não tenha certeza de como descobrir qual pode ser esse erro).

Este trabalho está sendo executado a partir do crontab. O que eu entendo é executado em um ambiente ligeiramente diferente do root (ou pelo menos parece com a forma como ele se comporta).

Se eu executar o script diretamente (não a partir do crontab), ele será executado sem problemas e o arquivo será transferido para a caixa do servidor de janelas de destino. Meu palpite é que talvez eu precise fornecer o caminho completo para o arquivo HRDataFeed.txt como parte do comando put; no entanto, não consigo descobrir isso.

smbclient .... -c "put /root/HRDataFeed.txt"

resulta em um erro que o arquivo /root/HRDataFeed.txt não pode ser encontrado.

Qualquer entrada é muito apreciada.

EDITAR

Eu tentei atualizar meu crontab para ler (por uma questão de teste eu tinha que correr a cada minuto)

          • /root/hrdatafeed > last_run.txt

No entanto, nada parecia pousar no arquivo.

Vou tentar apenas adicionar um pipe diretamente ao comando SMBClient.

    
por Mike McMahon 28.04.2012 / 02:22

2 respostas

1

Acabei de reescrever o script para ler assim:

#!/bin/bash
# Run the HR Data feed
cd /root/hr-feed
python main.py

# Transfer the file to the server
cd /root/
/usr/bin/smbclient \\[SERVER]\HRDataFeed --workgroup=[WRKGRP] --user=[USR] [PASS] -c 'put HRDataFeed.txt'

Eu mudei meu crontab para isso:

          • sh /root/hrdatafeed.sh > /root/last_run > 2>&1

Finalmente, conseguimos obter algumas mensagens significativas no último arquivo de execução. Embora não houvesse erros, presumo que foi porque fiz a alteração para definir o caminho completo para o comando smbclient.

Obrigado por toda a ajuda para resolver isso.

Agora, claro, atualizarei a guia cron para executar com um pouco menos de frequência;)

    
por 01.05.2012 / 19:22
4

Cron tenta enviar um email (usando /usr/bin/sendmail ) quando um comando falha - essa é a única maneira que conheço para obter a saída real do script (você pode instalar o sSMTP para fazer isso funcionar com bastante facilidade). A principal diferença no ambiente cron geralmente é $PATH , então tente definir um PATH apropriado no crontab que inclui o diretório onde smbclient é.

    
por 28.04.2012 / 05:01