• ベストアンサー

Linuxでバッチファイル?

Linuxをまだ勉強中の身なので教えてください。 Linuxでファイルを実行すると、他のサーバー(AIX)にFTPで接続してその中のホームディレクトリの下にあるファイルをすべてコピーしてくるなんて事はできるのでしょうか? もしできるとして、そんな仕様のバッチファイルをWindowsで作成しておいてLinux上で実行させることも可能なのですか?

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

  • ベストアンサー
  • onosuke
  • ベストアンサー率67% (310/456)
回答No.4

> scpもsshも『Secure connection to サーバー名 refused』 > と出てしまうのですが何が原因なのでしょうか? 接続を拒否されています。恐らく,AIX上でsshのサービスが動いていないのでしょう。残念です。セキュリティ的には ftp より ssh, scpの方が優れているため,使えるならこちらの方ががお勧めなんですよ。 ちなみに,sftp という ftp そっくりのものもあり,これら,ssh, scp, sftp は全て sshのサービスを利用します。 > rcpはホームページなどを見ると『推奨できません』のような > コメントがあるのですが使用してみても大丈夫なものですか? その『rcpが推奨できません』というのは,セキュリティ上の観念からです。このrcpのセキュリティ問題を回避する場合は,AIX側でrshデーモン(rcpはrshサービスを使います)を停止せねば駄目です。 ですから逆に,クライアント側,Linux側から rcpを試す分には問題ないですよ。rcpの利用が危険な環境ならば,sshのように,接続を拒否され rcp も使えないはずですから。 # もし,rcpが危険な環境でrcpを使えたら… # そんなときは,AIXの管理者にツッコミを入れましょう。

その他の回答 (4)

  • LemonT
  • ベストアンサー率49% (39/79)
回答No.5

こんばんは。 一括して全ファイルをgetするには2通りのやり方があります。 複数のファイルをgetする場合はサブコマンドに"mget"を使います。 ただし、特に何も指定しないと対話形式になってしまいます。 (1ファイルgetする毎にEnterしなければいけません。) ◎1つ目 FTPコマンドを-iオプションを付けて起動する。 ○Linuxの場合は、 ftp -i -n < ZZZ host ○Windowsの場合は、 ftp -i -n -s:ZZZ host となり、 "ZZZ"の内容は、 cd AAA mget BBB となります。 ◎2つ目 ftpのサブコマンドで"prompt"を実行する。 (ftpコマンドには-iオプションを付けない。) "ZZZ"の内容は、 prompt cd AAA mget BBB となります。 お気に召した方を試してみてください。  

参考URL:
http://www.linux.or.jp/JM/html/netkit/man1/ftp.1.html
Mifutsuta
質問者

お礼

ありがとうございます。 それぞれのやり方で試してみてできました。

  • onosuke
  • ベストアンサー率67% (310/456)
回答No.3

ftpではなく,rcp(rsh)やscp(ssh)を利用できれば,ものすごく簡単なんですが… AIXに対して,rsh や ssh は使えませんか? AIX_HOMEというディレクトリにコピーする場合 rcp, scpを使うなら $ scp -r remote_user@remote_host:. AIX_HOME $ rcp -r remote_user@remote_host:. AIX_HOME ちょっとややこしいですが,rsh や ssh では同じものがこのようになります。 $ mkdir AIX_HOME; rsh remote_user@remote_host tar -cf - . | tar -C AIX_HOME -xf - $ mkdir AIX_HOME; ssh remote_user@remote_host tar -cf - . | tar -C AIX_HOME -xf - >そんな仕様のバッチファイルを Windowsのバッチファイルのようなもののことを,Linux/AIXではシェルスクリプトと呼びますね。 このシェルスクリプトの作成方法ですが,以下の通りです。 その1:テキストファイルを作成し,一行目に #!/bin/sh と書く。二行目以降には,実行したいコマンドを書き連ねる。 その2:保存したファイルに $ chmod 700 [ファイル名] のコマンドなどで実行権をつける。 以上で,できあがり。 例えば,scpのコマンドでシェルスクリプトを作るなら,内容はこのようになります。 ------------------------------------------- #!/bin/sh scp -r remote_user@remote_host:. AIX_HOME -------------------------------------------

Mifutsuta
質問者

補足

scpもsshも『Secure connection to サーバー名 refused』と出てしまうのですが何が原因なのでしょうか? rcpはホームページなどを見ると『推奨できません』のようなコメントがあるのですが使用してみても大丈夫なものですか?

  • LemonT
  • ベストアンサー率49% (39/79)
回答No.2

こんにちは。 >>FTPサーバからコピーする内容を書いたファイル とは、FTPのサブコマンドで入力することを書きます。 つまり、通常ftpコマンドを実行し、 ftp> が出てきた後に実行する内容です。 仮にホームディレクトリの下に"AAA"というディレクトリがあり、 その中に"BBB"というファイルがある場合、 "ZZZ"の内容は、 cd AAA get BBB となります。 下記URLにLinuxのftpコマンドの使い方が載っています。 (Windowsのftpコマンドとは、多少。。。異なります。念のため。。。)

参考URL:
http://linux.nikkeibp.co.jp/command/ftp.html
Mifutsuta
質問者

お礼

ありがとうございます。 教えていただいたとおりでできました。 そこでもう一つお聞きしたいのですが、ログインしたディレクトリ内のすべてのディレクトリやファイルをgetしたいのです。 その方法ってありますか?

  • LemonT
  • ベストアンサー率49% (39/79)
回答No.1

こんにちは。 FTPサーバからコピーする内容を書いたファイルを作成し仮にZZZとすると、更に ○Linuxの場合は、 ftp -n < ZZZ host と書いたファイルを仮にXXXとする。 ○Windowsの場合は、 ftp -n -s:ZZZ host と書いたファイルを仮にXXX.batとする。 そしてXXXを実行すれば、お望みのことができると思います。

Mifutsuta
質問者

補足

返答ありがとうございます。 質問なのですが、 >FTPサーバからコピーする内容を書いたファイル というのは、コピーしてくるファイルのことなのでしょうか?それとも、コピーしてくるファイルの場所などの情報を書いたものなのでしょうか? もしその場合は書き方も教えていただけますか。何から何まで初心者で申し訳ありませんが、よろしくお願い致します。

関連するQ&A