rc.local não está executando o comando / sbin / ifconfig

1

código /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*

Estou adicionando regras do iptables, se eu não estiver usando a interface eth0. No entanto, o rc.local não está executando o código dentro do bloco.

No meu init.log, vejo apenas uma mensagem de linha como

rc.local has started successfully

Então, o rc.local acessa os binários dentro da pasta / sbin?

Por que rc.local não está executando a segunda metade do script ...

    
por Madhavan Kumar 09.08.2015 / 19:28

1 resposta

1

O shell é executado com o shebang, #!/bin/sh -e . -e indica que o shell deve sair no primeiro comando que retorna status / erro diferente de zero.

No meu código acima, grep "inet addr" retorna erro, 1 quando não foi possível encontrar nenhuma correspondência. Isso faz com que o rc.local seja lançado.

Para suprimir o erro de retorno de grep , alterei o comando como

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

Realmente difícil de encontrar, mas graças a Gilles e ao outro postar .

    
por 10.08.2015 / 08:29

Tags