Das Problem ist doch eher, dass nur die Zeile eines bestimmten
Interfaces geändert werden soll und nicht alle. Sowas mach ich mit awk:
1 | # awk '/^interface/ {i=$2} /ip_address=/&&i=="tun0" {print"\tstatic ip_address=10.8.8.8/24";next} {print}' dhcp.conf >dhcp.conf.new && mv dhcp.conf.new dhcp.conf
|
In einem Script würde man es etwas übersichtlicher schreiben, z.B. so:
1 | f=dhcp.conf
|
2 | awk -v dev=tun0 -v ip=10.8.8.8/24 '
|
3 | /^interface/ { i=$2 }
|
4 | /ip_address=/ && i==dev { print"\tstatic ip_address="ip; next }
|
5 | { print }
|
6 | ' $f >$f.new && mv $f.new $f
|