Transferir arquivos do VirtualBox guest para hospedar no script com smbclient

1

Estou tentando desenvolver um script que será executado em uma máquina do CentOS 7, mas por enquanto estou desenvolvendo-o em uma instância do Virtualbox (também o CentOS 7). O script vai lidar com várias tarefas, mas a parte que estou tendo problemas é enviar centenas de arquivos grandes para uma máquina Windows (que, por enquanto, é o meu pc ou o host do VirtualBox).

Duas questões:

A) Enviando os arquivos para o host.

A tentativa atual parece:

find "${FILES_DIR}" -print0 | while read -d $'
find "${FILES_DIR}" -print0 | while read -d $'%pre%' file
do
  if [ ${file: -4} == ".zip" ]
  then
    smbclient //${WINDOWS_IP}/${WINDOWS_DIR} -U ${WINDOWS_USERNAME}%${WINDOWS_PASSWORD} -c "put ${file}"
  fi
done
' file do if [ ${file: -4} == ".zip" ] then smbclient //${WINDOWS_IP}/${WINDOWS_DIR} -U ${WINDOWS_USERNAME}%${WINDOWS_PASSWORD} -c "put ${file}" fi done

Onde WINDOWS_IP é enp0s3.inet, WINDOWS_DIR é uma pasta compartilhada no host. O problema é que estou constantemente recebendo erros de conexão recusada e não sei para onde ir a partir daqui.

B) Confirmar que o arquivo foi transferido com sucesso

O smbclient retorna alguma coisa que eu possa usar para verificar se o arquivo foi transferido com sucesso?

    
por Bott0610 21.11.2018 / 17:55

1 resposta

0

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.

    
por 22.11.2018 / 18:22