オリジナルリンク:ITを予約- itbook.com
目的
クラスタ間のワンクリック設定は、パスワードなしのログインノード。すべてのノードでパスワードが同じであることを提供!
実現
私が来る〜/ nonpassword
スクリプトの内容:
#!/ binに/ のsh #すべてのノード名 NODES = () #すべてのノードのパスワード PASS = $ 1 ######検証引数長 nodes_length = $(($# - 1 )) であれば [[SS -gt 0 ] ]; その後、 エコー 「your_passwordに、ノード1:少なくとも二つのパラメータ、例えば出口」 の出口を2 Fiが ######すべてのノード名を取得 私は = 0の ためノードで * $を 行う 場合は、[[私は-gt 0 ;]] その後、 J = $((I -1 )) [J] NODES = $ノード Fiを提供して みましょう私は ++ 完了 MASTERを = ` ホスト名は` yumを -y インストール期待 ######################## ########### 関数ssh_cmd0(){ user_and_host = $ 1 パスワード = $ 2 CMD = $ 3 は/ usr / binが/期待<< - EOFが タイムアウト設定5 産卵のssh $ user_and_hostを 期待{ " はい/ノー「 {送信」はい\ rを"; exp_continue} " パスワード" {送信" $パスワード\ R " } } 期待する" #" 送信" $ CMD \ R " 期待する" #" 出口0 対話 EOF } 関数は、(){ssh_cmd ssh_cmd0 " $ 1 " " $ 2 " 「エコー'start_mark'; $ 3;エコー'end_mark' " | sedの -n ' / ^ start_mark /、/ ^ end_mark / Pを' | グリップ-Ev ' (^ start_mark | ^ end_mark)' } ######マスターにすべてのノードのauthorized_keysに、そしてコレクションを作成します。 エコー "" >〜/。SSH / authorized_keysに エコー "" >〜/。SSH / known_hostsファイル のための S に$ {NODES [@]は} 行う エコー -eを" \ n始動::スレーブノードは、($ S)id_rsa.pubを生成し、マスタノード($ MASTER)を送信する" ssh_cmd " $ S @ルートを" " $ PASS " " RM -fの〜/ .ssh / id_rsaと;のssh-keygenは-t rsaの-P '' -f〜/。 ssh_cmd " ルート@ $ S " " $ PASS " " 猫の〜/ .ssh / id_rsa.pub " >>〜/。SSH / authorized_keysに エコー " DONE ::スレーブ・ノードは、($ s)は($ MASTER)マスターノードにid_rsa.pubと送信を生成し、" 行って コピーがすべてのノードにauthorized_keysにしcollectioned ######。 エコー -e " \ nは######################### ALLノードへのauthorized_keysを送る############## ########### " のための sの中に$ {NODES [@]} やる エコー -e "\ n始動::マスターノード($ MASTER)($ s)はスレーブノードにALL id_rsa.pub(authorized_keysの)を送るには、 " ssh_cmd " ルート@ $ S " " $ PASS " " エコー'`猫の〜/ .ssh / authorized_keys`' >の〜/ .ssh / authorized_keysに" エコー -e " DONE ::マスターノード($ MASTER)スレーブノード($ s)は\ nにALL id_rsa.pub(authorized_keysの)を送る" 済 エコー " コンプリート!"
chomd + X〜/ nonpassword
使い方
スクリプトの使用法:
〜/ nonpassword <パスワード> <ノード1> <ノード2> <ノード...>
パスワード:すべてのノードは同じパスワードでなければなりません。
具体用例:
〜/ nonpassword ' mypasswordという'ノード1ノード2ノード3
成功した実行した後、我々はその後、ノード1、node2.node3パスワードなしのログイン、および、そのような搭乗してきたノード1の間で、その後、node1で直接コマンドを実行することができ、ノード2にログオンすることができます。
sshのノード2
それはすることができます。