2017-07-17 4 views
0

uci Dokumentation zurückkehren sagt:uci - wie alle unstaged Änderungen

All "uci set", "uci add", "uci rename" und "uci delete" Befehle werden in einem temporären Speicherort inszeniert und geschrieben sofort zu blinken mit "uci commit".

Wenn ich es richtig, müssen Sie zunächst einige Befehle wie die oben erwähnten laufen und die Änderungen machen Sie uci commit laufen in den Konfigurationsdateien geschrieben werden. Zum Beispiel, sagen wir, ich folgende Änderungen ...

[email protected]:~# uci changes 
network.vlan15.ifname='eth1.15' 
network.vlan15.type='bridge' 
network.vlan15.proto='static' 
network.vlan15.netmask='255.255.255.0' 
network.vlan15.ipaddr='192.168.10.0' 

... aber ich will nicht fortsetzen und sich zu verpflichten, sie getan haben. Gibt es eine einfache Möglichkeit, alle gestuften Änderungen rückgängig zu machen und es zu vermeiden, es einzeln zu tun?

Antwort

0

Ich habe keinen uci Befehl gefunden, um alle nicht festgeschriebenen Änderungen rückgängig zu machen, aber Sie können wahrscheinlich die Ausgabe des Befehls uci changes mit Shell-Skripten parsen, um das gewünschte Ergebnis zu erzielen. Hier ist ein Beispiel-Script:

#!/bin/ash 

# uci-revert-all.sh 
# Revert all uncommitted uci changes 

# Iterate over changed settings 
# Each line has the form of an equation, e.g. parameter=value 
for setting in $(uci changes); do 

    # Extract parameter from equation 
    parameter=$(echo ${setting} | grep -o '^\(\w\|[._-]\)\+') 

    # Display a status message 
    echo "Reverting: ${parameter}" 

    # Revert the setting for the given parameter 
    uci revert "${parameter}" 
done 

Eine einfachere Alternative könnte sein, die uci revert <config> Syntax zu verwenden, z.B .:

#!/bin/ash 

# uci-revert-all.sh 
# Revert all uncommitted uci changes 

for config in /etc/config/*; do 
    uci revert $(basename ${config}) 
done 

Beide Ansätze gut für mich auf einem Router läuft LEDE arbeitete 4.

Verwandte Themen