GNU/Linux >> Znalost Linux >  >> Linux

Jak čekat na rozhraní eth0 před spuštěním příkazů ip link, ip addr a ip route?

Zde je řešení, se kterým jsem svůj problém nakonec vyřešil:

while ! ip link show eth0 | grep -q 'state UP'; do
    sleep 1
done

ip link add macvlan0 link eth0 type macvlan mode bridge
ip addr add 192.168.0.240/32 dev macvlan0
ip link set macvlan0 up
ip route add 192.168.0.240/28 dev macvlan0

Měl jsem však na svém Synology naplánované 2 „spouštěcí“ úlohy a při spouštění se mi objevovaly nějaké chyby. Abych tento problém vyřešil, nakonfiguruji tento úkol tak, aby byl druhý jako předúkol. Jinými slovy, úkoly prováděné v pořadí, čekající na dokončení předchozího úkolu před zahájením nového.


Zkontrolujte stav eth0 od /sys/class/net/eth0/operstate a počkejte, až bude síťové rozhraní aktivní:

while ! [ "$(cat /sys/class/net/eth0/operstate)" = "up" ] 
do
    echo  "waiting for eth0 to be up"
    sleep 2
done

ip link add macvlan0 link eth0 type macvlan mode bridge
ip addr add 192.168.0.240/32 dev macvlan0
ip link set macvlan0 up
ip route add 192.168.0.240/28 dev macvlan0

Linux
  1. jak používat cURL na konkrétním rozhraní

  2. Jak nastavit cestu pro příkazy sudo

  3. Jak zjistit, jaké rozhraní používám pro připojení k internetu?

  1. Jak používám Ansible a anacron pro automatizaci

  2. Jak zakázat příkazy vypnutí a restartu v Linuxu

  3. Najít rozhraní pro cestu ke konkrétnímu hostiteli

  1. Jak vytvořit pevné a symbolické odkazy v Linuxu

  2. Spouštění příkazů Linuxu na pozadí a v popředí

  3. Jak udělat alias pro dlouhou cestu?