Python smbclient wrapper.
This is a wrapper that works by running the "smbclient" subprocess and providing an API similar to the one provided by python `os` module.
It is an ugly hack, but it is here for anyone that finds it useful.
The programmer before me was using a "bash" file with lots of smbclient calls, so I think my solution is at least better.
>>> smb = smbclient.SambaClient(server="MYSERVER", share="MYSHARE", username='foo', password='bar', domain='baz') >>> print smb.listdir("/") [u'file1.txt', u'file2.txt'] >>> f = smb.open('/file1.txt') >>> data = f.read() >>> f.close() >>> smb.rename(u'/file1.txt', u'/file1.old')
Creating the object
import smbclient smb = smbclient.SambaClient(server, share, username=None, password=None, domain=None, resolve_order=None, port=None, ip=None, terminal_code=None, buffer_size=None, debug_level=None, config_file=None, logdir=None, netbios_name=None, kerberos=False)
If you want to use kerberos authentication just use the argument
kerberos=True and you don't need to pass username and password.
Supported methods of operation
chmod(path, *modes) Set/reset file modes Tested with: AHS smbc.chmod('/file.txt', '+H') close() Closes the connection, flushes and closes all open remote files. diskinfo() Fetches information about a volume info(path) Fetches information about a file exists(path) Returns True if path exists in the remote host isdir(path) Returns True if path is a directory/folder isfile(path) Returns True if path is a regular file glob(path) Lists a glob (example: "/files/somefile.*") returns a list of tuples in the format: [(filename, modes, size, date), ...] lsdir(path) Lists a directory returns a list of tuples in the format: [(filename, modes, size, date), ...] listdir(path) Emulates os.listdir() mkdir(path) Creates a new folder remotely rmdir(path) Removes a remote empty folder open(path, mode='r') Opens the file indicated by path and returns it as a file-like object rename(old_name, new_name) volume() Fetches the volume name serial() Fetches the volume serial unlink(path) or remove(path) Removes/deletes/unlinks a file download(remote_path, local_path) upload(local_path, remote_path) upload_update(local_path, remote_path) netsend(destination, message) Sends a message, using netsend