我需要运行一个更改用户的python脚本,设置环境变量并执行命令并返回输出。
1。)我目前正在这样做的方式是我正在创建一个shell脚本来为我做这个:
tmpshell.sh
su - grid -c "echo +ASM1 | . oraenv; asmcmd volinfo -a"
该命令失败,因为未设置环境。
2。)我尝试的第二种方法是更改用户是python脚本本身,然后创建shell脚本。
tmp.py
os.system('su - grid')
TMPFILE="/tmp/tmpfile.sh"
filehandle=open(TMPFILE,'w')
filehandle.write('+ASM1|. oraenv')
filehandle.write('asmcmd volinfo -a')
filehandle.close()
os.chmmod(TMPFILE,0755)
这里的问题是python脚本改变了用户,但是在我进入exit之前,脚本的其余部分都没有运行。
输出
[root@odadev1 oakvmclientlib]# python test.py
[grid@odadev1 ~]$ exit
[root@odadev1 oakvmclientlib]#
有任何建议/更好的方法吗?
。(编辑)“。oraenv”用于设置环境,+ ASM1是它所期望的环境变量。
答案 0 :(得分:-1)
尝试这样的事情:
$ sudo -u grid sh -c ". oraenv; echo +ASM1|asmcmd volinfo -a"
这将以用户grid
启动shell,在其中设置环境并执行命令。我不确定你的命令的第二部分是做什么的 - 我怀疑你想把+ASM1
传递给asmcmd
的标准输入,但是你没有提供足够的上下文来确定。