La herramienta smbget, provista por el paquete smbclient, es la versión de wget para servidores Samba. Tiene la misma semántica que el utilitario wget para servidores HTTP/HTTPS, ya que permite descargar archivos desde un servidor SMB desde línea de comandos. Este artículo demuestra su ejemplo de uso.



Para contar con esta herramienta en sistemas operativos Debian y derivados, es necesario instalar el paquete smbclient. Anteriormente demostré cómo utilizar el utilitario smbclient para conectarse a un servidor Samba desde línea de comandos. Por ejemplo, para conectarse al share C$ (unidad C:\) del servidor "smb.linuxito.com" autenticándose como el usuario "administrator":

root@hal9000:~# smbclient -U administrator //smb.linuxito.com/C$
Enter WORKGROUP\administrator's password: 
Try "help" to get a list of possible commands.
smb: \>

Este utilitario es provisto por el mismo paquete y es una especie de cliente FTP para servidores SMB/CIFS:

smb: \> help
?              allinfo        altname        archive        backup         
blocksize      cancel         case_sensitive cd             chmod          
chown          close          del            deltree        dir            
du             echo           exit           get            getfacl        
geteas         hardlink       help           history        iosize         
lcd            link           lock           lowercase      ls             
l              mask           md             mget           mkdir          
more           mput           newer          notify         open           
posix          posix_encrypt  posix_open     posix_mkdir    posix_rmdir    
posix_unlink   posix_whoami   print          prompt         put            
pwd            q              queue          quit           readlink       
rd             recurse        reget          rename         reput          
rm             rmdir          showacls       setea          setmode        
scopy          stat           symlink        tar            tarmode        
timeout        translate      unlock         volume         vuid           
wdel           logon          listconnect    showconnect    tcon           
tdis           tid            utimes         logoff         ..             
!

Es posible listar directorios con dir o ls, cambiar de directorio con cd y descargar archivos de forma interactiva con get:

smb: \> dir
  .rnd                                A     1024  Thu Jan 17 11:26:00 2013
  AUTOEXEC.BAT                        A        0  Thu May  7 21:11:21 2009
  Backups                             D        0  Wed Nov 11 11:30:11 2015
  boot.ini                           HS      210  Thu May  7 21:06:23 2009
  Config.Msi                        DHS        0  Mon Sep  1 10:19:03 2014
  CONFIG.SYS                          A        0  Thu May  7 21:11:21 2009
  Documents and Settings              D        0  Mon Sep  1 10:12:35 2014
  Intel                               D        0  Thu May  7 21:18:55 2009
  IO.SYS                           AHSR        0  Thu May  7 21:11:21 2009
  MSDOS.SYS                        AHSR        0  Thu May  7 21:11:21 2009
  Novell                              D        0  Wed Oct 19 11:48:44 2011
  NRPE_NT                             D        0  Tue Aug 28 13:40:18 2012
  NSClient++                          D        0  Mon Dec 13 09:07:34 2010
  NTDETECT.COM                     AHSR    47772  Sun Feb 18 09:00:00 2007
  ntldr                            AHSR   297072  Sun Feb 18 09:00:00 2007
  pagefile.sys                      AHS 2145386496  Thu Nov 28 14:33:37 2019
  Program Files                      DR        0  Thu Feb  6 11:28:46 2014
  realtek.log                         A      206  Thu May  7 21:25:12 2009
  RECYCLER                          DHS        0  Mon May 11 11:08:53 2009
  RHDSetup.log                        A      522  Thu May  7 21:25:12 2009
  System Volume Information         DHS        0  Wed Jul 18 01:37:28 2012
  TempEI4                             D        0  Thu May  7 21:40:21 2009
  tmp                                 D        0  Tue Jan 12 12:58:56 2016
  WINDOWS                             D        0  Fri Aug  4 14:31:28 2017
  wmpub                               D        0  Thu May  7 21:11:45 2009

		12799999 blocks of size 4096. 8476637 blocks available
smb: \> quit

Sin embargo, si se conoce con exactitud la ruta al archivo, es posible descargarlo directamente sin necesidad de ejecutar comandos interactivos empleando smbget.

Por ejemplo, si se requiere descargar el archivo "C:\Documents and Settings\Administrator\Desktop\usrconf.cmd" (accesible desde el share "C$/Documents and Settings/Administrator/Desktop/usrconf.cmd") del servidor "smb.linuxito.com", ejecutar:

root@hal9000:~# smbget -U administrator smb://smb.linuxito.com/C$/Documents\ and\ Settings/Administrator/Desktop/usrconf.cmd
Password for [administrator] connecting to //C$/smb.linuxito.com: 
Using workgroup WORKGROUP, user administrator
smb://smb.linuxito.com/C$/Documents and Settings/Administrator/Desktop/usrconf.cmd                                                                               
Downloaded 376b in 2 seconds

Luego de solicitar las credenciales para el usuario, el archivo se descargar con éxito:

root@hal9000:~# ll usrconf.cmd 
-rwxr-xr-x 1 root root 376 Dec 26 09:38 usrconf.cmd

Es posible modificar el grupo de trabajo por defecto mediante la opción -W

Cabe destacar que, al igual que wget, no es posible utilizar comodines ni expresiones regulares en la URL pasada como parámetro, sino que se debe especificar una URL canónica que identifique a un recurso específico. Sin embargo, mediante la opción -R se permite descargar el contenido completo de un directorio de forma recursiva.

Las URLs deben anteponerse con el protocolo "smb://" y deben tener el siguiente formato:

smb://host/share/file

Esto difiere con el utilitario smbclient, el cual no lleva el protocolo antepuesto en la URL, sino que utiliza el formato de doble barra de Windows (\\) salvo que emplea barras directas (forward slash, /).

Para más información, consultar la página de manual de smbget:

man smbget


Tal vez pueda interesarte


Compartí este artículo