sftpの-bというオプションでバッチファイルを指定できるとあるのですが、この、バッチファイルの書き方がわかりません。バッチファイルを利用すれば、パスワード入力も不必要になるのでしょうか?それはそれで、別途色々と設定が必要なのでしょうか?良い情報、サイトをご存知の方、是非教えてくださいm(__)m

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/10/05 13:56:37
  • 終了:--

回答(3件)

id:fhvbwx No.1

はてな滅ぶべし回答回数41ベストアンサー獲得回数02005/10/05 14:55:51

ポイント30pt

http://ykr414.com/dos/bat.html

コマンドプロンプトを使ってみよう! −バッチファイルとは?−

バッチファイルとはDOSやWindowsでコマンドラインからの入力の変わりにファイル(コマンドラインと同じ形式)を使ってコマンドを入力するもので、unixのshell scriptのようなものです。

細かい文法などはリンク左記を参照して右ください。(これでも分かりやすい方です)

例えば、ftpを使う際には毎回入力するコマンドをそのまま一行に一コマンドずつ書いた物をバッチファイルとして読み込ませると自動的に処理されます。

ご質問の件ですが、

sftp -b バッチファイル [ユーザ@]ホスト名

とするとパスワードが必要な場合、

パスワード

mget logfile

put index.html

という内容のファイルを読み込ませると、自分がパスワードを入したときと同じように自動でログインしてログファイルをダウンロードし、index.htmlをアップロードするはずです。(sftp自体は使ったことがないのでここは実際に確認してみてください)

ですが、リンク先に書かれているように接続時にパスワードを入力しなくてもいいように、公開鍵認証を使うよう設定すべきです。

http://sonic64.com/2004-11-17.html

ssh scp sftp の正しい自動実行方法

セキュリティーに関してはこの辺を参考にしてください。

一言で言えば自分で色々と設定できないかぎり自動的な認証は危険です。

まして、パスワードの入ったファイルをそのまま保存しておくことはもっと危険です。

id:takos

FTPの時はシェルで

-----------------

#!/bin/sh

ftp -i -n www.hogehoge.com <<END</p>

user name password

cd bakdata

put hoge.tar.gz

by

END

-------------

見たいなシェルをクローンで定期的に回していたのですが、これと同じようなことがしたいだけなのですが・・・・・

なにかいい方法ないっすかね?

2005/10/05 15:33:11
id:fhvbwx No.2

はてな滅ぶべし回答回数41ベストアンサー獲得回数02005/10/05 19:41:19

http://d.hatena.ne.jp/fhvbwx/

Apple100% blog跡地

Windowsと仮定して回答をしましたが、回答が分かりづらくunixをお使いのようなので再回答させていただきます。

ポイントはひとつ分でも結構ですし、リンク先の私のblogの方でさらに質問してくださっても結構です。


バッチファイルとは自動処理(バッチ処理)を行うファイルのことをさし(ようするにクローンで定期的に回すファイルもバッチファイルです)、unix(cygwin、MacOSXでも同様)ではシェルスクリプトと同義です。


要するに、対話式の入力の変わりにシェルスクリプトはシェルからそのままsftpに送られますので、バッチファイルを指定しなくてもシェルスクリプトで動くはずです。

-----------------

#!/bin/sh

ftp -i -n www.hogehoge.com <<END

user name password

cd bakdata

put hoge.tar.gz

by

END

-----------------

-----------------

#!/bin/sh

sftp name@www.hogehoge.com <<END

password

cd bakdata

put hoge.tar.gz

bye

exit

END

-----------------

のようにsftpの文法に書き換えればできるはずです。

id:ttamo No.3

たも回答回数175ベストアンサー獲得回数292005/10/08 20:22:46

ポイント30pt

やってみたところ、パスワードは FTP コマンドの前に必要になるようですね。

だから最初の二つ回答してくださっている方法ではできないみたいです。

つまり、バッチファイルに書けるのは get とか put とかだけなんですね。


そして、コマンドラインでパスワードを指定する方法はないようです。

そんなことをするのであればパスワードのない鍵を使え、ということのようです。

cron でまわす場合には ssh-agent も使えませんからね。

いや、まあ ssh-agent -a /home/user/.ssh.sock などと指定して起動しておけば

env SSH_AUTH_SOCK=/home/user/.ssh.sock sftp というように

cron で動かすこともできますけどね。


パスワードがないと心配かと思いますが、公開鍵認証は

数文字程度のパスワードとは比べものにならない強度がありますので

クライアント側マシンがクラックされなければ危険ではありません。


鍵の作成は ssh-keygen を使います。

秘密鍵に対するパスワードを聞かれたときにただリターンキーだけを押せば

パスワードなしの鍵ペアを作ることができます。

そして公開鍵を sftp サーバ側の ~/.ssh/authorized_keys に追加してやる、と。


あ、すでに鍵がある場合は ”ssh-keygen -p -f 鍵”

でパスワードを変更できます。


ところで、ただ put するだけなら scp でも大丈夫だと思いますよ。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません