• 締切済み

FTPのエラーメッセージで質問です。

FTPでエラーメッセージについて質問です。 UNIX上でFTPコマンドを発行するのですが、 open localhost user aaa bbb でログインした後、以下の2つのコマンドを発行します。 sssというディレクトリはありません。 lcd sss cd sss ftp> lcd sss sss: ファイルもディレクトリもありません。 ftp> cd sss 550 sss: No such file or directory. となり、英語と日本語が混在してしまいます。 シェルでは、エラーメッセージの一部をgrepして トラップさせているのですが、日本語もあるためうまくいきません。 そこで、export LANG=ja_JP.UTF-8 だったのを export LANG=C に変えたところ ftp> lcd sss sss: No such file or directory ftp> cd sss 550 sss: No such file or directory. となり英語になりました。 そこで質問です。 (1)LANG=UTF8にしてる時、cd sss は何故lcd sssのエラーと異なり  英語なのでしょうか。 (2)cd sssは550のコードを返すのに何故 lcd sssはコードを  かえさないのでしょうか。 ご教示ください。

みんなの回答

  • marklet
  • ベストアンサー率21% (4/19)
回答No.3

HTTPでも404 File not found と返したり、404 NOT FOUND と返したり、サーバに依りますよね?FTPでも文言は一意ではありません。 判定方法ですが、3桁のコードはRFCで規格化されています( http://jbpe.tripod.com/rfcj/rfc-959.ej.sjis.txt /35ページ以降)ので、このコードを使ってはどうでしょうか? 例えば、cdコマンドが成功した場合には、250 CWD command successful のような数字+メッセージが表示されると思います。 200番台なら肯定的な完了コード、500番台はサーバ側エラーコードです。

-Rena-
質問者

補足

ありがとうございます。 結局レスポンスコードをとって対応するようにしたのですが PUT、GET文の成功時は226番が返ってきます。 226番がGREPできない時はエラーとするように修正したのですが コマンドの中で「LS ファイル名」も発行しており、これも成功すると226番が返ってきます。 PUTは失敗したけど、LSコマンドが成功するとやはり226番がかえるので この時が問題になってしまいます。 226のカウントをとったりする方法しかないでしょうか。 今はそれはレアなケースなので対応しなくてもいいかなと思ってもいます。

  • marklet
  • ベストアンサー率21% (4/19)
回答No.2

550というエラーコードは、FTPクライアントとサーバ間での取り決めです。ローカル側のファイル操作に対しては、サーバと通信しません。 http://jbpe.tripod.com/rfcj/rfc-959.ej.sjis.txt FTPクライアントで cd というコマンドを打つと、CWDコマンドに翻訳されてFTPサーバに通信し、その結果がサーバから返されると思います。 lcd コマンドに対するメッセージは、ftpのバイナリファイルに組み込まれたものだと思います。( strings /usr/bin/ftp )

-Rena-
質問者

お礼

ありがとうございます。 通信するコマンドとそうでないので、異なるということですね。 言語が同じならばエラーメッセージは同じになるけど FTPサーバを返せば、コードが頭についてくる 所が 違うのですね。 納得しました。 また、下記の補足に便乗ですが、質問をしましたので 宜しければご教示下さい。

noname#43437
noname#43437
回答No.1

lcdはローカル側のディレクトリ変更です。 ローカルのOS上でディレクトリ変更のシステムコールが実行され、 OSからはLANGで指定されたロケールの言語でエラーメッセージが返されます。 要するに、シェル上で   cd sss とやったのとまったく同じことです。 またこれはFTPプロトコルを介しません。 cdはサーバ側のディレクトリ変更です。 システムコールはサーバ側のOSで実行され、 そのOS上のロケールでエラーメッセージが返され、それを FTPサーバーがクライアントに伝えてきます。したがって、 サーバ側のロケールのメッセージとなります。 要するに、このメッセージは、サーバ側のシェルで   cd sss とやったときと同じです。クライアント側のLANGの影響は一切受けません。 またこれはFTPプロトコルを介すので、 プロトコル上のエラーコード550がつきます。(これをエラーコードごと表示するかどうかはFTPクライアント次第)

-Rena-
質問者

補足

皆様ありがとうございます。納得です。 FTPコマンド内にlcdやls がある場合はFTP通信に関係 ないのでローカルの言語に依存する と理解していいでしょうか? これとは別で、FTP通信によって発生したエラーメッセージ が日本語だったり、英語だったりするのは、相手側のFTPデーモン の言語によって変わると理解してよいでしょうか? また別なのですがエラートラップを文字列のgrepによってやってるのですが(FTP結果に対しgrep -i "Unknown host" 等) 日本語で帰ってきた場合スルーしてしまいます。(全てのエラーにひっかからなくなった場合、正常終了する仕様) 正常以外はなにかのエラーとして最後にトラップをつけたいのですが 日本語でも英語でもうまくいくやり方はないでしょうか。

関連するQ&A

  • 【ftp】lsで表示されているファイルをgetしたがエラーとなった。

    はじめましてよろしくお願いします。 lsで表示されるファイルをgetしようとして、 ファイルが無いといったエラーが出てダウンロードできません。 ファイル容量が10MB近くあるのが原因かなーとか思ったのですが、どうなんでしょうか?? ちなみに、同じディレクトリにある別ファイル(容量5kbくらい)は正常にダウンロードできました。 具体的には以下です。 -------------- ftp> get 1.log 200 PORT command successful. 550 1.log: No such file or directory. ftp> --------------

  • FTP接続で550エラー発生

    FTP接続で550エラー発生しました。 原因なるものが全く分からず、探しています。 お力をお貸しください。 [現状] ホストには接続できます。 ・使用ツールはFFFTP ・PASVモード ・LISTコマンドでファイル一覧取得にチェック入り ファイル一覧の取得は正常に終了。 ルート直下のディレクトリ(wp)に移動する際に >CWD wp 550 wp: No such file or directory とエラーメッセージが出ます。 wpディレクトリはwordpressで、ブラウザからアクセスできます。 [エラーが発生した経緯] サーバー管理者ではないので詳しい設定はわかりませんが、 wordpress設置直後はwpディレクトリ以下にアクセスできました。 wpディレクトリ以下のパーミッション設定を変更(恐らく707) それからタイトルのエラーが発生いたしました。 よろしくお願いします。

  • FTPコマンドのputについて

    AIX、Kシェルです。 ftpでputする際、相対パスは使用出来ないのでしょうか? ex) ftp -nv open HostName user User Password cd tmp/testwork/ put ../file/xxxx.txt quit 上記で実行すると、 putのところで 「200 EPRT command successful. 553 ../file/xxxx.txt: No such file or directory」 というメッセージが出ます。 lcdで作業ディレクトリーを../fileに変更して、put xxxx.txt は出来るのですが、putで相対パスは出来ないのでしょうか? お手数ですが、何卒宜しくお願い致します。

  • rpm コマンドでエラーが…

    お世話になります。 少し古いノートPCを貸してもらい、Linux7.2を動かしています。 カーネルが2.4.7-10ということもあり、新しくしようとパッケージをダウンロードしました。 そしていざrpmコマンドを打ちました。すると、 # rpm -ivh *.rpm error: db3 error(2) from dbenv->open: No such file or directory error: cannot open Packages index using db3 - No such file or directory (2) error: cannot open Packages database in /var/lib/rpm というメッセージが出ました。 カーネルが相手だからかなと思い、テストとして、 # rpm -q perl と打つと error: db3 error(2) from dbenv->open: No such file or directory error: cannot open Packages index using db3 - No such file or directory (2) というメッセージが返ってきました。 これって何が原因なのでしょうか? すいませんが回答よろしくお願いします。 足りない情報があれば随時補足します。

  • FTPからシンボリックリンクを参照できない

    USBのハードディスクをFTPからシンボリックリンクで参照したいのでが うまくできません。 ln -s /mnt/sda1/hoge/ hoge 相対パス ln -s ../../mnt/sda1/hoge/ でも駄目でした。 cd hogeで コマンドラインからは問題なくいけるのですが ftpからそのリンクをたどろうとすると /home/ftp/ルートに設定してありhogeは見えるのですが たどろうとすると 550 hoge: No such file or directory. とでます。 同一のデバイスからだと問題なくFTPからたどれます。 デバイス:/dev/sda1 マウントポジション:/mnt/sda1/hoge/ OS:RH7.3 FTPデーモン:wuftpd クライアント:ffftp1.92

  • シェルでftp接続によるファイル取得について

    以下のようなシェルスクリプトを作成しましたが、 (file-name) get: No such file or directory (file-name) done: No such file or directory のエラーメッセージが出てしまい、うまくいきません。 OSはLinux(FedoraCore4)です。 どうやらファイル名の取得がうまくいかず、エラーになっている 様です。 試しに直接ファイル名を指定して書くと、無事ファイルを 取得できます。 エラーの原因がお分かりになる方、どうぞ宜しくお願い致します。 ----------------------------------------------- #!/bin/sh cd /local_test/log/ ftp -n xxx.xxx.xxx.xxx<< _EOF user test_user test_pass cd /test/log/ ascii prompt for i in *.log do chmod u+r $i get $i chmod u-r $i done bye _EOF exit 0 -----------------------------------------------

  • tracについて

    自宅サーバCentOSでtracを構築しました。構築まではうまくできたのですが、プロジェクト一覧ってページで下記のようなエラーがたくさんでました。これを解決するにはどのようにしたらいいでしょうか? ご存知の方いたら教えてください。 http://IPアドレス/trac/sampleのページは問題なく開きますが、 http://IPアドレス/trac/ のアドレスだと下記のエラーがでます。 回答よろしくお願いします。 admin: Error ([Errno 2] No such file or directory: '/var/www/trac/admin/VERSION') db: Error ([Errno 2] No such file or directory: '/var/www/trac/db/VERSION') htdocs: Error ([Errno 2] No such file or directory: '/var/www/trac/htdocs/VERSION') locale: Error ([Errno 2] No such file or directory: '/var/www/trac/locale/VERSION') mimeview: Error ([Errno 2] No such file or directory: '/var/www/trac/mimeview/VERSION') prefs: Error ([Errno 2] No such file or directory: '/var/www/trac/prefs/VERSION') search: Error ([Errno 2] No such file or directory: '/var/www/trac/search/VERSION') templates: Error ([Errno 2] No such file or directory: '/var/www/trac/templates/VERSION') tests: Error ([Errno 2] No such file or directory: '/var/www/trac/tests/VERSION') ticket: Error ([Errno 2] No such file or directory: '/var/www/trac/ticket/VERSION') timeline: Error ([Errno 2] No such file or directory: '/var/www/trac/timeline/VERSION') upgrades: Error ([Errno 2] No such file or directory: '/var/www/trac/upgrades/VERSION') util: Error ([Errno 2] No such file or directory: '/var/www/trac/util/VERSION') versioncontrol: Error ([Errno 2] No such file or directory: '/var/www/trac/versioncontrol/VERSION') web: Error ([Errno 2] No such file or directory: '/var/www/trac/web/VERSION') wiki: Error ([Errno 2] No such file or directory: '/var/www/trac/wiki/VERSION')

  • sambaをアクティブディレクトリーに登録できません。

    sambaをアクティブディレクトリーに登録できません。 sambaを使ったサーバを既存のアクティブディレクトリに参加させたいのですが、 net ads join -d 10 -U Administrator でデバッグモードで投入しても、 Could not open LDAP connection to ********:389: No such file or directory [2010/08/30 16:29:50, 1] utils/net_ads.c:net_ads_join(1478) error on ads_startup: Operations error [2010/08/30 16:29:50, 10] intl/lang_tdb.c:lang_tdb_init(138) lang_tdb_init: /usr/lib/samba/ja_JP.UTF-8.msg: No such file or directory Failed to join domain: Operations error [2010/08/30 16:29:50, 2] utils/net.c:main(1075) return code = -1 というようなエラーが出てしまいます。 OSは、CentOS5.5 を使ってます。

  • cygwinをインストールしたところエラーメッセージがでてきてしまいました。

    こんなメッセージです。 mkdir: cannot create directory `': No such file or directory Copying skeleton files. These files are for the user to personalise their cygwin experience. These will never be overwritten. `./.bashrc' -> `//.bashrc' /usr/bin/install: cannot create regular file `//.bashrc': No such file or direct ory `./.bash_profile' -> `//.bash_profile' /usr/bin/install: cannot create regular file `//.bash_profile': No such file or directory `./.inputrc' -> `//.inputrc' /usr/bin/install: cannot create regular file `//.inputrc': No such file or direc tory 問題なく使える?みたいですけどどうすれば直るでしょうか?ちなみに一度インストールしたところgcc: command not foundとでてコンパイラができなかったので参考書についていたcygwinをインストールしたところこのメッセージがでてきてしまいました。(コンパイラはできるようになりました。)

  • FFFTPで「コマンドが受け付けられません.」のエラーがでました。

    >STOR /public_html/・・・・・・ 550 /public_html/・・・・・: No such file or directory コマンドが受け付けられません. アップロードを中止しました. と表示されました。 いつもと同じように、作業をしているはずなのですが。 教えてください。