我试图使用以下命令将文件发送到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/

10-13 05:37