文章目录
  1. 1. 问题一 : 一个脚本中需要两个用户的权限
  2. 2. 问题二 : 使用多profile文件管理的多实例集群,在脚本中进行profile切换

Python 日渐成为运维同学喜爱的脚本语言,我也一样,非常喜欢python的简洁,丰富,完善的lib 库,一般稍微成型的工具脚本,我都是选择python来完成,特别是,后台进程, 多线程,以及多进程
的编程模型都很容易使用,另外python本身也有比较完善的web(django,web.py)开发框架,
很多时候,一些系统需要web界面,python一门语言搞定前后端,呵呵,赞一个

不卖关子了,进入正题 ,作为一名数据库工程师, 不仅要做数据架构方面的工作,数据库的管理也是
非常重要的一环。谈到运维,特别是规模化的管理情况下,包括多实例,大集群,其中要写很多工具脚本
,最近关于权限这块遇到了几个小问题,记录分享一下

问题一 : 一个脚本中需要两个用户的权限

比如说 oracle的sqlplus os 授权,能够使用sqlplus / 登录的用户,有oracle 和同在dba group 组中的用户。root 用户本身也没用权限执行sqlplus。如何解决这个问题。其实很简单
使用root权限跑工具脚本,遇到需要使用oracle用户权限的时候使用如下代码可以修改当前用户,不过一旦设置之后,将失去root权限。可以 su oracle -c 调用脚本或者命令来完成,但是稍微有点麻烦,如下
代码可以解决的很好。

1
2
3
import pwd
oracle_uid=pwd.getpwnam('oracle')[2]
os.setuid(oracle_uid)
问题二 : 使用多profile文件管理的多实例集群,在脚本中进行profile切换

多实例是很常见的,包括oracle和mysql, mysql多为常见
如下脚本可以解决,具体模块做得什么工作,不在此讨论

1
2
3
4
5
6
7
import pickle
source = 'source '+'/home/oracle/profile_'+t
dump = '/usr/bin/python -c "import os,pickle;print pickle.dumps(os.environ)"'
penv = os.popen('%s && %s' %(source,dump))
env = pickle.loads(penv.read())
os.environ = env
oraclesid = os.environ.get('ORACLE_SID') ;
文章目录
  1. 1. 问题一 : 一个脚本中需要两个用户的权限
  2. 2. 问题二 : 使用多profile文件管理的多实例集群,在脚本中进行profile切换