题
我正在编写一个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 ..都不要求多个密码。
不隶属于 StackOverflow