NetworkManager запускает скрипты дважды

Моя система, Ubuntu 16.04, использует NetworkManager . Чтобы связать событие подключения интерфейса, я разместил сценарий в /etc/network/if-up.d/ . Заголовок сценария выглядит так:

#!/bin/bash

NETIF="enp2s0"

if [ "$IFACE" != $NETIF ]; then
  exit 0
fi

/some/cmd/output &>> /var/log/if-up.log

iptables -F -t nat
...

При загрузке системы, а также при ручном перезапуске сети через апплет сценарий запускается дважды. Это не было бы такой проблемой, но я выполняю несколько команд, что требует времени.

Что я могу сделать, чтобы этого избежать?

1
задан 16 March 2017 в 02:49
1 ответ

Сценарий, вероятно, вызывается один раз для IPv4 и один раз для IPv6.

На основе при запуске небольшого скрипта на моем компьютере, это переменные, которые у вас есть в среде ниже. Я должен упомянуть, что это было с сетевым менеджером версии 1.2.6 на amd64.

Вы можете использовать $ ADDRFAM , чтобы проверить, какой вызов является каким. Другие переменные также могут быть полезны:

ADDRFAM=inet6 # "inet" if ipv4
CONNECTION_FILENAME=/etc/NetworkManager/system-connections/WIFI_CONN
CONNECTION_UUID=b9464eff-3c0c-4035-1f65-9ac8ccda824f
DEVICE_IFACE=wlo1
DEVICE_IP_IFACE=wlo1
DHCP4_BROADCAST_ADDRESS=192.168.1.255
DHCP4_DHCP_MESSAGE_TYPE=5
DHCP4_DHCP_SERVER_IDENTIFIER=192.168.1.1
DHCP4_EXPIRY=1503257834
DHCP4_NETWORK_NUMBER=192.168.1.0
DHCP4_NEXT_SERVER=0.0.0.0
DHCP4_NTP_SERVERS=omitted
DHCP4_REQUESTED_DOMAIN_NAME=1
DHCP4_REQUESTED_DOMAIN_NAME_SERVERS=1
DHCP4_REQUESTED_HOST_NAME=1
DHCP4_REQUESTED_MS_CLASSLESS_STATIC_ROUTES=1
DHCP4_REQUESTED_NETBIOS_SCOPE=1
DHCP4_REQUESTED_RFC3442_CLASSLESS_STATIC_ROUTES=1
DHCP4_REQUESTED_ROUTERS=1
DHCP4_REQUESTED_STATIC_ROUTES=1
DHCP4_REQUESTED_SUBNET_MASK=1
DHCP4_REQUESTED_WPAD=1
DHCP4_TIME_OFFSET=3600
IP4_ADDRESS_0=192.168.1.37/24 192.168.1.1
IP4_NAMESERVERS=208.67.222.222
IP4_NUM_ADDRESSES=1
IP6_GATEWAY=::
IP6_NUM_ADDRESSES=1
MODE=start
PHASE=post-up
VERBOSITY=0
2
ответ дан 3 December 2019 в 20:26

Теги

Похожие вопросы