Envoi de fichiers via Samba avec la ligne de commande

17

Je me demandais s'il y avait un moyen d'utiliser Samba pour envoyer des éléments à une machine client via la ligne de commande (j'ai besoin d'envoyer les fichiers depuis le serveur Samba). Je sais que je pourrais toujours utiliser scpmais d'abord je me demandais s'il y avait un moyen de le faire avec Samba. Merci!

t0xic
la source

Réponses:

19

Utilisez smbclientun programme fourni avec Samba:

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

Il existe de nombreux indicateurs, par exemple -Upour permettre au nom d'utilisateur distant d'être différent du nom local.

Sur les systèmes qui divisent Samba en plusieurs packages binaires, il se peut que les serveurs Samba soient installés mais manquent toujours smbclient. Dans ce cas, vérifiez votre référentiel de package pour un package nommé smbclient, samba-clientou similaire.

Warren Young
la source
Je continue à obtenirConnection to [IP] failed (Error NT_STATUS_CONNECTION_REFUSED)
t0xic
Quand j'ai écrit //server ci-dessus, je veux dire ce que vous appelez la machine cliente, qui dans ce cas agit comme un serveur. Il doit avoir un dossier ou un lecteur partagé via SMB pour que cela fonctionne.
Warren Young
Oh ... ça ne marchera pas vraiment pour moi. Je suppose que je vais juste utiliser scp. Merci quand même!
t0xic
@ fleebow8: Vous pouvez installer un serveur SCP tiers sur les machines clientes, mais vous ne pouvez pas cliquer avec le bouton droit sur un dossier dans l'Explorateur Windows et dire "Partager"?
Warren Young
J'ai un projet spécifique que je fais où je veux que tout soit automatique.
t0xic
12

curl prend en charge le smbprotocole depuis la v7.40 : curl --upload-file /path/to/file.ext -u 'DOMAIN\Username' smb://172.16.17.52/ShareName/

eadmaster
la source
Cela a très bien fonctionné pour moi: curl --upload-file /home/me/local_file.txt --user "OurWindowsDomain\UserName:thePassword" smb://172.16.17.52/ShareName/Path/To/Remote/Dir. J'ai obtenu une liste de tous les noms de partage disponibles avecsmbclient -L //172.16.17.52 -U UserName%thePassword -W OurWindowsDomain
Matthias Braun
c'est parfait!
Psychozoïque
2

Le vrai travail sera le suivant:

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

fichier-local - fichier de la machine locale

fichier distant - copie dans ce fichier sur une machine distante

Jack Belowzerooff
la source
0

Une autre façon si le partage est déjà monté par fusible

Si vous utilisez un bureau avec des partages déjà montés par nautilus , caja ou tout autre gestionnaire de fichiers , vous pouvez utiliser fuse (au lieu de smbclient ).

Si c'est le cas, vous pouvez trouver des points de montage à:

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

Oui, c'est un point de montage !

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

Et vous pouvez l'utiliser comme un système de fichiers standard.

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

smbclient Version 4.9.5-Debian et curl 7.64.0 n'a pas fonctionné pour moi ( Linux kali 4.19.0-kali4-amd64)

Cela a:

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