diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2010-04-08 23:58:15 +0200 |
---|---|---|
committer | Jelmer Vernooij <jelmer@samba.org> | 2010-04-09 11:53:00 +0200 |
commit | 9af8d02b2230f78e4842106b918ff278dadd1d59 (patch) | |
tree | da57b48f86ad8fba7d00a9916a0ea2ab732d28b7 /source4/scripting/python/samba/netcmd/machinepw.py | |
parent | f83aa13f6228e04359952f04ebd7afed9a742c4a (diff) | |
download | samba-9af8d02b2230f78e4842106b918ff278dadd1d59.tar.gz samba-9af8d02b2230f78e4842106b918ff278dadd1d59.tar.xz samba-9af8d02b2230f78e4842106b918ff278dadd1d59.zip |
s4-net: Convert machinepw command to python.
Diffstat (limited to 'source4/scripting/python/samba/netcmd/machinepw.py')
-rw-r--r-- | source4/scripting/python/samba/netcmd/machinepw.py | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/source4/scripting/python/samba/netcmd/machinepw.py b/source4/scripting/python/samba/netcmd/machinepw.py new file mode 100644 index 00000000000..8788e06a60a --- /dev/null +++ b/source4/scripting/python/samba/netcmd/machinepw.py @@ -0,0 +1,53 @@ +#!/usr/bin/python +# +# Machine passwords +# Copyright Jelmer Vernooij 2010 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# + +import samba.getopt as options + +from samba import Ldb +from samba.auth import system_session +from samba.netcmd import Command, CommandError + + +class cmd_machinepw(Command): + """Get a machine password out of our SAM.""" + + synopsis = "%prog machinepw <accountname>" + + takes_optiongroups = { + "sambaopts": options.SambaOptions, + "versionopts": options.VersionOptions, + "credopts": options.CredentialsOptions, + } + + takes_args = ["secret"] + + def run(self, secret, sambaopts=None, credopts=None, versionopts=None): + lp = sambaopts.get_loadparm() + creds = credopts.get_credentials(lp) + url = lp.get("secrets database") + secretsdb = Ldb(url=url, session_info=system_session(), + credentials=creds, lp=lp) + + result = secretsdb.search(attrs=["secret"], + expression="(&(objectclass=primaryDomain)(samaccountname=%s))" % secret) + + if len(result) != 1: + raise CommandError("search returned %d records, expected 1" % len(result)) + + self.outf.write("%s\n" % result[0]["secret"]) |