rc.local 未运行 /sbin/ifconfig 命令

rc.local 未运行 /sbin/ifconfig 命令

/etc/rc.local代码,

echo "rc.local has started successfully" > /home/sk/tmp/init.log

isEthConfigured=$(ifconfig eth0 | grep "inet addr")
echo "rc.local has run ifconfig command well, with result - $isEthConfigured" >> /home/sk/tmp/init.log

if [[ -z "${isEthConfigured// }" ]];then
  echo "changing the iptables stuff" >> /home/sk/tmp/init.log
  sudo iptables -A OUTPUT -d 10.199.48.0/24 -j REJECT
fi

echo "rc.local has completed successfully" >> /home/sk/tmp/init.log
exit 0*

如果我不使用 eth0 接口,我将添加 iptables 规则。但是,rc.local 并未运行 if 块内的代码。

在我的 init.log 中,我只看到一行消息,

rc.local has started successfully

那么,rc.local 是否可以访问 /sbin 文件夹中的二进制文件?

为什么 rc.local不运行脚本的后半部分..

答案1

shell 使用 shebang 运行#!/bin/sh -e-e表示 shell 必须在第一个返回非零状态/错误的命令处退出。

在我上面的代码中,grep "inet addr"当找不到任何匹配项时,返回错误 1。这会导致 rc.local 出来。

为了抑制grep返回错误,我将命令更改为,

isEthConfigured=$(ifconfig eth0 | grep "inet addr"  || :)

真的很难找到,但感谢吉尔斯和其他人邮政

相关内容