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!

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.


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/


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


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/

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.