Lavorando da command line può sorgere a volte la necessità di trasferire file da o verso una share di rete attraverso Samba. In questa rapida guida vediamo due metodi alternativi per raggiungere l’obiettivo.
Samba da command line usando smbclient
smbclient è un ftp-like client che permette di accedere risorse SMB/CIFS su un server.
Su Ubuntu possiamo installarlo attraverso apt
sudo apt install smbclient
Per una guida ufficiale possiamo fare riferimento a questo link: https://www.samba.org/samba/docs/current/man-html/smbclient.1.html
Vediamo qui di seguito alcuni esempi di funzionamento del comando.
Trasferimento senza username e password
smbclient //[server-ip]/[nome-share] -c "put nome-file"
Trasferimento in una sottocartella della share
smbclient //[server-ip]/[nome-share] -c "cd remote/path; put nome-file"
Trasferimento con username e password
In questo scenario, il trasferimento dei dati via Samba prevede l’autenticazione via username e password. Queste credenziali sono ovviamente quelle configurate sul server Samba.
smbclient //[server-ip]/[nome-share] -U alessandro -c "cd remote/path; put nome-file"
Avendo specificato il nome utente verrà richiesto successivamente l’inserimento della password
Enter WORKGROUP\alessandro's password:
Quando invece lo scenario non prevede l’interattività con l’utente e pertanto non è possibile inserire la password quando richiesta, si può salvare le credenziali in un file di testo ed usare il comando così
smbclient //[server-ip]/[nome-share] -A [password-file] -c "cd remote/path; put nome-file"
Il file contenente le credenziali dovrà essere così formattato
username = alessandro
password = mypassword
domain = WORKGROUP
Samba da command line usando curl
Dalla versione 7.40 curl supporta il protocollo SMB/CIFS. Qui di seguito il link al changelog di curl: https://curl.se/changes.html
Il comando per poter trasferire un file da locale a remoto via Samba è il seguente
curl --upload-file /path/to/file.ext -u "DOMAIN\Username:Password" smb://[server-ip]/[nome-share]/