Systemd networking.service retorna “(code = exited, status = 1 / FAILURE)” no código ExecStartPre

0

Olhando para o 'status' do networking.service no Ubuntu 16.04.4 ele mostra que "ExecStartPre" falha:

● networking.service - Raise network interfaces
Loaded: loaded (/lib/systemd/system/networking.service; enabled; vendor preset: enabled)

Drop-In: /run/systemd/generator/networking.service.d
       └─50-insserv.conf-$network.conf

Active: active (exited) since Tue 2018-04-10 00:47:02 EDT; 11h ago

Docs: man:interfaces(5)

Process: 735 ExecStart=/sbin/ifup -a --read-environment (code=exited, 
       status=0/SUCCESS)

Process: 731 ExecStartPre=/bin/sh -c [ "$CONFIGURE_INTERFACES" != "no" ] 
       && [ -n "$(ifquery --read-environment --list --exclude=lo)" ] 
       && udevadm settle (code=exited, status=1/FAILURE)

Main PID: 735 (code=exited, status=0/SUCCESS)

CGroup: /system.slice/networking.service

O problema em questão está na falha do código:

 Process: 731 ExecStartPre=/bin/sh -c [ "$CONFIGURE_INTERFACES" != "no" ] 
       && [ -n "$(ifquery --read-environment --list --exclude=lo)" ] 
       && udevadm settle (code=exited, status=1/FAILURE)

Após investigar como o script networking.services está configurado, descobri que ele usa um arquivo para definir o ambiente para "$ CONFIGURE_INTERFACES" em EnvironmentFile = - / etc / default / networking:

# Configuration for networking init script being run during
# the boot sequence

# Set to 'no' to skip interfaces configuration on boot
#CONFIGURE_INTERFACES=yes

No entanto, isso está desativado (comentado) e, em seguida, executando o comando do script manualmente:

 $ sh -c [ "$CONFIGURE_INTERFACES" != "no" ] && [ -n "$(ifquery --read-environment --list --exclude=lo)" ]

Produz a saída:

: 1: [: ausente]

Eu também obtenho o mesmo resultado se definir o ambiente como "yes" com

 export CONFIGURE_INTERFACES=yes

sim: 1: [: ausente]

Não sei exatamente o que o resultado dessa linha de código deve produzir exatamente para ter uma execução bem-sucedida. Agradecemos antecipadamente a qualquer um que responda como corrigir isso, ou se é algo que pode ser ignorado.

    
por cryptoboy 10.04.2018 / 22:43

1 resposta

1

Para mais detalhes sobre o (code=exited, status=1/FAILURE) status do ExecStartPre= de networking.service, consulte o link .

Para o registro, isto foi arquivado com o Debian no link e eu os enviei um patch para consertá-lo, então ele pode acabar indo até o Ubuntu e eventualmente ser consertado: -)

Em relação aos seus testes tentando emular o comando, você precisa de aspas simples (mesmo que a saída do systemd não mostre elas lá).

Isso seria correto:

sh -c '[ "$CONFIGURE_INTERFACES" != "no" ] && [ -n "$(ifquery --read-environment --list --exclude=lo)" ]'

Você também pode ver o conteúdo do arquivo /lib/systemd/system/networking.service em seu sistema ou também a saída do comando systemctl cat networking.service para o comando exato ExecStartPre= em uso por essa unidade.

    
por Filipe Brandenburger 18.04.2018 / 05:01