我有两个脚本,第二个依靠第一个脚本:
b_reb :
该脚本为第二个脚本创build一个单元文件。 只有root用户login后才能启动a_reb服务,并且应该以root身份执行同一个会话。
这是b_reb脚本:
#!/bin/bash # Installing updates and other software echo "Creating systemd unit file..." cat << EOF > /usr/lib/systemd/system/a_reb.service [Unit] Description="Basic setup" [Service] WorkingDirectory=$(pwd) Type=forking ExecStart=/bin/bash $(pwd)/a_reb KillMode=process [Install] WantedBy=multi-user.target EOF echo "Enabling a_reb at startup..." systemctl enable a_reb.service reboot now
所以服务器重新启动并且根login。现在在同一个会话中, a_reb应该通过启动a_reb.service来执行。 我还没有作出a_reb ,但其内容是无关紧要的。
例如:一旦rootlogin, a_reb被执行,并输出一个提示让root来回答。
我希望我能正确解释自己。 我也接受其他方式做这个。 主要思想是b_reb做一些事情然后重新启动,此后a_reb在重新启动之后a_reb运行。
[UPDATE]
b-reb在系统上安装更新和所需的软件包。 之后,它将avahi-daemon主机名更改为.alocal 。 服务器然后需要重新启动。
a_rebconfiguration已安装的软件并进行域join。 域连接如下所示:
# Get adm-user for domain-join read -p 'adm username for domain-join: ' ADM echo "Continuing as $ADM..." realm join MYDOMAIN.LOCAL –U $ADM
这就是为什么我需要脚本以root身份运行(我不想使用sudo)。 我们是4人将使用这个,我们每个人都有我们自己的用户。 realm会提示input用户密码,所以没有必要。
你的任务是:
b-reb在系统上安装更新和所需的软件包。 之后,它将avahi-daemon主机名更改为.alocal。 服务器然后需要重新启动。
a_rebconfiguration已安装的软件并进行域join。
如果你打算使这个复杂化,我会build议使用Ansible,Puppet或Chef进行真正的configurationpipe理 – 事实上,你注意到你计划在将来自动化这个。 因此 :
把它变成服务是不必要的复杂。 而你正在尝试用a_reb从服务器读取控制台是不好的做法。 只要把你的两个shell脚本放到/usr/sbin然后指示你的四个用户运行它们就可以运行它们(我不太清楚你的描述)。