人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

cronとシェルスクリプトとscpを使い、
ファイルを定期的に別サーバに送りたいのですが、passwordを聞かれるので自動化できません。
scpコマンドでpasswordをあらかじめ書いておく方法を教えてください。

●質問者: kunitz
●カテゴリ:コンピュータ
✍キーワード:password コマンド サーバ シェルスクリプト ファイル
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● ruse
●10ポイント

http://www.geocities.co.jp/SiliconValley/4137/dir3/expect.html

Scripting Laboratory: Expect

Expect というツールがあります。

UNIXのコマンド、「telnet」「ftp」「passwd」「su」の自動化が可能です。

http://kansai.anesth.or.jp/gijutu/expect/howto-expect.html#Intro

で書き方等が詳しく乗っています。


2 ● くまっぷす
●18ポイント

http://www.jp.freebsd.org/QandA/HTML/2255.html

FreeBSD QandA 2255

パスフレーズなしの認証鍵を作る方法 または

http://www.jp.freebsd.org/QandA/HTML/1578.html

FreeBSD QandA 1578

ホストベース認証を使う方法(ただしセキュリティ的には落ちます)があります。


どっちもためしてはいないのでそこんとこよろしくお願いします

◎質問者からの返答

ありがとうございます!

ホストベース認証


3 ● dungeon-master
●18ポイント

http://www.atmarkit.co.jp/flinux/rensai/linuxtips/447nonpassh.ht...

@IT:sshでパスワードなしにログインするには

これでどうでしょう。

◎質問者からの返答

ありがとうございます!

ssh-agentを


4 ● kikue70
●17ポイント

http://www.aconus.com/~oyaji/backup/rsync.htm

Rsyncによるデータバックアップ

ご質問に対しての直接的な回答が出なかった為、答えなかったのですが、

回答を見ていますとスクリプトではなくてもOKの様でしたので、

変わり種をご紹介させて頂きます。公開鍵やらホスト認証、それに

PermitRootLogin fourced-command-onlyなどで限定的なコマンド制限を

掛けパスワード無しにしてしまうなんて方法もあります。


また、サーバ間ではなくて1台クライアントを挟むのはダメでしょうか。

TeraTermのマクロ(ttl)を使用してタイマー仕掛けにするなんていう・・・

回りくどい方法ですが、色々使えると思いますのでご参考になればと思います。


; open Tera Term

connect ’ターゲットホストIPアドレス:23’


; set Password,Prompt

Password = ’パスワード’

Prompt = ’[admin admin]$’

suPrompt = ’[root /root]#’


; login&shutdown command

wait ’login:’

sendln ’admin’


wait ’Password:’

sendln Password


wait Prompt

sendln ’su -’

wait ’Password:’

sendln Password

wait suPrompt

sendln ’telnet localhost 25’

wait ’+0900’

・・・と待ちが入れられます。

◎質問者からの返答

ありがとうございます!

TeraTermのマクロ(ttl)


5 ● chatoraneko
●17ポイント

http://search.cpan.org/author/IVAN/Net-SCP-0.07/SCP.pm

Net::SCP - Perl extension for secure copy protocol - search.cpan.org

perlで書けます。


#procedural interface

use Net::SCP qw(scp iscp);

scp($source, $destination);

iscp($source, $destination); #shows command, asks for confirmation, and

#allows user to type a password on tty


#OO interface

$scp = Net::SCP->new( ”hostname”, ”username” );

#with named params

$scp = Net::SCP->new( { ”host”=>$hostname, ”user”=>$username } );

$scp->get(”filename”) or die $scp->{errstr};

$scp->put(”filename”) or die $scp->{errstr};

#tmtowtdi

$scp = new Net::SCP;

$scp->scp($source, $destination);


#Net::FTP-style

$scp = Net::SCP->new(”hostname”);

$scp->login(”user”);

$scp->cwd(”/dir”);

$scp->size(”file”);

$scp->get(”file”);

$scp->quit;

◎質問者からの返答

ありがとうございます!

perlで書けます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ