Chinaunix首页 | 论坛 | 博客
  • 博客访问: 70844
  • 博文数量: 5
  • 博客积分: 1577
  • 博客等级: 上尉
  • 技术积分: 89
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-01 20:03
文章分类

全部博文(5)

文章存档

2014年(1)

2013年(3)

2010年(1)

分类: LINUX

2013-08-30 18:23:13

在自动化测试,或者Oracle RAC安装过程中,需要配置主机之间SSH 无密码访问,当有多台主机时,配置起来很麻烦,网上的很多类似脚本拿到本机有问题,所以自己写了一个:
   

  1. #!/bin/bash

  2. NUM_OF_NODES=
  3. NODE1=""
  4. NODE2=""
  5. NODE3=""
  6. NODE4=""
  7. NODE5=""

  8. USER=root
  9. EXPECT=/usr/bin/expect
  10. PASSWD=""
  11. #USER_PROMPT="*$ "
  12. USER_PROMPT="*# "

  13. if [ "x${NODE1}" == "x" -o "x${USER}" == "x" -o "x${PASSWD}" == "x" ]; then
  14.     echo ""
  15.     echo "Please set the NODE INFO, USER and PASSWD"
  16.     echo "then $0 to start..."
  17.     exit 1
  18. fi

  19. declare -i l_i=1
  20. while [ $l_i -le $NUM_OF_NODES ]
  21. do
  22.     eval l_current_node=\$NODE$l_i
  23.     
  24.     $EXPECT <<EOF
  25.     spawn ssh $USER@$l_current_node
  26.     expect "*(yes/no)?*" {
  27.         send -- "yes\r"
  28.         expect "*?assword:*"
  29.         send -- "$PASSWD\r"
  30.     } "*?assword:*" {send -- "$PASSWD\r"}
  31.     expect "$USER_PROMPT"
  32.     send -- "ssh-keygen -t rsa -q -f ~/.ssh/id_rsa -P '' \r"
  33.     expect "*Overwrite (yes/no)? " {
  34.         send -- "yes\r"
  35.     } "$USER_PROMPT" {send -- "\r"}
  36.     expect "$USER_PROMPT"
  37.     send -- "cat ~/.ssh/id_rsa.pub | ssh $USER@$NODE1 'cat - >> ~/.ssh/authorized_keys' \r"
  38.     expect "*(yes/no)?*" {
  39.         send -- "yes\r"
  40.         expect "*?assword:*"
  41.         send -- "$PASSWD\r"
  42.     } "*?assword:*" {send -- "$PASSWD\r"}
  43.     expect "$USER_PROMPT"
  44.     send -- "exit\r"
  45. EOF
  46.     ((l_i++))
  47. done

  48. declare -i l_n=1
  49. while [ $l_n -le $NUM_OF_NODES ]
  50. do
  51.     eval l_current_node=\$NODE$l_n
  52.     $EXPECT <<EOF

  53.     spawn ssh $USER@$NODE1
  54.     expect "*?assword:*" {
  55.         send -- "$PASSWD\r"
  56.         expect "$USER_PROMPT"
  57.     } "$USER_PROMPT" {send -- "scp ~/.ssh/authorized_keys $l_current_node:~/.ssh/ \r"}
  58.     expect "*?assword:*"
  59.     send -- "$PASSWD\r"
  60.     expect "$USER_PROMPT"
  61.     send -- "exit\r"
  62. EOF
  63.     ((l_n++))
  64. done

阅读(4821) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~