我正在尝试使用以下命令将文件发送到tftp服务器:
tftp -p -l test.txt xx.xx.xx.xx
tftp的用法是:
BusyBox v1.13.2(2011-03-24 18:58:44 CDT)多呼叫二进制文件
用法:tftp [OPTION] ...主机[PORT]
从/向tftp服务器传输文件
选项:
-l FILE Local FILE
-r FILE Remote FILE
-g Get file
-p Put file
现在使用上面的命令,当我尝试发送文件但出现此错误时:
tftp:服务器错误:(2)访问冲突
但是如果我手动在服务器中创建test.txt(需要发送的文件名),然后尝试转移到服务器,它就会成功上传。
如何在不手动创建的情况下发送文件?
我正在为tftp服务器使用xinetd服务。以下是其配置文件:
#/etc/xinetd.d/tftp :
service tftp
{
protocol = udp
port = 69
socket_type = dgram
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = /tftpboot/
disable = no
}
请建议更改以使其无需在服务器中创建文件即可使用。
答案 0 :(得分:2)
所以这就是我调试问题的方法。
# tail /var/log/syslog
上述命令的输出表示tftpd正在提供来自/srv/tftp
的文件,但/srv/tftp
中没有提及/etc/xinetd.d/tftp
。
这篇文章也有助于调试问题:http://toddharris.net/blog/2011/06/19/debugging-xinetd-at-system-launch/。 在调试模式下运行xinetd不会导致此问题。
罪魁祸首是/etc/inetd.conf
中的tftp行,如以下链接所示:
http://www.beer.org/blog/category/tech-stuff.html
最有可能当xinetd作为守护进程运行时,/etc/inetd.conf
优先于/etc/xinetd.d
目录中的配置文件,这就是xinetd作为守护进程运行时出现此问题的原因。
在/etc/inetd.conf
中注释tftp行并重新启动xinetd并解决此问题。