34 lines
743 B
Bash
34 lines
743 B
Bash
|
|
#!/bin/bash
|
||
|
|
|
||
|
|
ez() {
|
||
|
|
zone="$1"
|
||
|
|
file="/etc/bind/dyn/$zone.zone"
|
||
|
|
|
||
|
|
if [ -z "$zone" ]; then
|
||
|
|
echo "Usage: edit_zone zone" 2>&1
|
||
|
|
return 1
|
||
|
|
elif [ ! -e "$file" ]; then
|
||
|
|
echo "zone $zone doesnt exist!" 2>&1
|
||
|
|
return 1
|
||
|
|
fi
|
||
|
|
dynamic=0
|
||
|
|
if rndc zonestatus "$zone" | grep -q "dynamic: yes"; then
|
||
|
|
dynamic=1
|
||
|
|
rndc sync -clean "$zone" || return $?
|
||
|
|
rndc freeze "$zone" || return $?
|
||
|
|
echo "zone $zone frozen" 2>&1
|
||
|
|
fi
|
||
|
|
sudoedit "$file"
|
||
|
|
if [ $dynamic = 1 ]; then
|
||
|
|
rndc thaw "$zone" || return $?
|
||
|
|
fi
|
||
|
|
}
|
||
|
|
|
||
|
|
_ez() {
|
||
|
|
if [[ "$COMP_CWORD" -eq 1 ]]; then
|
||
|
|
COMPREPLY=($(cd "/etc/bind/dyn/*.zone" && compgen -f "${COMP_WORDS[1]}"))
|
||
|
|
fi
|
||
|
|
}
|
||
|
|
|
||
|
|
complete -F _ez ez
|