smbget

My wife and I each have our computer, plus there’s the old one in the basement that I use for recording projects (no kitchen computer, though!)

The one computer runs a modern flavor of Linux; the one in the basement runs an older flavor of Linux and I’ve cannibalized the CD-ROM out of it so I currently can’t install new programs from its installation CDs; and the other one runs Windows 95.

Sometimes it’s a challenge getting these computers to all be on speaking terms with each other!

The other night, I recorded a tape of my wife’s late grandmother reading James Whitcomb Riley, and rather than copy it up to the Windows 95 machine to burn a CD, I wanted to put it on the newer Linux box first, since I have a newer version of the Audacity sound editor there that has a noise eliminator filter I wanted to try out.

The basement computer makes available an SMB share that I usually access from Windows 95. I thought there should be some command-line smb* command that would get me the recording file off the other computer’s share point.

There is: it’s smbget, and here’s how I used it:

smbget smb://host/sharename/path/to/file.ext

Then it prompted me for username and password (and maybe workgroup? Though it defaulted to the right one).

I don’t know if you’re aware of it but there’s a family of filesystems called fuse (which somehow stands for Filesystem in Userspace). It lets you use things like smb as a filesystem (via smbfs). So you can give a smb share a mount point in your linux filesystem and just access it that way. You can do the same thing with ssh too by using sshfs.

Looking up some stuff about this smbfs, it looks like it has been superceded by a CIFS (common internent filesystem) which lets you do the same thing. The difference though is that using fuse and smbfs or sshfs or whatever, you can do that in user space (meaning you don’t *have* to edit /etc/fstab to use it. there’s some file in the user’s home directory that acts the same way as fstab does). CIFS on the other hand is a kernel module so it can’t be used in user space.

Anyway, fuse and its various filesystems can be very useful for this sort of thing and could make the connection of your various machines a bit more transparent.

I like the idea of having the other share points appearing as just a part of the filesystem. This would make those computers available to my wife (who is probably not willing to memorize obscure commands to type at the command line like I am :)