スクリプト内のように、あるサーバーから別のサーバーにsftp
いくつかのファイルを実行するスクリプトがありますscript.ksh
以下の行があります。
sftp user@ip_address << EOF
cd path
put file1
bye
EOF
次のようなスクリプトを実行すると、
./script.ksh
以下のようなパスワードを求めています。
Password:
これはパスワードなしの接続ではないため、ここでは手動でパスワードを渡す必要があります。
このスクリプトを自動化したいのですが、Password
プロンプトが表示されたときに、独自にパスワードを取得する必要があります。誰でも何か提案がありますか?.
設計上、sshはパスワードの「埋め込み」を許可していません。これは、公開鍵と秘密鍵のペアを使用した非対話型認証のメカニズムがあるためです。
だから私はあなたがそれをあなたの最初の寄港地と考えることをお勧めします。通常は次のように簡単です。
ssh-keygen
クライアントで。id_rsa.pub
から~/.ssh/authorized_keys
サーバー上。それが何らかの理由でオプションではない場合、フォールバックオプションはexpect
であり、sshにパスワードを送信できます。
これを試して:
#!/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
これは本当に簡単です。特に、/ 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のパスワードの入力を求めるプロンプトが表示されなくなります。
Scpコマンドが使えると思います
Sshキーを作成する必要があります。 キーの生成方法
これで、他のサーバーにファイルをコピーできます。
scp file [email protected]:/path/
私はそれがうまくいくことを願っています