1

grub.conf に「elevator」パラメーターが含まれているかどうかに関係なく、多数のサーバーから情報を収集したいと考えています。

さて、パスワードなしのキー認証は、今のところ私にはできないことです。スクリプトでパスワードを指定しても問題ありません。

誰かがこれを達成するのを手伝ってくれますか?

これは私がしたことです:

#!/bin/bash

GRUB="/etc/grub.conf"
_pair="$(</home/wadhwaso/login.txt)"
Server_info="/tmp/server_info"
for e in $_pair
do
             # extract user and ips for each $e in $_pair
        IFS='@'
        set -- $e
        _user="$1"
        _ip="$2"

        sleep 2
        echo "Connecting to server '${_ip}' via SSH..."
        ssh ${_user}@${_ip} "sudo grep -q "elevator=noop" "$GRUB" >/dev/null"
        if [ $? -eq 0 ]; then
        echo "Present on ${_ip}" | tee -a "${Server_info}"
        else
        echo "not present on ${_ip}" | tee -a "${Server_info}"
        fi
done

毎回パスワードを提供したくありません。私の環境にはパスワードレス認証が存在せず、不可能なので、スクリプト自体でパスワードを渡す必要がありますが、本当に気にしません。それを行うことができます. 私はそれが期待でできることを知っていますが、私はそれを使用しようとするたびにすべてを台無しにしました.

最初の回答で言われた方法で期待して使用しようとしましたが、失敗しました。

4

1 に答える 1

0

「期待する」ツールはあなたが必要とするものに完璧に聞こえます:http://expect.sourceforge.net/

(たとえばubuntuに)expectをインストールするには、次のようにします。

sudo apt-get install expect

これは、bashスクリプトの一部としてexpectを使用する方法を示すコードスニペットです。

#!/bin/bash

IP="111.111.11.1"
login="root"
password="some_password"
dest_dir="/etc/"

expect_sh=$(expect -c "
    spawn ssh $login@$IP
    expect \"password:\"
    send \"$password\r\"
    expect \"#\"
    send \"cd $dest_dir\r\"
    expect \"#\"
    send \"chmod +x $server_side_script"
    expect \"#\"
    send \"./$server_side_script\r\"
    expect \"#\"
    send \"cd /lib\r\"
    send \"cat $file_count\r\" 
    expect \"#\"
    send \"exit\r\"
")

echo "$expect_sh"

または、ロジックを別のexpectスクリプトに入れて構文を整理し、bashスクリプトから取得することもできます。

#!/usr/bin/expect

set login "root"
set addr "111.111.1.1"
set pw "root"

spawn ssh $login@$addr
expect "$login@$addr\'s password:"
send "$pw\r"
expect "#"
send "cd /etc\r"
# Then other things you need to do

RSAキーフィンガープリントの「3番目」について:SSHは、これまでに見たことのないホストに接続すると警告を発します(man-in-the-middle攻撃の可能性があるため)。理論的には、フィンガープリントが一致することを確認する必要があります。ホストが本人であると主張しているのがホストであることを確認することであると予想されること。

これがお役に立てば幸いです=)

于 2012-10-20T13:18:03.640 に答える