Enviando arquivos pelo Samba com linha de comando

17

Eu queria saber se existe uma maneira de usar o Samba para enviar itens para uma máquina cliente através da linha de comando (eu preciso enviar os arquivos do servidor Samba). Eu sei que sempre poderia usar, scpmas primeiro fiquei pensando se existe uma maneira de fazer isso com o Samba. Obrigado!

t0xic
fonte

Respostas:

19

Use smbclient, um programa que acompanha o Samba:

$ smbclient //server/share -c 'cd c:/remote/path ; put local-file'

Existem muitos sinalizadores, como -Upara permitir que o nome do usuário remoto seja diferente do local.

Em sistemas que dividem o Samba em vários pacotes binários, você pode ter os servidores Samba instalados e ainda estar ausente smbclient. Em tal caso, um, verificar o seu repositório de pacotes de um pacote chamado smbclient, samba-clientou similar.

Warren Young
fonte
Eu continuo recebendoConnection to [IP] failed (Error NT_STATUS_CONNECTION_REFUSED)
t0xic
Quando escrevi //serveracima, quero dizer o que você está chamando de máquina cliente, que neste caso está atuando como servidor. Ele precisa ter uma pasta ou unidade compartilhada via SMB para que isso funcione.
Warren Young
Oh ... isso realmente não funciona para mim. Acho que vou usar scp. Obrigado mesmo assim!
T0xic 30/05
@ fleebow8: Você pode instalar um servidor SCP de terceiros nas máquinas clientes, mas não pode clicar com o botão direito do mouse em uma pasta no Windows Explorer e dizer "Compartilhar"?
Warren Young
Tenho um projeto específico que estou fazendo e quero que tudo seja automático.
T0xic 30/05
12

curl suporta o smbprotocolo desde a v7.40 : curl --upload-file /path/to/file.ext -u 'DOMAIN\Username' smb://172.16.17.52/ShareName/

eadmaster
fonte
Isso funcionou muito bem para mim: curl --upload-file /home/me/local_file.txt --user "OurWindowsDomain\UserName:thePassword" smb://172.16.17.52/ShareName/Path/To/Remote/Dir. Eu tenho uma lista de todos os nomes de nomes disponíveis comsmbclient -L //172.16.17.52 -U UserName%thePassword -W OurWindowsDomain
Matthias Braun
isto é perfeito!
Psicozóico 04/11
2

Realmente trabalhando será este:

$ smbclient //server/share -c 'cd c:/remote/path ; put local-file remote-file'

arquivo local - arquivo da máquina local

arquivo remoto - copie para esse arquivo na máquina remota

Jack Belowzerooff
fonte
0

Outra maneira, se o compartilhamento já estiver montado por fusível

Se você estiver executando uma área de trabalho com compartilhamentos já montados pelo nautilus , caja ou qualquer outro gerenciador de arquivos , poderá estar usando o fusível (em vez do smbclient ).

Nesse caso, você pode encontrar alguns pontos de montagem em:

ls -l /run/user/$UID/gvfs/
drwx------ 1 charlie charlie 0 Feb  2 10:04 smb-share:server=hostname,share=documents

Sim, este é um ponto de montagem !

df -h /run/user/$UID/gvfs/*
Filesystem      Size   Used  Avail  Use% Mounted on
gvfsd-fuse      16.2T  3.6T  12.6T   59% /run/user/1000/gvfs

E você pode usá-lo como um sistema de arquivos regular.

cp $HOME/myfile \
    /run/user/$UID/gvfs/smb-share:server=hostname,share=documents/destpath/
techno
fonte
0

smbclient Version 4.9.5-Debiane curl 7.64.0não funcionou para mim ( Linux kali 4.19.0-kali4-amd64)

Isso fez:

smbmap -H server -u username -p password --upload local-filename share\\remote-filename
chefarov
fonte