通过 rc.local 执行 Bash 脚本

通过 rc.local 执行 Bash 脚本

抱歉,我是个新手,但我绝对不是一个熟练的脚本编写者。我创建了一个简单的 bash 脚本,手动执行时运行得很好。此外,如果我手动运行“/etc/rc.local”,它将完全执行该脚本!我的问题是,rc.local 在启动时不会执行整个脚本,我无法确定原因。

脚本如下:

#!/bin/bash

# Retrieve instance ID from metadata
GET http://169.254.169.254/latest/meta-data/local-ipv4 > /metadata

# Replace Hostname in zabbix.conf with instance ID from metadata
sudo sed -i "s/td1wb-b01/$(cat metadata)/g" /etc/zabbix/zabbix_agentd.conf

# Replace Hostname with instance ID from metadata
sudo hostname $(cat metadata)
sudo sed -i "s/web2/$(cat metadata)/g" /etc/sysconfig/network

# Restart the zabbix agent to register
sudo service zabbix-agent restart

exit 0

由于我确实看到 /metadata 文件出现,它似乎开始运行了。但在第一行之后,没有其他任何内容在执行。任何帮助都非常感谢!!

谢谢

答案1

您的脚本调用“sudo”来获取额外权限。Sudo 要求您以交互方式登录,或者调用它的用户最近以交互方式使用过 sudo。删除 sudo 后,只要脚本本身以 root 身份运行,就没问题了。

答案2

您应该删除sudo,因为它rc.local无论如何都是由 root 运行的。

相关内容