我正在编写一个bash脚本,该脚本调用了许多其他脚本。
必须将几个脚本执行为user_1,但有几个脚本为user_2。
脚本应严格序列调用。我以user_1的速度启动脚本,然后使用SU多次成为user_2。这些时间su需要一个密码,因此我必须重新输入多次。我想避免这种情况,但是SU没有密码参数。
Sudo和Expect尚未安装。

有帮助吗?

解决方案 4

我已经使用SSH解决了问题。我已经生成了用户_1的身份验证密钥,并已发布给user2。不再需要密码了。

ssh -l user_1 hostname  "command_1; command_2"

其他提示

  • 为用户_1和用户_2制作叉子(使用'&')。他们应该使用“锁定文件”(信号量)进行通信(与客户端serwer类似)。例如,用户_1做某事,用户_2检查是“锁定文件” 而...睡觉 环形

  • 也许这很愚蠢,但是您可以使用 ssh user@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
...

user1_script:

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

如果您卡住并拥有ZSH,那么无论如何都值得一试。

您可以作为root运行。听起来有风险吗?如果您谨慎并在每个命令之前使用SU之前添加用户名:

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

这将(假设您从根开始)将用户更改为user_1,然后再运行脚本1,然后返回root,然后更改为user_2,以运行script2 ..都不要求多个密码。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top