OpenWRT - Restart Interface via UCI Commandline [solved]

Sorry wenn ich hier zu OpenWRT frage, aber ich denke ich frage hier auch die richtigen.

Ich möchte gern per Commandline ein Interface neu starten.

Und zwar „nur“ die IPv4 WAN-Schnittstelle. Also so als würde ich über die WebGUI von OpenWRT beim Interface „Restart“ drücken. Also im Prinzip nur ein Restart des DHCP-Clients.

Die IPv6-WAN-Schnittstelle (am gleichen Interface) soll ungerührt bleiben. Ebenso alle anderen Interfaces.

…/network restart und ifconfig müßte damit außen vor sein und ich denke die Lösung liegt irgendwo bei UCI.

Interessant ist die Frage in jedem Fall. Ich habe da einen OpenWRT-Router, der das auch gut gebrauchen könnte.

Hintergrund:
Der bekommt nicht mit, wenn sein vorgelagerter DOCSIS-TR69-Router neu startet und dann keinen Traffic mehr für ihn abwickeln mag. Derzeit habe ich ein script, welches feststellt, wenn das Gateway pingbar ist, aber nicht darüber hinausgeht, dann rebootet der OpenWRT-Router.
(NB: Es ist nicht hardwarespezifisch oder Kernel-Spezifisch. Ich habe bereits von LEDE auf OpenWRT gewechselt und von WR4900 auf Futro.)

Habe es jetzt hinbekommen. War viel einfacher als gedacht.

ifdown/ifup wan reicht völlig. Da kann man das logische Device angeben und nicht das physikalische.

Also ifup/ifdown wan bezieht sich dann nur auf v4 und ifup/ifdown wan6 nur auf das logische ipv6 Device.

Nachtrag: Nicht sicher, aber es scheint so als hätte bird4 ein Problem das Up/Down (bei v4) mitzubekommen. bird6 im Gegenzug hat kein Problem und ändert die Routen. Evt. liegt aber auch an meinem Setup, ich probiere noch viel. Kann das evt. jemand reproduzieren?

1 „Gefällt mir“

@adorfer übrigens auch genau mein Gedanke. Könntest du bitte die Logik deines Script nochmal erläutern. Also wenn er das Gateway bekommt aber nichts externen rebootet er? Bei meinem „rebootet“ er wenn er das Gateway nicht mehr erreicht. Warum machst du das so?

Und noch ein Nachtrag, falls es sich bei deinem Gateway zufällig um eine Fritzbox handelt, ich hab da noch irgendwo ein Bash-Script mit curl Magie das eine Fritzbox remote rebooten kann. Damit kann das OpenWRT die vorgelagerte Fritzbox neu starten falls es Probleme bemerkt.

Gesucht und gefunden. Braucht bestimmt jemand. Muss mich korrigieren, war leider ein PHP-Script, aber kann man sicher auch auf curl umbauen. (Würde mich freuen!) Dazu muss auf der Fritzbox UPNP an sein sowie die Benutzerverwaltung aus. Also nur „Anmeldung mit Passwort“ ohne Nutzernamen.

<?php

# Zusammengefummelt aus:
#  https://www.symcon.de/forum/threads/25745-FritzBox-mit-SOAP-auslesen-und-steuern
#  http://<fritzip>:49000/deviceconfigSCPD.xml
#  http://www.bitmania.de/index.php?page=194

# Fritzbox UPNP muss an sein
# Fritzbox Login mit Passwort ohne Benutzernamen aktiv
# apt-get install php-soap

$client = new SoapClient(
    null,
    array(
        'location'   => "http://<FRITZBOXIP>:49000/upnp/control/deviceconfig",
        'uri'        => "urn:dslforum-org:service:DeviceConfig:1",
        'noroot'     => True,
        'login'      => "root",
        'password'   => '<PASSWD>'
    )
);
$client->Reboot();

?>
1 „Gefällt mir“

Hier leider nicht, das ist das absurde… ich habe schlicht noch nicht rausbekommen woran es liegt. Weder die ausgaben von „ip r s t“, noch flushen der arp-tabellen brachten bisher Erfolg.

Hier: OpenWrt 18.06.2

Konnte es mittels ‚ps‘ nachvollziehen. dhcpclient wird gestoppt/neu gestartet.

root@lab:~# ps|grep udhcp
13038 root      3092 R    grep udhcp
27551 root      3084 S    udhcpc -p /var/run/udhcpc-eth0.pid -s /lib/netifd/dhcp.script -f -t 0 -i eth0 -x hostname:<HIDDEN> -C -O 121

root@lab:~# ifdown wan
root@lab:~# ps|grep udhcp
13133 root      3092 R    grep udhcp

root@lab:~# ifup wan
root@lab:~# ps|grep udhcp
13187 root      3084 S    udhcpc -p /var/run/udhcpc-eth0.pid -s /lib/netifd/dhcp.script -f -t 0 -i eth0 -x hostname:<HIDDEN> -C -O 121
13267 root      3092 R    grep udhcp