É possível transferir um arquivo de um script do Bash do Linux para o Windows sem montar a pasta do servidor?

3

Estou escrevendo um script (Bash) para transferir arquivos da minha máquina Linux local para servidores Windows. Os servidores Windows podem ser acessados normalmente usando os compartilhamentos SAMBA , e eu posso montar uma pasta no meu Linux máquina usando o comando mount.cifs com as credenciais apropriadas do Windows.

Como não desejo montar todos os servidores antecipadamente nem montar dinamicamente usando sudo (o script é executado como um usuário normal, não como root), estou apenas imaginando se o servidor pode ser acessado por outros meios, como um canal TCP ou de maneira semelhante.

Por exemplo, no Windows, posso montar a pasta do meu servidor em uma letra de unidade usando o comando net use , mas como bem sem ter sido montado assim:

c:> net use \my-server.domain.com passwd123 /user:domain\myuser
c:> cp d:\myfiles.zip \my-server.domain.com\d$\temp\destination

E se eu fizer um net use , posso ver a conexão aberta (sem letra atribuída):

    Status       Local     Remote                    Network
-------------------------------------------------------------------------------
OK                     \myserver.domain.net\IPC$
                                                Microsoft Windows Network
The command completed successfully.

Eu não quero instalar o sshd nem o ftpd no Windows Server. Estou procurando fazer isso apenas com o protocolo SMB . Como substituto, executarei uma montagem como sudo mount.cifs [options] /mnt/temp-folder e sudo umount /tmp/temp-folder após a cópia dos arquivos.

    
por рüффп 04.09.2015 / 17:11

2 respostas

11

Você pode usar o programa smbclient para fornecer uma interface semelhante a FTP para o compartilhamento de arquivos do Windows sem ter que instalar o FTP na máquina Windows.

Aqui segue alguns exemplos:

Transfere o arquivo do local (unix / linux) para o Windows:

smbclient //server.domain.org/d$ <password> -W domain.org -U <my-user> -c "put file-local.xml folder1\folder2\file.xml"

Transferir arquivo do Windows para o Linux:

Existem duas opções, a primeira é usar o comando 'get' com smbclient e a segunda, a mais curta: smbget :

1. smbclient: 'smbclient //server.domain.org/d$ <password> -W domain.org -U <my-user> -c "get folder1\folder2\file.xml file-local.xml"'
2. smbget: 'smbget -u <my-user> -p <password> -w domain.org -o destination-file.txt smb://server.domain.org/d$/folder1/folder2/source-file.txt'
    
por 04.09.2015 / 17:19
2

Você pode tentar algo como wput [options] [file]... [url]... ftp://[username[:password]@]hostname[:port][/[path/][file]] ou wget

    
por 04.09.2015 / 17:36