Existe uma maneira de ver os comandos que seriam executados com base nas sub-rotinas / etc / network / interfaces?

1

As sub-rotinas em /etc/network/interfaces traduzem-se em determinados comandos para ativar ou desativar uma interface e configurá-la.

Existe uma maneira de ver quais comandos ele traduz (semelhante a set -x em um script Bash) durante o tempo de execução ou, melhor ainda, sem realmente invocar os respectivos comandos.

Eu sei que a maneira como isso se traduz em comandos difere nas versões do Ubuntu (e também do Debian). Por isso, seria interessante descobrir para fins educacionais, pura curiosidade e, claro, ter esses comandos à mão quando você precisar / quiser invocá-los manualmente.

    
por 0xC0000022L 05.05.2014 / 22:59

1 resposta

2

Hah, descobriu como fazer isso. Eu não tenho certeza se isso funcionará igualmente em versões mais antigas do Ubuntu (eu estou rodando 14.04), mas aqui está como eu pude ver os comandos usando ifup(8) :

ifup -anv

que nas opções de linha de comando longa é mais legível como:

ifup --all --no-act --verbose

Isso deve ler seu /etc/network/interfaces e mostrar o que está acontecendo.

No entanto, obtive um resultado mais completo executando:

ifup -nv --force $(ifquery -l)

Como consegui executar isso a partir de uma conta de usuário sem privilégios, estou certo de que isso não tenta nenhuma ação estranha, por isso não se deixe enganar pela opção --force .

Se você quiser testar com outro arquivo interfaces , supondo que você tenha o caminho desse arquivo em uma variável de ambiente ENIFACES , isso deve funcionar:

ifup -nv --force -i "$ENIFACES" $(ifquery -l -i "$ENIFACES")

Veja um exemplo interfaces :

$ cat testif

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 192.168.16.33
        netmask 255.255.255.0
        gateway 192.168.16.254
        dns-domain mydomain.net
        dns-nameservers 8.8.8.8
        dns-search mydomain.net sub.mydomain.net myotherdomain.com

auto _br1
iface _br1 inet static
        address 10.1.0.0
        netmask 255.255.0.0
        pre-up brctl addbr $IFACE
        post-up route add -host 192.168.16.1 $IFACE
        post-down brctl delbr $IFACE

auto _br2
iface _br2 inet static
        address 10.1.0.0
        netmask 255.255.0.0
        pre-up brctl addbr $IFACE
        post-up route add -host 192.168.16.2 $IFACE
        post-down brctl delbr $IFACE

iface eth0 inet6 static
        address 2000:dead:beef:4::1234:5678
        gateway 2000:dead:beef:0::1
        netmask 64

... e a saída produzida:

Configuring interface lo=lo (inet)
run-parts --verbose /etc/network/if-pre-up.d
run-parts --verbose /etc/network/if-up.d
Configuring interface lo=lo (inet)
run-parts --verbose /etc/network/if-pre-up.d
run-parts --verbose /etc/network/if-up.d
Configuring interface eth0=eth0 (inet)
run-parts --verbose /etc/network/if-pre-up.d
ip addr add 192.168.16.33/255.255.255.0 broadcast 192.168.16.255          dev eth0 label eth0
ip link set dev eth0   up
 ip route add default via 192.168.16.254  dev eth0
run-parts --verbose /etc/network/if-up.d
Configuring interface eth0=eth0 (inet6)
run-parts --verbose /etc/network/if-pre-up.d
modprobe -q net-pf-10 > /dev/null 2>&1 || true # ignore failure.


sysctl -q -e -w net.ipv6.conf.eth0.autoconf=0
ip link set dev eth0   up
ip -6 addr add 2000:dead:beef:4::1234:5678/64  dev eth0
 ip -6 route add default via 2000:dead:beef:0::1 dev eth0
/lib/ifupdown/settle-dad.sh
run-parts --verbose /etc/network/if-up.d
Configuring interface _br1=_br1 (inet)
brctl addbr $IFACE
run-parts --verbose /etc/network/if-pre-up.d
ip addr add 10.1.0.0/255.255.0.0 broadcast 10.1.255.255           dev _br1 label _br1
ip link set dev _br1   up

route add -host 192.168.16.1 $IFACE
run-parts --verbose /etc/network/if-up.d
Configuring interface _br2=_br2 (inet)
brctl addbr $IFACE
run-parts --verbose /etc/network/if-pre-up.d
ip addr add 10.1.0.0/255.255.0.0 broadcast 10.1.255.255           dev _br2 label _br2
ip link set dev _br2   up

route add -host 192.168.16.2 $IFACE
run-parts --verbose /etc/network/if-up.d
    
por 0xC0000022L 07.05.2014 / 00:56