Accessing Windows shares from the Solaris/Linux command line

Periodically I need to access a Windows share from a Solaris or Linux box. If Samba is installed on the system, this is easy to do with the smbclient utility. To access the Windows server named “milton” from the command line, you can run smbclient with the “-U” option, the name of the user to authenticate with, and the name of the server and share to access:

$ smbclient -U "domain\matty" //milton/foo

In this example, I am authenticating as the user matty in the domain “domain,” and accessing the share foo on the server milton. If smbclient is unable to resolve the server, you will need to make sure that you have defined a WINS server, or the server exists in the lmhosts file. To define a WINS server, you can add a line similar to the following (you can get the WINS server by looking at ipconfig /all on a Windows desktop, or by reviewing the LAN traffic with ethereal) to the smb.conf file:

wins server =

If you don’t want to use WINS to resolve names, you can add an entry similar to the following to the lmhosts file: milton

Once you are connected to the server, you will be greeted with a “smb: >” prompt. This prompt allows you to feed commands to the server, such as “pwd,” “dir,” “mget,” and “prompt.” To retrieve all of the files in the directory foo1, I can “cd” into the foo1 directory, use “prompt” to disable interactive prompts, and then run “mget” to retrieve all files in that directory:

smb: > pwd Current directory is \server1 oo

smb: > dir

received 10 entries (eos=1) . DA 0 Mon May 22 07:19:21 2006 .. DA 0 Mon May 22 07:19:21 2006 foo1 DA 0 Sun Dec 11 04:51:12 2005 foo2 DA 0 Thu Nov 9 09:48:40 2006 < ….. >

smb: > cd foo1

smb: oo1> prompt prompting is now off

smb: oo1> **mget

received 38 entries (eos=1) getting file foo1yikes.tar of size 281768 as yikes.tar 411.3 kb/s) (average 411.3 kb/s) < ….. >

smb: oo1> exit

The smbclient manual page documents all of the available commands, and provides a great introduction to this super useful utility. If you bump into any issues connecting to a remote Windows server, you can add “-d” and a debug level (I like debug level 3) to the smbclient command line. This is perfect for debugging connectivity issues.

This article was posted by Matty on 2007-02-03 10:29:00 -0400 -0400