我试图使用以下命令将文件发送到tftp服务器:
tftp -p -l test.txt xx.xx.xx.xx
而tftp的用途是:
busybox v1.13.2(2011-03-24 18:58:44 cdt)多调用二进制文件
用法:tftp[选项]…主机[端口]
将文件从tftp服务器传输到tftp服务器
选项:
-l FILE Local FILE
-r FILE Remote FILE
-g Get file
-p Put file
现在,当我尝试发送文件但出现以下错误时,使用上面的命令:
tftp:服务器错误:(2)访问冲突
但是,如果我在服务器中手动创建test.txt(需要发送的文件名),然后尝试传输到服务器,则它已成功上载。
如何在不手动创建的情况下发送文件?
我正在使用TeTETD服务为TFTP服务器。下面是它的配置文件:
#/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
}
请建议更改以使其在不在服务器中创建文件的情况下工作。
最佳答案
所以这就是我调试问题的方式。
# 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/。
在调试模式下运行XeNETD并没有引起这个问题。
罪魁祸首是
/etc/inetd.conf
中的tftp行,如下链接所述:http://www.beer.org/blog/category/tech-stuff.html
最可能的是当XeNETD作为守护进程运行时,
/etc/inetd.conf
优先于/etc/xinetd.d
目录中的配置文件,这就是为什么当XeNETD作为守护进程运行时会发生这个问题。在
/etc/inetd.conf
中注释TFTP行并重新启动XeETD,并解决了这个问题。关于linux - tftp:服务器错误:(2)访问冲突,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29473511/