在我的 Debian 测试服务器上,当我运行 nsupdate 命令并手动输入详细信息时,一切都正常。例如:
nsupdate -k /etc/bind/update.key
> update add PC1.direct.labo 3600 A 192.168.100.1
> send
> quit
之后,我在我的区域文件中找到了该记录。 像那样
当我尝试使用输入文件时出现了问题,我们将其称为“order.dns”:
update add PC2.direct.labo 3600 A 192.168.100.2
show
send
quit
并执行以下命令:
nsupdate order.dns -k /etc/bind/update.key
然后我得到update failed: REFUSED
我究竟做错了什么?
答案1
nsupdate 使用 BSD 样式的选项解析,其中所有选项必须严格指定前非选项(即位置)参数,如下所示:
nsupdate -k /etc/bind/update.key order.dns
在你的情况下,-k
这是指定的后文件名不被解释为选项,而是与之一起成为另一个位置参数order.dns
(键文件名也是如此)。
如果这是一个接受多个文件的程序,您将收到类似“ File '-k' not found
”的错误消息:
$ uname
NetBSD
$ cat -n test
1 Line one
2 Line two
3 Line three
$ cat test -n
Line one
Line two
Line three
cat: -n: No such file or directory
$
但由于 nsupdate 仅接受一个文件名,因此其他位置参数将被忽略。