2

我需要运行一个 python 脚本来更改用户、设置环境变量并执行命令并返回输出。

1.)我目前这样做的方式是我正在创建一个为我执行此操作的 shell 脚本:

tmpshell.sh

su - grid -c "echo +ASM1 | . oraenv; asmcmd volinfo -a"

该命令失败,因为未设置环境。

2.)我尝试的第二种方法是更改​​用户是python脚本本身,然后创建shell脚本。

临时文件

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]# 

有什么建议/更好的方法吗?

ps(edit) ".oraenv" 用于设置环境,+ASM1 是它期望的环境变量。

4

1 回答 1

-1

尝试这样的事情:

$ sudo -u grid sh -c ". oraenv; echo +ASM1|asmcmd volinfo -a"

这将以 user 身份启动 shell grid,在其中设置环境并执行命令。不过,我不确定您的命令的第二部分是做什么的 - 我怀疑您想通过管道+ASM1输入 的标准输入asmcmd,但您没有提供足够的上下文来确定。

于 2013-07-06T14:34:25.560 回答