[Samba] python: listing samba shares

Ricardo Jorge rvelhote at gmail.com
Sun Aug 16 11:23:02 MDT 2009


Hi,

There was a line missing from source4/librpc/config.mk and it wasn't
building the Python module.

Here is a patch if you can apply it:

diff --git a/source4/librpc/config.mk b/source4/librpc/config.mk
index 2aeea6d..5305b34 100644
--- a/source4/librpc/config.mk
+++ b/source4/librpc/config.mk
@@ -672,6 +672,12 @@ PRIVATE_DEPENDENCIES = RPC_NDR_WKSSVC PYTALLOC
pyparam_util pycredentials python

 python_wkssvc_OBJ_FILES = ../librpc/gen_ndr/py_wkssvc.o

+[PYTHON::python_srvsvc]
+LIBRARY_REALNAME = samba/dcerpc/srvsvc.$(SHLIBEXT)
+PRIVATE_DEPENDENCIES = RPC_NDR_SRVSVC PYTALLOC pyparam_util
pycredentials python_dcerpc
+
+python_srvsvc_OBJ_FILES = ../librpc/gen_ndr/py_srvsvc.o
+
 [PYTHON::python_dfs]
 LIBRARY_REALNAME = samba/dcerpc/dfs.$(SHLIBEXT)
 PRIVATE_DEPENDENCIES = RPC_NDR_DFS PYTALLOC pyparam_util
pycredentials python_dcerpc

==================

If you can't patch just paste this:

[PYTHON::python_srvsvc]
LIBRARY_REALNAME = samba/dcerpc/srvsvc.$(SHLIBEXT)
PRIVATE_DEPENDENCIES = RPC_NDR_SRVSVC PYTALLOC pyparam_util
pycredentials python_dcerpc

python_srvsvc_OBJ_FILES = ../librpc/gen_ndr/py_srvsvc.o


in source4/librpc/config.mk. I think anywhere will be fine.

==================
After recompiling I could get the share names listed using this Python
code. Replace the credentials where necessary and server address.

#!/usr/bin/env python

import sys

sys.path.append('/usr/local/samba/lib/python2.6/site-packages')
sys.path.append('/usr/local/samba/lib/python2.6/site-packages/samba')
sys.path.append('/usr/local/samba/lib/python2.6/site-packages/samba/dcerpc')

from samba.dcerpc import samr, security, srvsvc
from samba import credentials

creds = credentials.Credentials()
creds.set_username("Administrator")
creds.set_password("x")

# you must leave this line or it will cause a segmentation fault
creds.set_workstation("")

try:
        conn = srvsvc.srvsvc('ncacn_np:localhost', credentials=creds)
except Exception, msg:
        print 'boooooo'
        print str(msg)
else:
        ctr = srvsvc.NetShareInfoCtr()
        shares = conn.NetShareEnumAll(u'localhost', ctr, 0, 0)

        print "\n\n============"
        print "There are " + str(shares[0].ctr.count) + " shares"
        print "============\n"

        for i in range(0, shares[0].ctr.count):
                print str(i) + ": " + shares[0].ctr.array[i].name

        print "\n\n"

I don't know how it will work for you because of your server
configuration. My Samba4 server is just for coding so it's pretty much
all default and local.




On Sun, Aug 16, 2009 at 5:08 PM, Ricardo Jorge<rvelhote at gmail.com> wrote:
> Hi,
>
> I was investigating this and I believe there is actually a way with
> Python but the problem is that the Python module with the binding is
> not being compiled (sorry but I have no idea why).
>
> There should be a module called samba.dcerpc.srvsvc.
>
> If you look at librpc/gen_ndr/py_srvsvc.c you will find
> NetShareEnumAll which binds to the same function that's called when -L
> is used in smbclient.
>
> Maybe it's something with the make file?
>
>
>
> On Sun, Aug 16, 2009 at 4:36 PM, Igor Katson<descentspb at gmail.com> wrote:
>> Helmut Hullen wrote:
>>>
>>> Hallo, Igor,
>>>
>>> Du meintest am 16.08.09:
>>>
>>>
>>>>
>>>> Is it possible to list samba shares and their contents of a
>>>> particular host? --
>>>>
>>>
>>> Shell:
>>>
>>>        smbclient -N -L $particular_host
>>>
>>> shows first all shares of that particular host and then some other  stuff.
>>> Perhaps you filter some output depending on the key word "Disk"  (or
>>> "Printer").
>>>
>>> Contents: "that depends".
>>> You must have some rights.
>>>
>>> Viele Gruesse!
>>> Helmut
>>>
>>
>> Thanks.
>> Yes, I know of that shell command, but I would like to do that directly from
>> python for more flexibility, control and convenience.
>> --
>> To unsubscribe from this list go to the following URL and read the
>> instructions:  https://lists.samba.org/mailman/options/samba
>>
>


More information about the samba mailing list