『銀魂2 掟は破るためにこそある』がいよいよ公開!>>

いつも困った時は利用させて頂いております。
今回もよろしくお願いします。

CentOSにVsftpdをインストールして、コマンドプロンプトでFTP接続したのですが、
lsコマンド実行後、ファイルやディレクトリ名が文字化けしてしまって困っています。
pwdコマンドは、普通に表示されます。

Linuxの勉強の為、ノートパソコンにVMwarePlayerをインストールして、
CentOS6.5で色々試していました。
Vsftpdをインストールして、FTP接続できたのですが、文字化けしていました。
コマンドプロンプトで文字コードを変更したり、CentOSのi18nを変更したりと、
試しているのですが、直りません。

今もネットで調べつつ試行錯誤を繰り返していますが、
なかなか改善しませんので、質問させていただきました。

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

>経緯を以下に載せます。



Linux上で作成した日本語ファイル名が、Windowsの標準のftp.exeで文字化けするということでしょうか。
試してみましたが、私の所では、chcp 65001 で表示できています。
chcp 65001 したときとしないときで、表示されるものが変わる場合は、コマンドプロンプトのウィンドウがUnicodeのフォントになっていないのでは?MS ゴシックとかになっていますか?
1.コマンドプロンプトを起動して、その状態でプロパティでフォントをMSゴシックに
2.chcp 65001
3.ftp して ls
4.コマンドプロンプトに戻ったら、jp でシフトJISに戻る
    • good
    • 1
この回答へのお礼

notnotさん
回答をありがとうございます。

教えて頂いた通り実施してみまして、
初めは失敗しましたが、PC再起動後、
無事に表示されました。

ありがとうございました。

お礼日時:2014/08/10 09:02

質問文からは、何をどうしてどうなったが不明です。



手順を追って、他人が操作をトレースできるように、具体的に書いてみてください。
    • good
    • 0
この回答へのお礼

notnotさん
回答をありがとうございます。

質問内容がわかりづらく申し訳ございません。

経緯を以下に載せます。

1.「VMware Player6.0.3」をそのままインストール
2.特に変更をせず仮想マシンを作成
3.「CentOS6.5」を仮想マシンに日本語でインストール
 ※「CentOS-6.5-i386-bin-DVD1.iso」
4.インストール完了後、ネットワーク設定
5.ssh設定、telnet-serverを設定。TeraTermで両方、接続できました。

----------ここからFTPです----------------------------
6.vsftpdインストール、設定。
7.コマンドプロンプトでFTP接続、ログインできました。
8.「pwd」は正常に表示される。
9.ホームディレクトリで「ls」コマンド実行、文字化け。
10.「/」へ移動後、「ls」コマンド実行、正常に表示。
  英語表示は正常でしたが、日本語表示が文字化けしてました。
11.TeraTermで接続して「i18n」ファイルの中身を、
 「LANG="ja_JP.UTF-8"」に変更して、サーバ再起動。
 ※ネットで見たのですが、サーバ再起動後、ログインする
  と何かウィンドが表示されるそうですが、何もありませんでした。
12.再度コマンドプロンプトでFTP接続するが、変わらず日本語が文字化け
13.コマンドプロンプトで「chcp 65001」など他コードを実行後、FTP接続するが、変わらず日本語が文字化け
14.コマンドプロンプトでFTP接続後、試しに日本語名のファイルをasciiモードでput、「ls」実行後、ファイル名が文字化けしていました

長くなってしまいましたが、
よろしくお願い致します。

お礼日時:2014/08/09 10:20

>コマンドプロンプトは、業務で使用しているためです。



えーとうまくかみ合ってないですが
たとえばFFFTPのようにスタンダードなftpクライアントを利用する
ことはできませんか?という意図です。
FFFTPは正式版の開発が終了したソフトなのでびみょーなら
多機能なGUIのftpクライアントはほかにもいろいろありますので
    • good
    • 0
この回答へのお礼

yambejpさん
再び回答をありがとうございます。

業務では、「FFFTP」などのソフトウェアが、
使用できません。
その為、コマンドプロンプトでサーバへFTP接続して、
ファイルを「put,get」しています。

今回は勉強の為、同じように出来るようにしています。
サーバ設定を見れるといいのですが、権限の関係上、
見れませんので、今も試行錯誤している最中です。

言葉足らずで申し訳ございません。

お礼日時:2014/08/09 09:40

>lsコマンド実行後、ファイルやディレクトリ名が文字化



肝心のそのファイルはどうやってアップしたんですか?
アップするときにファイル名の文字コード変換しているのかも

WindowsのコマンドラインFTPはおまけみたいなものなので
GUIのFTPクライアントで接続するという選択肢はないですか?

この回答への補足

ファイルはasciiモードでアップしました。

コマンドプロンプトは、業務で使用しているためです。

補足日時:2014/08/08 11:17
    • good
    • 0
この回答へのお礼

早速ご回答をありがとうございます。

今も悪戦苦闘中です。

お礼日時:2014/08/08 11:16

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QFTPコマンドでディレクトリごとファイル移動できるコマンドはありますか?

タイトルどおりなのですが、FTPでファイルを転送する際に、サブフォルダを含むディレクトリごとファイル転送するコマンドはありますでしょうか。
ディレクトリの中にあるすべてのファイルを移動したいのですが、サブフォルダがたくさんあるので、わざわざディレクトリの場所へ移動してmputを繰り返すのはめんどうで仕方ありません。
よろしくお願いします。

Aベストアンサー

ご使用になるOS環境が書いてないのですが、Linux,BSD等ならncftpで、get -R dir。
Windowsならffftpを使えば良いと思います。

Qftpのmgetコマンドの自分の格納場所の指定方法は?

先日、ftpコマンドについてこのサイトで色々教えていただき感謝しております。

複数のファイルを受信するのにmgetコマンドを教えていただいたのですが、
相手より受信した場所の格納場所の指定が上手くいきません。

先方にFTPとしてログインでき、"PROMPT"→"MGET *"と行うのですが、受信したファイルの格納場所がCドライブの直下になってしまいます。
自分のインターネットサービスマネージャーの
ルートは別のフォルダに設定してあるのですが、これは受信したデータの初期値にはならないのでしょうか?
また、調べたところ省略すると、ワーキングディレクトリに作成されるみたいにかかれていましたが、ワーキングディレクトリはどこかで指定できるのでしょうか?

たとえばC:\AAAに受信したファイルを格納したい場合はどうやって書けばよいでしょうか?

MGET * C:\AAA見たいに色々試して見ましたが、駄目でした。

Aベストアンサー

方法は2つあります。

(1)データを格納するディレクトリに移動してからftpを起動させる。

cd 格納先ディレクトリ
ftp ホスト名
mget *

(2)ftpした後格納するディレクトリを指定する方法

ftp ホスト名
lcd 格納先ディレクトリ(自分のマシン)
mget *


lcd とは、"Local Change Directory" と思っておくと忘れなくていいですよ♪

QFTPエラー425

FTPで425エラーが出て困っています。
今まで繋がっていたのが突然繋がらなくなりました。
調べてみると20番ポートが遮断されている可能性が高く、
どこで遮断されているか調べる良い方法があれば教えて下さい。

・クライアント
OS:Windows 8.1、ファイアウォール: Norton Inernet Security
・サーバー(AWS)
OS:Red Hat Enterprise Linux Server release 7.1 (Maipo)
ファイアウォール:AWSのネットワークルール設定

接続は出来ていて、lsを打つとエラーになります。
サーバーにTertermでログインしてlocalhostにftpするとlsできるので、
ftpd自体に問題はなさそうです。
また、サーバー側の設定は直しておらず、突如動かなくなったので、
クライアントのファイアウォール設定が変わったのを疑っていますが、
ファイアウォールを一時停止しても解消しませんでした。
どこが悪いか原因を切り分けられるずに困っています。
原因箇所を調べる良い方法があればご教示ください。

FTPで425エラーが出て困っています。
今まで繋がっていたのが突然繋がらなくなりました。
調べてみると20番ポートが遮断されている可能性が高く、
どこで遮断されているか調べる良い方法があれば教えて下さい。

・クライアント
OS:Windows 8.1、ファイアウォール: Norton Inernet Security
・サーバー(AWS)
OS:Red Hat Enterprise Linux Server release 7.1 (Maipo)
ファイアウォール:AWSのネットワークルール設定

接続は出来ていて、lsを打つとエラーになります。
サーバーにTerterm...続きを読む

Aベストアンサー

>FFFTPで繋いでいて拡張オプションのPASVモードにチェックをつけていないのでpassiveモードではないはずですが、

クライアントソフトはActive FTPで接続しようとしているのは間違いないですね。

>WireSharkで見たところ、後ろにPASVと書かれていました。
>Wireshark結果
>3967 345.551600000 52.27.XX.XXX 192.168.0.4 FTP 105 Response: 200 PORT command> successful. Consider using PASV. ← パッシブモードになっている?

良く読んで下さい。単に「Passiveモードでの使用を検討して下さい」というメッセージです。

クライアントソフトはActive FTPで接続しようとしているものの、サーバ側がActive FTPを恐らくサポートしていないので、「Passiveモードに移行してよ」とメッセージを出した。にも関わらずクライアントはPASVコマンドを実行することもなく、LISTコマンドを実行したので「425 Failed to establish connection」、つまり「だぁかぁらぁ、データセション張ってないんだから」と返したわけです。

「Passiveモードでの使用を検討して下さい」というメッセージは柔らかな表現ですが「いいか、俺はPassiveモードしか受け付けないからな。次はPASVコマンドを打てよな。それ以外は知らんからな」と等価です。まぁ、QUITやBINARYやASCII等は受け付けてくれるとは思いますが。

>またサーバーが20番ポートにセッションを張ろうとしている形跡がありませんでした。
>これはPASVモードになっているのでしょうか?

サーバは少なくともPassiveモードしかサポートしていないようです。なので、サーバからクライアントの20/TCPにはコネクションを張らずに、21/TCPでクライアントからのPASVコマンド待ちです。PASVコマンドがクライアントから来れば、21/TCPでEntering Passive Mode (X,X,X,X,A,B)を返しますので、クライアントはサーバの(A*256+B)/TCPポートに対してSYNを送信、所謂3ウェイハンドシェイクでデータセションが繋がるという流れになります。

>FFFTPで繋いでいて拡張オプションのPASVモードにチェックをつけていないのでpassiveモードではないはずですが、

クライアントソフトはActive FTPで接続しようとしているのは間違いないですね。

>WireSharkで見たところ、後ろにPASVと書かれていました。
>Wireshark結果
>3967 345.551600000 52.27.XX.XXX 192.168.0.4 FTP 105 Response: 200 PORT command> successful. Consider using PASV. ← パッシブモードになっている?

良く読んで下さい。単に「Passiveモードでの使用を検討して下さい」というメッ...続きを読む

QシェルスクリプトでFTPの実行結果を取得するには

OS redhat linux
シェル bornシェル

でftpを実行するスクリプトを作っていますが、
ftpの実行結果は取得できるのでしょうか?

ftp -n < ftpCom.txt

宜しくお願いします。

Aベストアンサー

No.1です。補足拝見しました。

直接ftpコマンドの戻り値では実行結果が判断できないので、私が以前に携わっていたプロジェクトでは、FTPサーバが出すエラーコードをgrepでハンドリングしていました。

FTPはコマンドの結果を「行頭に3桁の数字」で出力する仕様になっており、putもgetも送受信が成功した場合は226が出力されるので、

ftp -nv < ftpCom.txt > ftpLog.txt 2>&1

を例えにとると、このコマンドを実行した後に、
grep ^226 ftpLog.txt > /dev/null
if $? ne 0
then
echo "FTPでエラーが発生しました" >> logfile
exit 1
fi

みたいなことをしていました。grep の引数 ^226 は行頭が226から始まる行を検索、という意味で、grepでマッチする行があった場合は0が戻り値となり、マッチしなければ0以外が戻り値となるので、それを利用していました。

実際の運用では、処理が異常終了したときにlogfileを見て、FTPのエラーだったらさらにftpLog.txtを見る、みたいな感じでした。

なお、FTPサーバが返すコードについては下記RFCの4.2辺りを参照してください。もっとも、サーバによってこれら全てが実装されてるとは限りませんが。

http://hp.vector.co.jp/authors/VA002682/rfc959j.htm

No.1です。補足拝見しました。

直接ftpコマンドの戻り値では実行結果が判断できないので、私が以前に携わっていたプロジェクトでは、FTPサーバが出すエラーコードをgrepでハンドリングしていました。

FTPはコマンドの結果を「行頭に3桁の数字」で出力する仕様になっており、putもgetも送受信が成功した場合は226が出力されるので、

ftp -nv < ftpCom.txt > ftpLog.txt 2>&1

を例えにとると、このコマンドを実行した後に、
grep ^226 ftpLog.txt > /dev/null
if $? ne 0
then
echo "FTPでエラー...続きを読む

QFTPコマンドについて(Windowsのコマンドプロンプト)

windowsXPのDos窓からftp ipアドレスを入力し、get ファイル名を
入力すると「最近使ったファイル」の中にファイルがダウンロードされます。ネットで調べたところ、現在の作業場所にダウンロードされる。とのことのようなのですが、これは現在の作業場所が最近使ったファイルということなのでしょうか?また、これだと不便なので、ダウンロード先に
デスクトップ等を指定できませんでしょうか?(Ffftp等のツールは使わずDos窓での入力で)どなたか教えて下さい。

Aベストアンサー

 FTPサーバーにログオンする前に、デスクトップなど作業ディレクトリに移動しておくのが一番簡単なのですが、FTPにログオンした後からでも「lcd」コマンドでローカルディレクトリを変更できます。

 FTPでログオンした後に
lcd C:\Documents and Settings\ユーザー名\デスクトップ
 とすればOKです。

 現在の作業ディレクトリを確認したい場合は、引数なしで「lcd」とだけ入れれば画面に表示されます。

参考URL:http://www.osumi.or.jp/Information/FTP/FTP.HTM#lcd

Qpingでポートの指定

pingでIPアドレスを指定して、通信できるかどうかというのは
よく使いますが、pingでポートを指定して応答するかどうかは調べられるのでしょうか?

よろしくお願いします

Aベストアンサー

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含むICMP)ではできません。

FTPの疎通確認であれば、クライアントからサーバに対するTCP/21通信(FTP-CMD)が可能であること(サーバからクライアントへのTCP/21からの応答を含む)+サーバからクライアントに対するTCP/20通信(FTP-DATA)が可能であること(クライアントからサーバへのTCP/21からの応答を含む)が必要でしょう。

監視ソフトによるものであれば、
・クライアントからサーバへのログイン(TCP/21)
・クライアントからサーバへのlsの結果(TCP/20)
で確認すればよいでしょう。

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含む...続きを読む

Qftpコマンドの戻り値をチェックしたい

現在業務でftpコマンドを用いたバックアップシェルを作成しております。(RHEL4)
クーロンでシェルAを呼び、シェルA内でftpコマンド発行→ファイルB内のftpコマンドを実行→シェルAに戻る、という仕様ですが、このftpコマンドが成功したのか失敗したのかをプログラム上で判断する方法はありますでしょうか?

Aベストアンサー

shogo0809さんの回答に便乗します。
実行ログをファイルに落としてgrepするのがよいと思います。
以前、似たような質問があったので
具体的な手順は参考URLのほうを見てはどうでしょうか?

→シェルスクリプトでFTPの実行結果を取得するには

参考URL:http://oshiete1.goo.ne.jp/qa2656080.html

Q【フォルダ名の文字コードを変換したい】

【フォルダ名の文字コードを変換したい】

Windows Vistaです。

Windowsではフォルダ名にShift-JISを使っていますが、とあるプログラムが日本語を読み込む際、文字コードがUTF-8でないと読み込めないようで、フォルダ名に日本語を含むフォルダを参照すると文字化けしてしまいます。
なのでフォルダ名をUTF-8に変換したいです。

検索するとLinux上でShift-JISのフォルダ名をUTF-8にしたり、Windows上でもファイルの内容をShift-JISからUTF-8に変換したりする方法は見つかるのですが、Windows上でフォルダ名をUTF-8に変換する方法が見つかりません。
UTF-8に変換するとエクスプローラ上では文字化けするので、需要がないのでしょうか。
コマンドプロンプトとか苦手なので、何かフリーソフトでもあればいいのですが…

Aベストアンサー

>間違いなくUTF-8です。
了解しました。そんなソフトもあるのですね、初めて知りました。

>Shift-JISとかUTF-8とか関係なく、バイナリ的にフォルダ名を変更することはできないのでしょうか。
できません。
Windowsのファイル/フォルダ名はUnicodeで記録されています。
それを、WindowsのAPIか何かで普通に読むと、OSの言語に応じて標準の文字コードに変換された値が返ります。日本語ではShift_JISです。
ソフトから読めるのはこの変換された状態のデータだけです。変換結果はShift_JISで解釈できる値のみしか含まれないので、UTF-8で読める値にすることはできません。

Q-bash: ftp: コマンドが見つかりません

ftpでファイルを転送したいのですが、現在出来ておりません。
因みにその端末(サーバ)は外部からのftpのやり取りも必要な為、vsftpdをインストールしています。
試しに、コマンドでftpと入力した時に題目のようなエラーが表示されます。

Linuxはまだ経験が殆ど無く、シェルに関してもまだ分かりません。

ftpクライアントのインストールとか必要でしょうか?
それとも何か追加設定が必要でしょうか?

途中のファイアーウォール機器では通過の設定ができております。

教えていただけますでしょうか。
宜しくお願い致します。

Aベストアンサー

echo ${PATH}

として、パス(コマンドサーチパス)を確認してみてください。

その上で、

find / -name ftp -print > /tmp/find.log

として、「ftp」コマンドがどこのディレクトリにあるかを確認してください。
※ エラーメッセージ(~:許可がありません)が出力されますが、無視してください。

cat /tmp/find.log

/usr/kerberos/bin/ftp
/usr/bin/ftp


そのあとで、「/etc/profile」に、「ftp」コマンドが存在するディレクトリを追記してください。

最終行に追加
PATH=/usr/kerberos/bin:/usr/bin:$PATH

いったん、ログアウトしてログインして、パスが追加できてるかを確認してください。
echo ${PATH}

追加できてれば、「ftp」コマンドが使えるようになっているはずです。

QDirコマンドでフォルダ内ファイルの合計サイズをだすには?(コマンドプロンプトにて)

いろいろ調べましたが不明な点があり、質問します。

WindowsのDOSプロンプトでdirコマンドを打つとフォルダ・ファイルの一覧が表示されますが、その中にファイルサイズが表示されています。
このサイズを合計できるコマンドはありませんか?
DIRコマンドのオプションを調べましたがそれらしいものが見当たりません。
具体的には
C:\xxx\配下に50個程度のファイルがあります。
その50個の合計サイズを知りたいです。
xxxフォルダの親フォルダにはアクセス不可です。

ずーっと悩んでいます。よろしくお願いします。

なお、OSはWindowsNTか2000で使用予定です。

Aベストアンサー

カレントドライブ、カレントフォルダを
C:\xxx\
にした状態で、

dir /s /a-d

/sパラメータででサブディレクトリすべてを検索
/a-dパラメータでディレクトリ以外のファイル(つまり属性に関係なくすべてのファイル

これを実行すると最後にファイルの個数とファイルサイズの合計を表示します。

もし、隠し属性のファイルは合計しないのであれば、

dir /s

だけで良いと思われます。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング