- - PR -
シェルスクリプトでftpに自動ログインする方法
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-04-13 20:09
OS:RedHat Linux
現在、AサーバーのあるファイルをBサーバーにアップロードするというスクリプトを書いているのですが、 ftp $host $ftp_user $ftp_passwd put $lfile $rfile という風に書いてもログインしてくれないんですね。 .netrcファイルを使わなくて自動ログインして、アップロードする方法ってありませんか? _________________ | ||||
|
投稿日時: 2007-04-13 20:13
こんばんは。
そういった対話処理を書くなら、せめて expect で。 わざわざ FTP を使わなくても、scp であれば楽に対処できそうに思いますが、如何でしょう。 | ||||
|
投稿日時: 2007-04-13 20:48
初心者なもので、expectやscpのことはまったく知りませんでした。
scpの場合でもパスワードを聞かれるのですが? 設定ファイルなどを使わなくてリモート間のファイル転送をする方法だと、expectくらいなのでしょうか? _________________ | ||||
|
投稿日時: 2007-04-13 22:20
http://www.itmedia.co.jp/help/tips/linux/l0462.html
まぁ、変数で渡したいとなると 一時ファイルを作って実行させることになりますかね… ※perlでやる方が早そうですけど scpは公開鍵認証なら自動化できます。 <追加> #!/bin/sh echo -e "open localhost\nuser root password\nls\nquit" | ftp -n [ メッセージ編集済み 編集者: F/A 編集日時 2007-04-13 22:44 ] | ||||
|
投稿日時: 2007-04-13 23:01
>> F/Aさん
回答ありがとうございます。 一つ書くの忘れていたのですが、転送する前に、あるディレクトリをZIPに固める作業がいるんです。それだとしても可能ですか? _________________ | ||||
|
投稿日時: 2007-04-13 23:21
ftpで実現する方法も含めて、方法は前掲に提示しています。
> 転送する前に、あるディレクトリをZIPに固める作業がいるんです。それだとしても可能ですか? 特に問題にはならないですよ。 | ||||
|
投稿日時: 2007-04-14 00:18
>> F/Aさん
たとえば、ファイルbk.shの内容が zip -r hoge /hoge open ftp.exmple.com user hegehge password bin prompt cd directory put /hoge/hoge.zip /hoge quit というようなファイルでも、ftp -n < bk.shでうまく動作するのでしょうか? できれば、./bk.shみたいな方法でできれば一番いいのですが。 [ メッセージ編集済み 編集者: Tatsuya 編集日時 2007-04-14 00:22 ] | ||||
|
投稿日時: 2007-04-14 01:31
こんばんは。
なるほど、ftp の -n オプションで、コマンドを非対話的に渡せるのですね。 さて、Tatsuyaさんのご希望に沿うとすれば、bash(1) ヒアドキュメントを使うと良さそうです。
のような形で組めるでしょう。 ※ところで、Tatsuya さんのスクリプトの書き方を見るに、「ユーザが入力する内容を記したファイル」のことをシェルスクリプトと考えているように感じます。 もしそうならば、それは違いますので注意が必要です。 正しくは、ビルトインコマンドや、プロセス実行を組み合わせたプログラム、ですから。 |