Problema al enviar archivos de Linux a Windows con smbclient

Problema al enviar archivos de Linux a Windows con smbclient

Tengo un archivo ubicado en mi caja de Linux que se genera mediante un script de Python, el archivo se coloca dentro del directorio /root/

Mi script bash se ve así:

#!/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'

Todo funciona como se desea hasta la última línea. Debe estar ejecutándose con un error (aunque no estoy muy seguro de cómo determinar cuál podría ser ese error).

Este trabajo se ejecuta desde el crontab. Que, según tengo entendido, se ejecuta en un entorno ligeramente diferente al de root (o al menos así parece con su comportamiento).

Si ejecuto el script directamente (no desde el crontab), se ejecuta sin problemas y el archivo se transfiere al cuadro del servidor de Windows de destino. Supongo que tal vez necesite proporcionar la ruta completa al archivo HRDataFeed.txt como parte del comando put; sin embargo, parece que no puedo entenderlo.

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

resulta en un error que el archivo/root/HRDataFeed.txtno pudo ser encontrado.

Cualquier aporte es muy apreciado.

EDITAR

Intenté actualizar mi crontab para leer (para realizar pruebas, lo tenía ejecutándose cada minuto)

          • /root/hrdatafeed > last_run.txt

Sin embargo, nada pareció aterrizar en el expediente.

Intentaré simplemente agregar una tubería directamente al comando SMBClient.

Respuesta1

Cron intenta enviar un correo (usando /usr/bin/sendmail) cuando falla un comando; esa es la única forma que conozco de obtener el resultado real del script (puede instalarSMTPpara que esto funcione con bastante facilidad). La principal diferencia en el entorno cron suele ser $PATH, así que intente configurar un valor apropiado PATHen el crontab que incluya el directorio donde smbclientse encuentra.

Respuesta2

Terminé reescribiendo ligeramente el guión para que se leyera así:

#!/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'

Cambié mi crontab a esto:

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

Finalmente pude obtener algunos mensajes significativos en el último archivo ejecutado. Aunque no hubo errores, asumo que fue porque hice el cambio para configurar la ruta completa al comando smbclient.

Gracias por toda la ayuda para resolver esto.

Ahora, por supuesto, actualizaré la pestaña cron para que se ejecute con un poco menos de frecuencia;)

información relacionada