hadoop批量创建互信脚本

来源:互联网 发布:微信网络错误 编辑:程序博客网 时间:2024/05/20 01:09

1、hadoop安装的用户名和密码要统一

2、将IP地址写入一个文件:

[root@vmhost hadoop]# cat ip.txt 192.168.1.101192.168.1.102192.168.1.103

3、互信脚本:

#!/bin/shDEST_USER=$1PASSWORD=$2HOSTS_FILE=$3if [ $# -ne 3 ]; then    echo "Usage:"    echo "$0 remoteUser remotePassword hostsFile"    exit 1fiSSH_DIR=~/.sshSCRIPT_PREFIX=./tmpecho ===========================# 1. prepare  directory .sshmkdir $SSH_DIRchmod 700 $SSH_DIR# 2. generat ssh keyTMP_SCRIPT=$SCRIPT_PREFIX.shecho  "#!/usr/bin/expect">$TMP_SCRIPTecho  "spawn ssh-keygen -b 1024 -t rsa">>$TMP_SCRIPTecho  "expect *key*">>$TMP_SCRIPTecho  "send \r">>$TMP_SCRIPTif [ -f $SSH_DIR/id_rsa ]; then    echo  "expect *verwrite*">>$TMP_SCRIPT    echo  "send y\r">>$TMP_SCRIPTfiecho  "expect *passphrase*">>$TMP_SCRIPTecho  "send \r">>$TMP_SCRIPTecho  "expect *again:">>$TMP_SCRIPTecho  "send \r">>$TMP_SCRIPTecho  "interact">>$TMP_SCRIPTchmod +x $TMP_SCRIPT/usr/bin/expect $TMP_SCRIPTrm $TMP_SCRIPT# 3. generat file authorized_keyscat $SSH_DIR/id_rsa.pub>>$SSH_DIR/authorized_keys# 4. chmod 600 for file authorized_keyschmod 600 $SSH_DIR/authorized_keysecho ===========================# 5. copy all files to other hostsfor ip in $(cat $HOSTS_FILE)  do    if [ "x$ip" != "x" ]; then        echo -------------------------        TMP_SCRIPT=${SCRIPT_PREFIX}.$ip.sh        # check known_hosts        val=`ssh-keygen -F $ip`        if [ "x$val" == "x" ]; then            echo "$ip not in $SSH_DIR/known_hosts, need to add"            val=`ssh-keyscan $ip 2>/dev/null`            if [ "x$val" == "x" ]; then                echo "ssh-keyscan $ip failed!"            else                echo $val>>$SSH_DIR/known_hosts            fi        fi        echo "copy $SSH_DIR to $ip"                        echo  "#!/usr/bin/expect">$TMP_SCRIPT        echo  "spawn scp -r  $SSH_DIR $DEST_USER@$ip:~/">>$TMP_SCRIPT        echo  "expect *assword*">>$TMP_SCRIPT        echo  "send $PASSWORD\r">>$TMP_SCRIPT        echo  "interact">>$TMP_SCRIPT                chmod +x $TMP_SCRIPT        #echo "/usr/bin/expect $TMP_SCRIPT" >$TMP_SCRIPT.do        #sh $TMP_SCRIPT.do&            /usr/bin/expect $TMP_SCRIPT        rm $TMP_SCRIPT        echo "copy done."                    fidoneecho done.

4、执行脚本:chmod +x auto_ssh.sh && ./auto_ssh.sh username passwd

1 0