• ベストアンサー

対話式FTPのシェル化の方法

FTPのシェル化について質問があります。(同じドメインにあるLinuxマシン同士を想定しています。) ・get(put)でディレクトリを変えて指定することは可能ですか?例えば、"get /home/user1/file1"のように。 ・ftpを起動→ディレクトリ移動→指定ファイルのget の流れを自動化したいと考えています。よい方法はないでしょうか?ftpをあきらめてrcpにするしかないのでしょうか? 以上、ご教授願います。

質問者が選んだベストアンサー

  • ベストアンサー
  • shige_70
  • ベストアンサー率17% (168/946)
回答No.3

標準のftpコマンドで無理なく出来る方法を紹介します。 クライアント側のユーザのホームディレクトリに、 .netrc というファイルを作ると、その中にftpコマンドの動作設定が出来ます。 その中で、マクロが定義できるのですが、マクロ名を init という名前にすると、ftp起動時に自動実行されます。 そこで、initマクロで、cdしてgetしてquitという流れを書けばいいのです。 .netrc を下記のような内容で作成してください。 ---ここから machine <サーバ名> login <ユーザ名> password <パスワード> macdef init cd <対象ディレクトリ> get <ファイル> quit ---ここまで 最後に空行が1行必要なことに注意してください。 必要に応じてbinaryとかも入れてください。 作成したら、chmod 600 .netrc としてください。(他人がさわれないようにしておかないとエラーになります) このあと、ftp <サーバ名> とやるだけですべてやってくれます。 もちろん、putすることもできますし、promptしておけばmgetやmputもokです。 この方法の欠点は、このファイルがある限り、そのサーバに接続すると必ずマクロが処理されてしまうことです。

isiahthomas
質問者

お礼

ありがとうございました。 勉強になりました。

その他の回答 (2)

  • momoturbo
  • ベストアンサー率55% (49/88)
回答No.2

以下のURLは参考になるのではないでしょうか?

参考URL:
http://ash.or.jp/net/ftp_command.htm
isiahthomas
質問者

お礼

ありがとうございました。 参考にさせて頂きます。

  • astronaut
  • ベストアンサー率58% (303/516)
回答No.1

色々解はあると思いますが、 1.lftp を使う lftpget ftp://hogehoge/home/user1/file1 2.scp を使う (あらかじめパスフレーズ無しの鍵認証を設定しておく) scp user@hogehoge:/home/user1/file1 . 等々

参考URL:
http://lftp.yar.ru/
isiahthomas
質問者

お礼

ありがとうございました。 LFTPは普段の実務で使えそうですね。 勉強になりました。