【復活求む!】惜しくも解散してしまったバンド|J-ROCK編

FTPを使って、自宅サーバーから友人にファイルを配りたいと思っているのですが
日本語ファイル名が文字化けしていたり、表示自体されません。
FTPサーバーはProFTPd、クライアントはブラウザからダウンロードしようと考えています。
サーバーのOSはvine linux5.4です。
DLする側の文字コードなどを変更しないで文字化けさせない方法はありませんか??
Linux自体のシステムの文字コードを変えればいいのでしょうか?
それともファイル名を半角に変更するしかないのでしょうか??
回答お願いします・・

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

A 回答 (2件)

Proftpdは使ったこと無いですが、そもそもFTPはファイル名のコード変換なんてやってないはず…と思ったら変換パッチが存在するんですね(汗)



で、参考URLのサイトを見る限りだと、"CharsetLocal"にサーバ側の文字コードを、"CharsetRemote"にクライアント側の文字コードを指定するようなので、
とりあえず
CharsetLocal EUC-JP-MS
CharsetRemote CP932

でいけるんじゃないかと。
サーバ側の文字コード設定がUTF-8なら"CharsetLocal"をUTF-8にしてください。

まぁ、面倒なら半角のファイル名でやりとりするのが一番手っ取り早いですけどね。

参考URL:http://www.hakusan.tsg.ne.jp/tjkawa/software/mis …

この回答への補足

CharsetLocal CharsetRemoteは既に設定しています。
何か他に考えられる方法はないでしょうか・・?

補足日時:2011/03/07 14:33
    • good
    • 0

サーバ側の文字コードに合わせないからでしょう。


LinuxならたいていUTF-8ですけど。

この回答への補足

サーバーのシステムの文字コードをUTF-8に変更してもダメでした・・。
ブラウザ側の文字エンコーディングもUTF-8にしてもダメでした・・。
どうすれば・・。

補足日時:2011/03/06 22:37
    • good
    • 0
この回答へのお礼

ProFTPd.conf の
CharsetRemote EUC-JP-MS ←*ここをCP932にする。
はすでにやりました。
他に何か無いでしょうか・・

お礼日時:2011/03/06 23:09

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

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

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

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

QFTP接続時の文字化け(CentOS6.5)

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

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

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

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

よろしくお願いします。

Aベストアンサー

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

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

Qvsftpd でのユーザーに対するパスワードの設定の仕方

chroot_list_file=/etc/vsftpd.chroot_list
として/etc/vsftpd.chroot_list には
goo

userlist_deny=NO として
/etc/vsftpd.user_listには
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd.ftpusers
# for users that are denied.
useradd goo
passwd goo
とかいていますがgooでログインしてもパスワード
がgooでいきませんどこがおかしいのでしょうか?
よろしくおねがいします。

chroot_list_file=/etc/vsftpd.chroot_list
として/etc/vsftpd.chroot_list には
goo

userlist_deny=NO として
/etc/vsftpd.user_listには
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd.ftpusers
# for users that are denied.
useradd goo
passwd goo
とかいていますがgooでログ...続きを読む

Aベストアンサー

>useradd goo
>passwd goo
>とかいていますが

書き方が間違っています。
vsftpd.user_listに書き方の見本があるはずですが?

ログインできるユーザ名を書くだけで良いです。
(当然、ユーザ名はログインアカウントです。)

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" と思っておくと忘れなくていいですよ♪

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でエラー...続きを読む

Qsedの置換文字に変数を使用したいのですが・・・

あるファイルの特定の文字を変換し、上書きをする処理を行いたいのですが、sedの置換文字に変数が渡せなくて困っています。

例:
X="a"
Y="b"
echo test.txt | sed 's/${X}/${Y/g}' >test.txt

sedでは置換文字に${X}といった変数を使用することはできないのでしょうか?

Aベストアンサー

' ・・・' で囲まれた中の$はそのままドルマークです。変数展開をするなら、'・・・'で囲んではいけません。

何も囲まないか、"・・・"で囲むかです。

Qパスワード設定していないユーザーのログイン

いつもお世話になっております。

linuxで、useraddした後、passwdコマンドでパスワードを設定していないユーザーがいます。ここでは、postgresとします。

このユーザーに一般ユーザーからなるときに、
$su - postgres
としますが、パスワードがきかれて、何も入力しないと、
invalidになります。(centos5)

パスワードを設定しないと、一般ユーザーからログインできないのでしょうか。
ちなみに、rootからpostgresですと、ログインできます。
$su -
$su - postgres

お手数をおかけしますが、なにとぞご教授お願いいたします。

Aベストアンサー

 実際useraddしてみると分かりますが、useradd直後の状態では、パスワードは「設定されていません」。
 設定しとらんのやけん設定はされとらんやろ何を言うてるんアホちゃうんと思うなかれ。パスワードが設定されていないとは、パスワードが空である(=初期値としてランダムパスワードが設定されている訳ではない)という事です。さて、ではどうして一般ユーザーからsuできないのでしょうか。rootになって

# getent shadow postgres

とすると、パスワードの欄が半角びっくりマーク2個のみが印字されたかと思います。この半角びっくりマーク2個というのがLinuxにおいて「アカウントがロックされている」という状態になります。
 試しに/etc/shadowファイルをrootで直接書き換える(びっくり2つを削る)と、一般ユーザーからパスワードなしでsu - postgresできるようになります。もちろんこんな危険な操作(shadowの書き換え)は普通せずに、以下のようにします。

# passwd -u -f postgres

passwd -uというのは、ロックアウトされているアカウントのロックを解除するものですが、現在postgresにはパスワードが設定されていないためpasswd -uだけだと「危険だべ」と拒否されます。ので、-fオプションをつけて強行します。すると先ほど/etc/shadowを直接書き換えたのと同じ状態に変わり、一般ユーザーからパスワードなしでsu - postgresする事ができるようになります。逆にロックする時は

# passwd -l postgres

です。詳しくはpasswd -hなどを参照の事。root(uid 0)はロックされているアカウントもおかまいなしに変身できるという凄い権利を持っています。

 実際useraddしてみると分かりますが、useradd直後の状態では、パスワードは「設定されていません」。
 設定しとらんのやけん設定はされとらんやろ何を言うてるんアホちゃうんと思うなかれ。パスワードが設定されていないとは、パスワードが空である(=初期値としてランダムパスワードが設定されている訳ではない)という事です。さて、ではどうして一般ユーザーからsuできないのでしょうか。rootになって

# getent shadow postgres

とすると、パスワードの欄が半角びっくりマーク2個のみが印字されたかと思...続きを読む


人気Q&Aランキング

価格.com 格安SIM 料金比較