web-dev-qa-db-ja.com

スクリプトを自動化してパスワードを自動的に取得する方法は?

スクリプト内のように、あるサーバーから別のサーバーにsftpいくつかのファイルを実行するスクリプトがありますscript.ksh以下の行があります。

sftp user@ip_address << EOF
cd path
put file1
bye
EOF

次のようなスクリプトを実行すると、

./script.ksh

以下のようなパスワードを求めています。

Password:

これはパスワードなしの接続ではないため、ここでは手動でパスワードを渡す必要があります。

このスクリプトを自動化したいのですが、Passwordプロンプトが表示されたときに、独自にパスワードを取得する必要があります。誰でも何か提案がありますか?.

4
PriB

設計上、sshはパスワードの「埋め込み」を許可していません。これは、公開鍵と秘密鍵のペアを使用した非対話型認証のメカニズムがあるためです。

だから私はあなたがそれをあなたの最初の寄港地と考えることをお勧めします。通常は次のように簡単です。

  • 実行ssh-keygenクライアントで。
  • id_rsa.pubから~/.ssh/authorized_keysサーバー上。

それが何らかの理由でオプションではない場合、フォールバックオプションはexpectであり、sshにパスワードを送信できます。

3
Sobrique

これを試して:

#!/usr/bin/expect

spawn sftp USERNAME@ip_address:/path/to/folder
expect "Password:"
send "PASSWORD\n"
expect "sftp>"
send "put file1\n"
expect "sftp>"
send "bye\n"

または、スクリプト全体を専用にしたくない場合:

#!/bin/sh

expect << 'EOS'
spawn sftp USERNAME@ip_address:/path/to/folder
expect "Password:"
send "PASSWORD\n"
expect "sftp>"
send "put file1\n"
expect "sftp>"
send "bye\n"
EOS
3
ajlowndes

これは本当に簡単です。特に、/ etc/hostsファイルに他のサーバーのIPと名前が含まれている場合。

まず、他のコンピュータと共有できる公開鍵を生成します。

ssh-keygen

3つの質問にEnterキーを押すだけです。

次に、公開鍵を次のように他のサーバーに追加します。

ssh-copy-id -i ~/.ssh/id_rsa.pub remote-Host

ここで、remote-Hostは、/ etc/hostsファイルの名前またはIPアドレスのいずれかです。

それはあなたに他のホストのキーを受け入れるように促します-あなたはイエスと答えます(yだけではありません)そしてそれは他のサーバーのパスワードを要求します。

それでおしまい。これで、キーがリモートホストの.ssh/authorized_keyファイルに追加されました。

これを使用するには、通常どおりscpまたはsshを実行するだけで、remote-Hostのパスワードの入力を求めるプロンプトが表示されなくなります。

1
SDsolar

Scpコマンドが使えると思います

Sshキーを作成する必要があります。 キーの生成方法

これで、他のサーバーにファイルをコピーできます。

scp file [email protected]:/path/

私はそれがうまくいくことを願っています

0
canonale