samba 4 python scripting - samba - opening windows to a wider world
TRANSCRIPT
![Page 1: Samba 4 Python Scripting - Samba - opening windows to a wider world](https://reader030.vdocuments.mx/reader030/viewer/2022020703/61fb46b32e268c58cd5c40a1/html5/thumbnails/1.jpg)
Samba 4 PythonScripting
Jelmer Vernooij
Why Python?
Changes in thelast year
Some trivialexamples
Demo
Creating bindings
Future
Samba 4 Python Scripting
Jelmer Vernooij
Samba Team
April 18, 2008
![Page 2: Samba 4 Python Scripting - Samba - opening windows to a wider world](https://reader030.vdocuments.mx/reader030/viewer/2022020703/61fb46b32e268c58cd5c40a1/html5/thumbnails/2.jpg)
Samba 4 PythonScripting
Jelmer Vernooij
Why Python?
Changes in thelast year
Some trivialexamples
Demo
Creating bindings
Future
Agenda
Why Python?
Changes in the last year
Some trivial examples
Demo
Creating bindings
Future
![Page 3: Samba 4 Python Scripting - Samba - opening windows to a wider world](https://reader030.vdocuments.mx/reader030/viewer/2022020703/61fb46b32e268c58cd5c40a1/html5/thumbnails/3.jpg)
Samba 4 PythonScripting
Jelmer Vernooij
Why Python?
Changes in thelast year
Some trivialexamples
Demo
Creating bindings
Future
Why scripting?
I Quicker developmentI Easier to understand
I Easy to use for system administratorsI Lower barrier for contributions?
![Page 4: Samba 4 Python Scripting - Samba - opening windows to a wider world](https://reader030.vdocuments.mx/reader030/viewer/2022020703/61fb46b32e268c58cd5c40a1/html5/thumbnails/4.jpg)
Samba 4 PythonScripting
Jelmer Vernooij
Why Python?
Changes in thelast year
Some trivialexamples
Demo
Creating bindings
Future
History of Samba and scripting
I Samba 3.0 had python bindingsI Removed because of lack of maintainanceI Not used for any core infrastructure
I Samba 4 has embedded JavaScriptI Originally used for SWAT, provisioning
![Page 5: Samba 4 Python Scripting - Samba - opening windows to a wider world](https://reader030.vdocuments.mx/reader030/viewer/2022020703/61fb46b32e268c58cd5c40a1/html5/thumbnails/5.jpg)
Samba 4 PythonScripting
Jelmer Vernooij
Why Python?
Changes in thelast year
Some trivialexamples
Demo
Creating bindings
Future
Why Python?
I Replaces EJS as internal scripting languageI Python is now a build-dependency
I Easy to build from source, no dependenciesI Ported to at least as much platforms as SambaI Available as standard package for most platforms
I The longer we would’ve waited, the more code we’dhave to port
![Page 6: Samba 4 Python Scripting - Samba - opening windows to a wider world](https://reader030.vdocuments.mx/reader030/viewer/2022020703/61fb46b32e268c58cd5c40a1/html5/thumbnails/6.jpg)
Samba 4 PythonScripting
Jelmer Vernooij
Why Python?
Changes in thelast year
Some trivialexamples
Demo
Creating bindings
Future
Why Python?
I Comes “with batteries included”I No need to reimplement utility functions and bindings
for SambaI Easy to create bindingsI Most existing libraries already have Python bindings
I GTK+, Qt, HTTP, .ini-parsers...I Large existing developer base
I Potential contributorsI Better scripting language
I Nested functionsI Modularity
I More development tools availableI Debugger, profiler, code coverage analyser, ...
![Page 7: Samba 4 Python Scripting - Samba - opening windows to a wider world](https://reader030.vdocuments.mx/reader030/viewer/2022020703/61fb46b32e268c58cd5c40a1/html5/thumbnails/7.jpg)
Samba 4 PythonScripting
Jelmer Vernooij
Why Python?
Changes in thelast year
Some trivialexamples
Demo
Creating bindings
Future
What exactly is Python?
I High-level generalpurpose scriptinglanguage
I Object-oriented,structured or functionalprogramming
I Memory-managed,reference-counted
I Standardsized, severalimplementations
I PortableI Created in ’91
![Page 8: Samba 4 Python Scripting - Samba - opening windows to a wider world](https://reader030.vdocuments.mx/reader030/viewer/2022020703/61fb46b32e268c58cd5c40a1/html5/thumbnails/8.jpg)
Samba 4 PythonScripting
Jelmer Vernooij
Why Python?
Changes in thelast year
Some trivialexamples
Demo
Creating bindings
Future
What does it look like?
Hello world!
pr in t ” He l lo World ! ”
Function usage
def addone ( value ) :return value + 1
Using modules
import u n i t t e s t
![Page 9: Samba 4 Python Scripting - Samba - opening windows to a wider world](https://reader030.vdocuments.mx/reader030/viewer/2022020703/61fb46b32e268c58cd5c40a1/html5/thumbnails/9.jpg)
Samba 4 PythonScripting
Jelmer Vernooij
Why Python?
Changes in thelast year
Some trivialexamples
Demo
Creating bindings
Future
Some interesting software in Python
Written in Python:I Original BitTorrent clientI MailmanI Bazaar/MercurialI TracI Some apps in GNOME/KDE
Scriptable in PythonI BlenderI Amarok, RhythmboxI VimI TotemI Epiphany
![Page 10: Samba 4 Python Scripting - Samba - opening windows to a wider world](https://reader030.vdocuments.mx/reader030/viewer/2022020703/61fb46b32e268c58cd5c40a1/html5/thumbnails/10.jpg)
Samba 4 PythonScripting
Jelmer Vernooij
Why Python?
Changes in thelast year
Some trivialexamples
Demo
Creating bindings
Future
Python in Samba 4!
I pidl can now generate Python bindingsI SWIG used for binding several other librariesI some bindings written manuallyI now used instead of EJS in a lot of places
I EJS still there but may be removed at a later point
![Page 11: Samba 4 Python Scripting - Samba - opening windows to a wider world](https://reader030.vdocuments.mx/reader030/viewer/2022020703/61fb46b32e268c58cd5c40a1/html5/thumbnails/11.jpg)
Samba 4 PythonScripting
Jelmer Vernooij
Why Python?
Changes in thelast year
Some trivialexamples
Demo
Creating bindings
Future
Existing Samba Python bindings
I CredentialsI SamDBI Most DCE/RPC modulesI LDBI TDBI RegistryI Libnet
I Includes matching unit tests, so all bindings shouldwork
I Bindings should be Pythonic rather than one-on-onewrappers of C functions
![Page 12: Samba 4 Python Scripting - Samba - opening windows to a wider world](https://reader030.vdocuments.mx/reader030/viewer/2022020703/61fb46b32e268c58cd5c40a1/html5/thumbnails/12.jpg)
Samba 4 PythonScripting
Jelmer Vernooij
Why Python?
Changes in thelast year
Some trivialexamples
Demo
Creating bindings
Future
Infrastructure in Python
I ProvisioningI smbclient?
I SoC student will work on thisI Proof-of-concept will be interesting, may not be ideal
as actual implementationI SWAT
I SoC student will work on this hopefullyI Samba-GTK
I SoC student will work on this
![Page 13: Samba 4 Python Scripting - Samba - opening windows to a wider world](https://reader030.vdocuments.mx/reader030/viewer/2022020703/61fb46b32e268c58cd5c40a1/html5/thumbnails/13.jpg)
Samba 4 PythonScripting
Jelmer Vernooij
Why Python?
Changes in thelast year
Some trivialexamples
Demo
Creating bindings
Future
Reading TDB files
1 import tdb , sys23 db = tdb . Tdb ( sys . argv [ 1 ] )4 for ( k , v ) in db . i tems ( ) :5 pr in t ” { ”6 pr in t ” key(%d ) = %r ” % ( len ( k ) , k )7 pr in t ” data(%d ) = %r ” % ( len ( v ) , v )8 pr in t ” } ”
![Page 14: Samba 4 Python Scripting - Samba - opening windows to a wider world](https://reader030.vdocuments.mx/reader030/viewer/2022020703/61fb46b32e268c58cd5c40a1/html5/thumbnails/14.jpg)
Samba 4 PythonScripting
Jelmer Vernooij
Why Python?
Changes in thelast year
Some trivialexamples
Demo
Creating bindings
Future
Using LDB
1 # ! / usr / b in / python23 import ldb45 conn = ldb . Ldb ( ”msg . tdb ” )67 conn . add ({ ” dn ” : ” dc=samba , dc=org ” , ” a t t r 1 ” : ” foo ” } )89 for msg in conn . search ( ” dc=samba , dc=org ” ) :
10 pr in t s t r (msg . dn )
![Page 15: Samba 4 Python Scripting - Samba - opening windows to a wider world](https://reader030.vdocuments.mx/reader030/viewer/2022020703/61fb46b32e268c58cd5c40a1/html5/thumbnails/15.jpg)
Samba 4 PythonScripting
Jelmer Vernooij
Why Python?
Changes in thelast year
Some trivialexamples
Demo
Creating bindings
Future
Connecting to LDAP using LDB
1 # ! / usr / b in / python23 import ldb45 # Connect to the LDAP server6 conn = ldb . Ldb ( ” ldap : / / ldap . abmas . org / ” )78 for msg in conn . search ( ” dc=samba , dc=org ” ) :9 pr in t s t r (msg . dn )
![Page 16: Samba 4 Python Scripting - Samba - opening windows to a wider world](https://reader030.vdocuments.mx/reader030/viewer/2022020703/61fb46b32e268c58cd5c40a1/html5/thumbnails/16.jpg)
Samba 4 PythonScripting
Jelmer Vernooij
Why Python?
Changes in thelast year
Some trivialexamples
Demo
Creating bindings
Future
Browsing the registry
1 # ! / usr / b in / python
![Page 17: Samba 4 Python Scripting - Samba - opening windows to a wider world](https://reader030.vdocuments.mx/reader030/viewer/2022020703/61fb46b32e268c58cd5c40a1/html5/thumbnails/17.jpg)
Samba 4 PythonScripting
Jelmer Vernooij
Why Python?
Changes in thelast year
Some trivialexamples
Demo
Creating bindings
Future
Adding users
1 # ! / usr / b in / python2 import samr , l sa34 # Connect to the l o c a l SAM5 conn = samr . samr ( ” nca l rpc : ” , ” s t / dc / e tc / smb . conf ” )67 # Get SAMR connect handle8 samr handle = conn . Connect (0 , 0 x f f f f f f f )9
10 domainname = lsa . S t r i n g ( )11 domainname . s t r i n g = u ”SAMBADOMAIN”1213 s id = conn . LookupDomain ( samr handle , domainname )14 pr in t ” Found s id %s f o r SAMBADOMAIN” % s id1516 conn . Close ( samr handle )
![Page 18: Samba 4 Python Scripting - Samba - opening windows to a wider world](https://reader030.vdocuments.mx/reader030/viewer/2022020703/61fb46b32e268c58cd5c40a1/html5/thumbnails/18.jpg)
Samba 4 PythonScripting
Jelmer Vernooij
Why Python?
Changes in thelast year
Some trivialexamples
Demo
Creating bindings
Future
Unit tests
1 import winreg2 from samba . t e s t s import RpcInterfaceTestCase34 class WinregTests ( RpcInterfaceTestCase ) :5 def setUp ( s e l f ) :6 s e l f . conn = winreg . winreg ( ” nca l rpc : ” , s e l f . get loadparm ( ) , s e l f . g e t c r e d e n t i a l s ( ) )78 def t es t hk lm ( s e l f ) :9 handle = s e l f . conn .OpenHKLM(None ,
10 winreg .KEY QUERY VALUE | winreg .KEY ENUMERATE SUB KEYS)11 s e l f . conn . CloseKey ( handle )
![Page 19: Samba 4 Python Scripting - Samba - opening windows to a wider world](https://reader030.vdocuments.mx/reader030/viewer/2022020703/61fb46b32e268c58cd5c40a1/html5/thumbnails/19.jpg)
Samba 4 PythonScripting
Jelmer Vernooij
Why Python?
Changes in thelast year
Some trivialexamples
Demo
Creating bindings
Future
DemoDemo Time
![Page 20: Samba 4 Python Scripting - Samba - opening windows to a wider world](https://reader030.vdocuments.mx/reader030/viewer/2022020703/61fb46b32e268c58cd5c40a1/html5/thumbnails/20.jpg)
Samba 4 PythonScripting
Jelmer Vernooij
Why Python?
Changes in thelast year
Some trivialexamples
Demo
Creating bindings
Future
Creating bindings
I We use SWIG, http://www.swig.org/.I Hard to grasp language but very powerful
![Page 21: Samba 4 Python Scripting - Samba - opening windows to a wider world](https://reader030.vdocuments.mx/reader030/viewer/2022020703/61fb46b32e268c58cd5c40a1/html5/thumbnails/21.jpg)
Samba 4 PythonScripting
Jelmer Vernooij
Why Python?
Changes in thelast year
Some trivialexamples
Demo
Creating bindings
Future
Missing bindings
I NetBIOSI SMBI WINSI CLDAPI LDAP
![Page 22: Samba 4 Python Scripting - Samba - opening windows to a wider world](https://reader030.vdocuments.mx/reader030/viewer/2022020703/61fb46b32e268c58cd5c40a1/html5/thumbnails/22.jpg)
Samba 4 PythonScripting
Jelmer Vernooij
Why Python?
Changes in thelast year
Some trivialexamples
Demo
Creating bindings
Future
Where to get?
I ldbI http://ldb.samba.org/I python-ldb in Debian/Ubuntu
I tdbI http://tdb.samba.org/I python-tdb in Debian/Ubuntu
I . . . others:I Samba 4I . . . not packaged yet, but hopefully soon
![Page 23: Samba 4 Python Scripting - Samba - opening windows to a wider world](https://reader030.vdocuments.mx/reader030/viewer/2022020703/61fb46b32e268c58cd5c40a1/html5/thumbnails/23.jpg)
Samba 4 PythonScripting
Jelmer Vernooij
Why Python?
Changes in thelast year
Some trivialexamples
Demo
Creating bindings
Future
Learning more
I www.python.org
I pydoc < name >
I pydoctorI Maybe public API docs on Samba.org?
![Page 24: Samba 4 Python Scripting - Samba - opening windows to a wider world](https://reader030.vdocuments.mx/reader030/viewer/2022020703/61fb46b32e268c58cd5c40a1/html5/thumbnails/24.jpg)
Samba 4 PythonScripting
Jelmer Vernooij
Why Python?
Changes in thelast year
Some trivialexamples
Demo
Creating bindings
Future
Future expansions
I Port to Samba 3?I Need to make sure it stays maintained
I Help welcome :-)