Bash 使用更多用户执行脚本

Bash 使用更多用户执行脚本,bash,su,Bash,Su,我正在编写一个bash脚本,它调用了许多其他脚本。 必须以用户\ 1的身份执行多个脚本,但以用户\ 2的身份执行多个脚本。 应该严格按照顺序调用脚本。我以用户_1的身份启动脚本,并多次使用su来成为用户_2。这些时候,su需要密码,所以我必须多次重新键入密码。 我想避免这种情况,但su没有密码参数。 未安装sudo和expect。 为用户_1和用户_2制作一个分叉(使用“&”)。它们应该使用“锁文件”(信号量)进行通信(类似于客户端服务器)。例如,用户_1正在做某事,用户_2正在检查,中是否存在

我正在编写一个bash脚本,它调用了许多其他脚本。
必须以用户\ 1的身份执行多个脚本,但以用户\ 2的身份执行多个脚本。
应该严格按照顺序调用脚本。我以用户_1的身份启动脚本,并多次使用su来成为用户_2。这些时候,su需要密码,所以我必须多次重新键入密码。 我想避免这种情况,但su没有密码参数。
未安装sudo和expect。

  • 为用户_1和用户_2制作一个分叉(使用“&”)。它们应该使用“锁文件”(信号量)进行通信(类似于客户端服务器)。例如,用户_1正在做某事,用户_2正在检查,中是否存在“锁定文件”,而…sleep循环

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


如果您碰巧有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
...
用户1_脚本:

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

如果您被卡住了,并且有zsh,无论如何都值得一试。

您可以作为root用户运行。听起来很危险?如果您很小心,在每个命令前面加上su并添加用户名,则不会这样做:

su-c“script1”用户\u 1和su-c“script2”用户\u 2


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

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

ssh -l user_1 hostname  "command_1; command_2"

Bash4和ksh也有协进程。听起来不错,但我的脚本必须在公司服务器上运行。只有系统管理员才知道根密码。您能详细说明为什么需要这两个用户吗?你有这两个的密码。。您能否在最后浏览结果文件?这将是一个安装脚本。我们正在使用两种不同的工具进行应用。这两种工具都需要作为特殊用户安装。该规则是工具生产商要求的。这些工具的组件是相互构建的。这意味着我必须先安装第一个工具,然后再启动一些组件。接下来我必须安装2。工具,从第一个工具启动其他组件,执行其他一些操作。这是一个粗略的场景。这也是我的第一个想法,这肯定是一个伟大的解决方案。我觉得太冒险了。当脚本变得更加复杂时,将来可能会出现问题。