以下のコマンドを使用して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サーバーとの間でファイルを転送する
オプション:-lFILEローカルFILE-rFILEリモートFILE-gファイルの取得-pファイルの配置
上記のコマンドでファイルを送信しようとすると、次のエラーが発生しました:tftp: server error: (2) Access violation....
しかし、サーバーで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}
これが私が問題をデバッグした方法です。
# 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を再起動すると、この問題が修正されました。