FreeIPA创建删除用户时,调用自定义脚本
来源:互联网 发布:多益网络客户端 编辑:程序博客网 时间:2024/05/20 11:48
在我们的环境中,hadoop集群中的kerberos用户是通过Freeipa创建的。但是如果我们希望freeipa在创建用户的时候,
能够帮我们做一些前置的动作。此时可能就比较麻烦。
下面通过一个例子,来说明freeipa如何在创建或删除用户时调用我们自己定义的脚本。
1. 修改/etc/ipa/default.conf,将用户自定义的脚本增加到配置项中
如下例,增加自定义脚本test.sh:
[root@ipa139 ipa]# cat default.conf
... ...
ipa_user_script=/etc/ipa/test.sh
2. 按照上面配置正确配置test.sh,并保证它拥有可执行权限。在我们例子中,其内容如下:
[root@ipa139 ipa]# cat test.sh
#!/bin/bash
echo "a:$1 u:$2" >> /tmp/ipa_custom_$$
3. 修改ipa的user.py脚本。
这个脚本与python的版本有关,我安装的python为2.6,因此它的位置就在:
[root@ipa139 plugins]# pwd
/usr/lib/python2.6/site-packages/ipalib/plugins
[root@ipa139 plugins]# ll user.py
-rw-r--r--. 1 root root 34124 Nov 27 23:35 user.py
[root@ipa139 plugins]#
在这个脚本中增加上调用test.sh的语句。
[root@ipa139 plugins]# cat user.py
... ...
from ipapython.ipautil import ipa_generate_password, run #增加run,后面需要这个函数来执行脚本
... ...
class user_add(LDAPCreate):
... ...
def post_callback(self, ldap, dn, entry_attrs, *keys, **options):
.. ... ..
####在post_callback中增加脚本执行的部分信息 -- Begin
if 'ipa_user_script' in self.api.env:
try:
self.log.info("TTTT -- running %s %s %s" % (self.api.env.ipa_user_script, "add", dn))
run([self.api.env.ipa_user_script, "add", "%s" % dn, user_add.init_passwd])
except:
self.log.error("error runing %s" % self.api.env.ipa_user_script)
pass
return dn
####在post_callback中增加脚本执行的部分信息 --- End
api.register(user_add)
class user_del(LDAPDelete):
__doc__ = _('Delete a user.')
msg_summary = _('Deleted user "%(value)s"')
def pre_callback(self, ldap, dn, *keys, **options):
assert isinstance(dn, DN)
check_protected_member(keys[-1])
return dn
#### user_del,增加了post_callback,然后再增加执行脚本的动作
def post_callback(self, ldap, dn, *keys, **options):
if 'ipa_user_script' in self.api.env:
try:
self.log.info("TTTT 22 -- running %s %s %s" % (self.api.env.ipa_user_script, "del", dn))
run([self.api.env.ipa_user_script, "del", "%s" % dn, user_add.init_passwd])
except:
self.log.error("error runing %s" % self.api.env.ipa_user_script)
pass
return dn
#### user_del,增加了post_callback,然后再增加执行脚本的动作 --- End
api.register(user_del)
... ....
4. 重启ipactl,执行命令如下:
[root@ipa139 ipa]# ipactl restart
5. 验证:
此时我们可以通过ipa ui或者ipa命令来增加删除用户,就可以看到会/tmp目录下面打印相应的信息
6. 总结
1) ipa的python脚本还是比较清楚的。虽然我不懂python,但是大体的代码结构非常清楚。整个user的处理过程,
一般都分为三个部分:pre_callback, callback与post_callback,我们的执行脚本命令只需要在post_callback中增加即可
能够帮我们做一些前置的动作。此时可能就比较麻烦。
下面通过一个例子,来说明freeipa如何在创建或删除用户时调用我们自己定义的脚本。
1. 修改/etc/ipa/default.conf,将用户自定义的脚本增加到配置项中
如下例,增加自定义脚本test.sh:
[root@ipa139 ipa]# cat default.conf
... ...
ipa_user_script=/etc/ipa/test.sh
2. 按照上面配置正确配置test.sh,并保证它拥有可执行权限。在我们例子中,其内容如下:
[root@ipa139 ipa]# cat test.sh
#!/bin/bash
echo "a:$1 u:$2" >> /tmp/ipa_custom_$$
3. 修改ipa的user.py脚本。
这个脚本与python的版本有关,我安装的python为2.6,因此它的位置就在:
[root@ipa139 plugins]# pwd
/usr/lib/python2.6/site-packages/ipalib/plugins
[root@ipa139 plugins]# ll user.py
-rw-r--r--. 1 root root 34124 Nov 27 23:35 user.py
[root@ipa139 plugins]#
在这个脚本中增加上调用test.sh的语句。
[root@ipa139 plugins]# cat user.py
... ...
from ipapython.ipautil import ipa_generate_password, run #增加run,后面需要这个函数来执行脚本
... ...
class user_add(LDAPCreate):
... ...
def post_callback(self, ldap, dn, entry_attrs, *keys, **options):
.. ... ..
####在post_callback中增加脚本执行的部分信息 -- Begin
if 'ipa_user_script' in self.api.env:
try:
self.log.info("TTTT -- running %s %s %s" % (self.api.env.ipa_user_script, "add", dn))
run([self.api.env.ipa_user_script, "add", "%s" % dn, user_add.init_passwd])
except:
self.log.error("error runing %s" % self.api.env.ipa_user_script)
pass
return dn
####在post_callback中增加脚本执行的部分信息 --- End
api.register(user_add)
class user_del(LDAPDelete):
__doc__ = _('Delete a user.')
msg_summary = _('Deleted user "%(value)s"')
def pre_callback(self, ldap, dn, *keys, **options):
assert isinstance(dn, DN)
check_protected_member(keys[-1])
return dn
#### user_del,增加了post_callback,然后再增加执行脚本的动作
def post_callback(self, ldap, dn, *keys, **options):
if 'ipa_user_script' in self.api.env:
try:
self.log.info("TTTT 22 -- running %s %s %s" % (self.api.env.ipa_user_script, "del", dn))
run([self.api.env.ipa_user_script, "del", "%s" % dn, user_add.init_passwd])
except:
self.log.error("error runing %s" % self.api.env.ipa_user_script)
pass
return dn
#### user_del,增加了post_callback,然后再增加执行脚本的动作 --- End
api.register(user_del)
... ....
4. 重启ipactl,执行命令如下:
[root@ipa139 ipa]# ipactl restart
5. 验证:
此时我们可以通过ipa ui或者ipa命令来增加删除用户,就可以看到会/tmp目录下面打印相应的信息
6. 总结
1) ipa的python脚本还是比较清楚的。虽然我不懂python,但是大体的代码结构非常清楚。整个user的处理过程,
一般都分为三个部分:pre_callback, callback与post_callback,我们的执行脚本命令只需要在post_callback中增加即可
2) 但是有一点,因为这个脚本是我们自己手动修改的,因此,如果freeipa 使用多Master的情况,可能就需要自己去拷贝。
参考:https://gist.github.com/jb68/22ef9a8450fe86ae1670b94009f4f4a2
阅读全文
0 0
- FreeIPA创建删除用户时,调用自定义脚本
- freeipa
- 利用 useradd 与 passwd --stdin 批量创建删除用户脚本
- 创建C++自定义类让Lua脚本调用
- 创建C++自定义类让Lua脚本调用
- oracle创建用户脚本
- 创建本地用户脚本
- 创建用户脚本
- 创建用户的脚本
- 用户自动创建脚本
- 用户创建脚本
- ORACLE创建表空间、删除用户与建立用户及权限及导入导出脚本
- 删除用户自定义配置
- shell脚本操作oracle删除表空间、创建表空间、删除用户
- Mysql 创建用户、删除用户
- 用户创建,删除,修改
- 创建于删除用户
- Mysql创建、删除用户
- ubantu(Windows)安装tflearn
- mysql中的预编译语句
- Spring Cloud学习笔记2——客户端服务调用及负载均衡
- 物联网的产生以及物联网对产生的影响是什么?
- 简易付橙色免安装版V20171128更新包下载 | 适用于现场无法更新时使用 | 银盒子简易付扫码枪配套支付程序
- FreeIPA创建删除用户时,调用自定义脚本
- 共同学习Java源代码-数据结构-HashMap(十三)
- 认识与分析日志文件
- idea显示改变
- trap命令
- adb常用命令的缩写脚本
- 在本地部署Parse Server和Parse DashBoard一步到位
- vue.js 2.0入门级前端和后台数据交互
- Adobe Reader 缓冲区溢出漏洞 (CVE-2010-2883)漏洞分析报告