我正在尝试使用以下命令将文件发送到 TFTP 服务器:
tftp -p -l test.txt xx.xx.xx.xx
TFTP 用法如下:
BusyBox v1.13.2 (2011-03-24 18:58:44 CDT) 多调用二进制
用法:tftp [选项]...主机 [端口]
从/向 tftp 服务器传输文件
选项:-l 文件本地文件 -r 文件远程文件 -g 获取文件 -p 放置文件
当我尝试使用上述命令发送文件时,收到此错误:tftp: server error: (2) Access violation....
但是如果我手动在服务器中创建 test.txt(我需要发送的文件名),然后尝试传输到服务器,它就会成功上传。
如何在不手动创建的情况下发送文件?
我正在使用 xinetd 服务作为 tftp 服务器,下面是它的配置文件。
/etc/xinetd.d/tftp:服务 tftp {协议 = udp 端口 = 69 套接字类型 = dgram 等待 = 是 用户 = root 服务器 = /usr/sbin/in.tftpd 服务器参数 = /tftpboot/ 禁用 = 否}
答案1
这就是我调试该问题的方法。
# 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 不会导致该问题。
罪魁祸首是 tftp 线路,/etc/inetd.conf
如以下链接中所述:
http://www.beer.org/blog/category/tech-stuff.html
最有可能的是,当 xinetd 作为守护进程运行时,它/etc/inetd.conf
优先于/etc/xinetd.d
目录中的配置文件,这就是为什么当 xinetd 作为守护进程运行时会出现此问题的原因。
注释掉 tftp 行/etc/inetd.conf
并重新启动 xinetd,即可解决此问题。