1

My system, Ubuntu 16.04, uses NetworkManager. In order to hook an interface up event I have placed a script in /etc/network/if-up.d/. The head of the script looks like:

#!/bin/bash

NETIF="enp2s0"

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

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

iptables -F -t nat
...

Upon system boot, aswell as a manual restart of the network via the applet, the script runs twice. This wouldn't be such a problem, but I am running a few commands which takes some time.

Is there anything I can do to avoid this?

Twifty
  • 141
  • 4

1 Answers1

2

The script is probably being called once for IPv4, and once for IPv6.

Based on running a small script on my machine, these are the variables you have in the environment, below. I should mention this was with network-manager version 1.2.6, on amd64.

You can use $ADDRFAM to test which call is which. The other variables can be useful too:

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
Luke H
  • 136
  • 4