Quanto a (B), meu smbclient
retorna um código de saída pelo menos para alguns erros. Você pode usar $?
no shell para obter o código de saída do último comando. Um código de saída zero significa "ok", diferente de zero é um erro, pois o erro que eu causei foi o código de saída 1 (mas outros códigos de saída são possíveis, e nem todos os erros podem definir o código de saída).
O erro "conexão recusada" na menção em (A) pode ter muitas razões, será difícil depurá-lo por Q & A. Pelo menos fornecer algumas informações em que circunstâncias o erro acontece ou não acontece, se ping
para a máquina remota funciona, se você verificou as configurações do firewall, etc.
E BTW, você também pode canalizar comandos para smbclient
, como em
echo "put ${file}" | smbclient "//${WINDOWS_IP}/${WINDOWS_DIR}" -U "${WINDOWS_USERNAME}%${WINDOWS_PASSWORD}"
Isso pode ou não ajudar na transferência de um grande número de arquivos, evitando fazer uma nova conexão a cada vez, se isso falhar aleatoriamente.
E por favor considere escapar tudo corretamente (eu adicionei as aspas). Nós não sabemos os valores reais que você usa, e o mau escape pode mangle o host, usuário ou senha, e pode ser o motivo da falha.