Skip to content

Instantly share code, notes, and snippets.

@niikoo
Last active September 8, 2020 21:38
Show Gist options
  • Save niikoo/5cad6cd5a8ec18b733abcaf267f75fca to your computer and use it in GitHub Desktop.
Save niikoo/5cad6cd5a8ec18b733abcaf267f75fca to your computer and use it in GitHub Desktop.
OpenWRT nvram-clean.sh for Linksys wrt54gl
# OpenWRT nvram-clean.sh for Linksys wrt54gl
#
# Usage: https://openwrt.org/toh/linksys/wrt54g
#
# Source: https://web.archive.org/web/20140326172212/http://downloads.openwrt.org/people/nbd/nvram-clean.sh
# Version: 1.0
empty() {
case "$1" in
"") return 0 ;;
*) return 255 ;;
esac
}
equal() {
case "$1" in
"$2") return 0 ;;
*) return 255 ;;
esac
}
neq() {
case "$1" in
"$2") return 255 ;;
*) return 0 ;;
esac
}
exists() {
( < $1 ) 2>&-
}
nvram_unset() {
nvram unset $1
}
echo -n "Before: "
nvram show > /dev/null
nvram show 2>/dev/null | {
while :; do
UNSET=""
read LINE
empty "$LINE" && exit
CONTENTS="${LINE##*=}"
LINE="${LINE%%=*}"
TYPE="${LINE%%_*}"
case "$TYPE" in
wan0) UNSET=1;;
upnp) UNSET=1;;
forwardspec) UNSET=1;;
log) UNSET=1;;
fullswitch) UNSET=1;;
maskmac) UNSET=1;;
inet) UNSET=1;;
wanup) UNSET=1;;
fon) UNSET=1;;
filter) UNSET=1;;
apwatchdog) UNSET=1;;
routing) UNSET=1;;
wl) UNSET=1;;
svqos) UNSET=1;;
dr) UNSET=1;;
snmpd) UNSET=1;;
port) UNSET=1;;
wshaper) UNSET=1;;
restore) UNSET=1;;
qos) UNSET=1;;
get) UNSET=1;;
bird) UNSET=1;;
wol) UNSET=1;;
expert) UNSET=1;;
ses) UNSET=1;;
radvd) UNSET=1;;
cron) UNSET=1;;
chilli) UNSET=1;;
jffs2) UNSET=1;;
block) UNSET=1;;
remote) UNSET=1;;
pptpd) UNSET=1;;
http) UNSET=1;;
port) UNSET=1;;
QoS) UNSET=1;;
sshd) UNSET=1;;
ipv6) UNSET=1;;
syslogd) UNSET=1;;
tpclient) UNSET=1;;
ezc) UNSET=1;;
is) UNSET=1;;
zebra) UNSET=1;;
ospfd) UNSET=1;;
ntp) UNSET=1;;
mac) UNSET=1;;
ping) UNSET=1;;
dnsmasq) UNSET=1;;
skip) UNSET=1;;
security) UNSET=1;;
daylight) UNSET=1;;
multicast) UNSET=1;;
aol) UNSET=1;;
forward) UNSET=1;;
ct) UNSET=1;;
sel) UNSET=1;;
rc) UNSET=1;;
txpwr) UNSET=1;;
d11g) UNSET=1;;
sv) UNSET=1;;
hs) UNSET=1;;
https) UNSET=1;;
mtu) UNSET=1;;
firmware) UNSET=1;;
autofw) UNSET=1;;
version) UNSET=1;;
tpservers) UNSET=1;;
stats) UNSET=1;;
telnetd) UNSET=1;;
resetbutton) UNSET=1;;
nas) UNSET=1;;
httpsd) UNSET=1;;
def) UNSET=1;;
fw) UNSET=1;;
dhcpd) UNSET=1;;
prange) UNSET=1;;
manual) UNSET=1;;
traceroute) UNSET=1;;
lcp) UNSET=1;;
time) UNSET=1;;
local) UNSET=1;;
wk) UNSET=1;;
action) UNSET=1;;
global) UNSET=1;;
web) UNSET=1;;
txant) UNSET=1;;
rate) UNSET=1;;
timer) UNSET=1;;
NC) UNSET=1;;
sipgate) UNSET=1;;
sh) UNSET=1;;
ip) UNSET=1;;
kaid) UNSET=1;;
sip) UNSET=1;;
need) UNSET=1;;
samba) UNSET=1;;
rflow) UNSET=1;;
dhcpfwd) UNSET=1;;
schedule) UNSET=1;;
max) UNSET=1;;
sys) UNSET=1;;
clean) UNSET=1;;
trunking) UNSET=1;;
language) UNSET=1;;
enable) UNSET=1;;
macupd) UNSET=1;;
trigger) UNSET=1;;
vlans) UNSET=1;;
smtp) UNSET=1;;
status) UNSET=1;;
mmc) UNSET=1;;
esac
TYPE="${TYPE%%[0-9]}"
TYPE="${TYPE%%[0-9]}"
case "$TYPE" in
altdns) UNSET=1;;
esac
TAIL=${LINE##*_}
case "$TAIL" in
static) UNSET=1;;
statics) UNSET=1;;
ospf) UNSET=1;;
if) UNSET=1;;
desc) UNSET=1;;
buf) UNSET=1;;
macmode1) UNSET=1;;
lease) UNSET=1;;
primary) UNSET=1;;
speed) UNSET=1;;
passphrase) UNSET=1;;
pass) UNSET=1;;
dyndnstype) UNSET=1;;
domain) UNSET=1;;
srv) UNSET=1;;
unit) UNSET=1;;
2) UNSET=1;;
route) UNSET=1;;
pppifname) UNSET=1;;
ac) UNSET=1;;
dns0|dns1|dns2) UNSET=1;;
dhcp) UNSET=1;;
wins) UNSET=1;;
ofdm) UNSET=1;;
result) UNSET=1;;
loglevel) UNSET=1;;
default) UNSET=1;;
change) UNSET=1;;
disable) UNSET=1;;
keepalive) UNSET=1;;
accepted) UNSET=1;;
rejected) UNSET=1;;
dropped) UNSET=1;;
server) UNSET=1;;
delay) UNSET=1;;
hwnames) UNSET=1;;
nat) UNSET=1;;
style) UNSET=1;;
encrypt) UNSET=1;;
status) UNSET=1;;
dnsmasq) UNSET=1;;
mac) UNSET=1;;
service) UNSET=1;;
x) UNSET=1;;
t) UNSET=1;;
enable)
case "$TYPE" in
ddns);;
log);;
upnp);;
*) UNSET=1;;
esac
;;
esac
TAIL1="$TAIL"
TAIL="${TAIL%%[0-9]}"
TAIL="${TAIL%%[0-9]}"
case "$TAIL" in
wds) equal "$TAIL" "$TAIL1" || UNSET=1;;
ipaddr|netmask) equal "$TYPE" wl && UNSET=1;;
hwaddr)
TMP=${LINE%[0-9]*}
TMP=${TMP%[0-9]}
equal "$TMP" "wl0_wds" && UNSET=1
;;
esac
case "$LINE" in
pppoe_ver) UNSET=1;;
wl0_lazy_wds) UNSET=1;;
pppoe_static_ip) UNSET=1;;
ppp_static_ip) UNSET=1;;
pptp_get_ip) UNSET=1;;
l2tp_get_ip) UNSET=1;;
wan_get_dns) UNSET=1;;
wan_run_mtu) UNSET=1;;
ddns_wildcard) UNSET=1;;
os_name) UNSET=1;;
esac
case "$CONTENTS" in
11111) UNSET=1;;
0) equal "$TAIL" ipaddr && UNSET=1;;
"") UNSET=1;;
esac
case "${TYPE%%[0-9]*}" in
port) UNSET=1;;
esac
equal "$UNSET" 1 && nvram_unset "$LINE"
done
}
echo -n "After: "
nvram show >/dev/null
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment