在另一个用户下运行一个shell脚本的shell脚本

5

I have two shell scripts:

one.sh

echo "hello"
su - oracle -c "sh /tmp/two.sh" 
echo "good bye"

two.sh

echo "bla bla bla"

我想要以“root”的身份运行“one.sh”,并查看以下输出:
hello
bla bla bla
good bye

这怎么可能呢?


你想从 Bash 脚本中以另一个用户身份登录吗? - MLSC
是的,我也想从那里获取输出。 - AloneInTheDark
1
尝试执行以下命令:su - oracle -c /tmp/two.sh,并告诉输出结果是什么。 - MLSC
2个回答

3

在线上

su - oracle -c "sh two.sh"

解释器不知道文件"two.sh"的路径。

尝试使用绝对路径...(例如,sh /tmp/two.sh)。

所以:

root@myServer:/tmp# ./one.sh
hello
bla bla bla
good bye

更新

请确保oracle用户可以在系统中找到"sh"命令,请指定"sh"命令的绝对路径,以确保不会发生错误。


我已经尝试过这种方法,但它没有起作用。同时,很抱歉在问题中没有提到它。我已经编辑了它。我的问题是,当我运行这个脚本时,在我的控制台中看不到“bla bla bla”。 - AloneInTheDark
奇怪,这对我而言是可以工作的... - MarcoS
显然,在shell中的注释应该以“#”开头,“//this command doesn't show me any output”是非法注释,会产生语法错误... :-) - MarcoS
我的实际脚本中没有注释 :) - AloneInTheDark

2

首先为您的脚本设置chmod +x

尝试:

echo "hello"
su - oracle -c /tmp/two.sh
echo "good bye"

当从root用户登录到oracle用户时,我不需要密码。 - AloneInTheDark
你看到我回答部分的顶部了吗? - MLSC
是的,目前这个可以工作。 - AloneInTheDark

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接