Obtengo algunos archivos a través de un comando de cliente smb (uso la versión 4.13.14-Ubuntu):
smbclient //<myip>/<myshare> -c "prompt;cd myPath; mget *.csv;" -U <myuser> 2> logs.txtEste comando da como resultado el archivo de texto que contiene
getting file \myPath\dde_DC-Machine-99999901-DeviceId_20210624.csv of size 3710 as dde_DC-Machine-99999901-DeviceId_20210624.csv (13.6 KiloBytes/sec) (average 13.6 KiloBytes/sec)Lo que muestra que el archivo se ha descargado con éxito (lo cual es realmente el caso, el archivo está completamente disponible después de ejecutar el comando).
Sin embargo, como puede ver en la redirección de error estándar "2>", los registros de éxito se escriben en stderr donde los esperaría en stdout.
Ahora, cuando agrego algunos parámetros no válidos como una ruta que no existe
smbclient //<myip>/<myshare> -c "prompt;cd nonExistingPath; mget *.csv;" -U <myuser> 2> logs.txtEl terminal imprime NT_STATUS_OBJECT_NAME_NOT_FOUND, que es correcto pero proviene del estándar, mientras que el error estándar está vacío.
Casi parece que el cliente escribe en el stdout si ocurre un error y en el stderr si todo funciona bien, exactamente al revés. Tenga cuidado, esto sucede solo cuando se usan los comandos mget o get, otros comandos que he probado parecen funcionar como deberían.
Pregunta
¿Hay un error en smbclient o un malentendido por mi parte?
Compruebe si el archivo de configuración de Samba (/usr/local/samba/lib/smb.conf) contiene la '-E'.
"-E Envía la salida de los comandos a stderr en lugar de stdout".