Senden von Dateien über Samba mit Kommandozeile

17

Ich habe mich gefragt, ob es eine Möglichkeit gibt, mit Samba Elemente über die Befehlszeile an einen Client-Computer zu senden (ich muss die Dateien vom Samba-Server senden). Ich weiß, ich könnte es immer gebrauchen, scpaber zuerst habe ich mich gefragt, ob es eine Möglichkeit gibt, dies mit Samba zu tun. Vielen Dank!

t0xic
quelle

Antworten:

19

Verwenden Sie smbclientein Programm, das mit Samba geliefert wird:

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

Es gibt viele Flags, -Umit denen sich der Name des Remotebenutzers vom lokalen unterscheiden kann.

Auf Systemen, die Samba in mehrere Binärpakete aufteilen, sind möglicherweise die Samba-Server installiert, fehlen jedoch noch smbclient. In einem solchen Fall, überprüfen Sie die Paket - Repository für ein Paket mit dem Namen smbclient, samba-clientoder ähnliches.

Warren Young
quelle
Ich erhalteConnection to [IP] failed (Error NT_STATUS_CONNECTION_REFUSED)
t0xic
Als ich schrieb //serveroben, ich meine , was Sie den Client - Computer anrufen, die in diesem Fall wirken als Server. Damit dies funktioniert, muss ein Ordner oder ein Laufwerk über SMB freigegeben sein.
Warren Young
Oh ... das wird bei mir nicht wirklich funktionieren. Ich denke, ich werde nur verwenden scp. Trotzdem danke!
Bis
@ fleebow8: Sie können einen SCP-Server eines Drittanbieters auf den Client-Computern installieren, aber Sie können im Windows-Explorer nicht mit der rechten Maustaste auf einen Ordner klicken und "Freigeben" sagen?
Warren Young
Ich habe ein bestimmtes Projekt, bei dem alles automatisch ablaufen soll.
Bis
12

curl unterstützt das smbProtokoll seit v7.40 : curl --upload-file /path/to/file.ext -u 'DOMAIN\Username' smb://172.16.17.52/ShareName/

eadmaster
quelle
Das funktionierte gut für mich: curl --upload-file /home/me/local_file.txt --user "OurWindowsDomain\UserName:thePassword" smb://172.16.17.52/ShareName/Path/To/Remote/Dir. Ich habe eine Liste aller verfügbaren Freigabenamen mitsmbclient -L //172.16.17.52 -U UserName%thePassword -W OurWindowsDomain
Matthias Braun
Dies ist perfekt!
Psychozoikum
2

Wirklich arbeiten wird dies sein:

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

local-file - Datei vom lokalen Rechner

Remote-Datei - Kopieren in diese Datei auf dem Remote-Computer

Jack Belowzerooff
quelle
0

Eine andere Möglichkeit, wenn die Freigabe bereits per Sicherung gemountet ist

Wenn Sie einen Desktop mit Freigaben ausführen , die bereits von nautilus , caja oder einem anderen Dateimanager bereitgestellt wurden , verwenden Sie möglicherweise fuse (anstelle von smbclient ).

In diesem Fall finden Sie einige Mountpunkte unter:

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

Ja das ist ein Mountpoint !

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

Und Sie könnten es als reguläres Dateisystem verwenden.

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

smbclient Version 4.9.5-Debianund curl 7.64.0hat nicht für mich gearbeitet ( Linux kali 4.19.0-kali4-amd64)

Dies tat:

smbmap -H server -u username -p password --upload local-filename share\\remote-filename
Chefarov
quelle