gpt4 book ai didi

python - 从 python 脚本,更改用户,设置环境并运行几个命令

转载 作者:太空宇宙 更新时间:2023-11-04 06:43:04 31 4
gpt4 key购买 nike

我需要运行一个 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 脚本更改了用户,但脚本的其余部分在我输入退出之前不会运行。

输出

[root@odadev1 oakvmclientlib]# python test.py
[grid@odadev1 ~]$ exit

[root@odadev1 oakvmclientlib]#

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

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

最佳答案

尝试这样的事情:

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

这将以用户 grid 的身份启动一个 shell,在其中设置环境并执行命令。不过,我不确定你的命令的第二部分是做什么的——我怀疑你想将 +ASM1 通过管道传输到 asmcmd 的标准输入中,但你还没有给出足够的上下文来确定。

关于python - 从 python 脚本,更改用户,设置环境并运行几个命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17503763/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com