使用更多用户执行脚本

时间:2010-09-07 09:31:03

标签: bash su

我正在编写一个调用很多其他脚本的bash脚本 有几个脚本必须以user_1执行,但有几个脚本必须以user_2执行 应严格按顺序调用脚本。我以user_1开始我的脚本并使用su多次成为user_2。这些时间su需要密码,因此我必须多次重新输入密码。 我想避免这种情况,但su没有密码参数 没有安装sudo和expect。

4 个答案:

答案 0 :(得分:1)

  • 为user_1和user_2分叉(使用'&')。他们应该使用'lock file'(信号量)进行通信(类似于客户端 - 服务器)。例如,user_1执行某些操作并且user_2检查是“锁定文件”存在于而... ... 循环

  • 也许这很愚蠢,但您可以使用ssh user@localhost结束键

答案 1 :(得分:1)

如果您碰巧拥有zsh,我认为您可以轻松完成此操作 - 例如:

#!/bin/zsh
coproc user1_script
su user2
do_stuff
echo "your_turn" >&p
read MY_TURN
do_more_stuff
echo "your_turn" >&p
read MY_TURN
...

user1_script:

#!/bin/zsh
read MY_TURN
do_stuff
echo your_turn
read MY_TURN
do_more_stuff
...

如果你被困,并且拥有zsh,那么无论如何都值得一试。

答案 2 :(得分:1)

您可以以root身份运行。听起来有风险吗?如果你小心并且在每个命令之前加上su并且添加如下的用户名,则不是这样的:

su -c'script1'user_1&& su -c'script2'user_2

这将(假设您以root身份启动)将用户更改为user_1,然后再运行script1,然后返回root,然后更改为user_2以运行script2 ..所有这些都不需要多个密码。

答案 3 :(得分:0)

我用ssh解决了这个问题。我已经为user_1生成了身份验证密钥并发布到了user2。不再需要密码。

ssh -l user_1 hostname  "command_1; command_2"