---
name: "dnsvi"
section: "1"
platform: "linux"
package: "dnsvi"
version: "1.5"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/dnsvi"
---

# dnsvi(1)

Edit dynamic DNS zones using vi

## NAME

dnsvi - Edit dynamic DNS zones using vi

## SYNOPSIS

**dnsvi** \[**-igl**\] \[**-k** *keyfile*\] \[**-p** *port*\] \[**@***nameserver*\] *zone*

## DESCRIPTION

**dnsvi** is a frontend for **nsupdate**. Given a DNS zone name, it uses **dig -t AXFR** to get all the records in a zone. It then spawns your favorite editor, and upon completion, builds a list of "**update add**" and "**update delete**" statements to feed to nsupdate.

## OPTIONS

- **-i** **--noidnout**

  If you are updating a punycode domain and you are using bind9 \>= 9.14.0, you need to specify **-i** to be able to update the zone, otherwise there will be a mix of punycode and non-punycode domains which nsupdate will refuse.

- **-l**

  Use **localhost** as nameserver and pass **-l** (local) to **nsupdate**.

- **-k** *keyfile*

  Use *keyfile* for **AXFR** and **nsupdate**.

- **-g**

  Use **Kerberos** credentials for **nsupdate**. See **-g** in [**nsupdate**(1)](/nsupdate/1.md) for details.

- **-p** *port*

  Use *port* for **AXFR** and **nsupdate** (default: 53).

- **@***nameserver*

  Query *nameserver* for zone data and send updates there.

## ENVIRONMENT

- **EDITOR**

  Editor to use instead of **sensible-editor**.

## EXAMPLE

```
 $ dnsvi -k dyn.df7cb.de.key @ns.df7cb.de dyn.df7cb.de
 [...vi...]
 nsupdate commands queued:
 server ns.df7cb.de
 zone dyn.df7cb.de
 update delete fermi.dyn.df7cb.de. IN A 127.0.0.1
 update add    lehmann.dyn.df7cb.de. 600 IN A 127.0.0.1
 update add    volta.dyn.df7cb.de. 2419200 IN SSHFP 3 1 DC66C1C5E9ED611FBDF0A9E1F701B1F8C38A6C1D
 send
 answer
 [S]end, [e]dit, send and edit [a]gain, [q]uit: [s]
```

## SEE ALSO

[**dig**(1)](/dig/1.md), [**nsupdate**(1)](/nsupdate/1.md).

## AUTHOR

Christoph Berg \<myon@debian.org\>
