zoukankan      html  css  js  c++  java
  • ssh批量互信脚本

    #!/bin/sh
    #date:2016-05-17
    #wrinte:lxh


    cat ./iplist.txt |grep -v "^$" >iplist.tmp
    iplist=./iplist.tmp
    nu=`cat $iplist |wc -l`

    if [ $nu -eq 0 ];then
    echo -e "33[31m列表为空!33[0m"
    exit
    fi

    #if [ $# -ne 3 ]; then
    # echo "Usage:"
    # echo "$0 remoteUser remotePassword hostsFile"
    # exit 1
    #fi

    SSH_DIR=~/.ssh
    SCRIPT_PREFIX=./tmp
    echo ===========================
    # 1. prepare directory .ssh
    mkdir $SSH_DIR
    chmod 700 $SSH_DIR

    # 2. generat ssh key
    TMP_SCRIPT=$SCRIPT_PREFIX.sh
    echo "#!/usr/bin/expect">$TMP_SCRIPT
    echo "spawn ssh-keygen -b 1024 -t rsa">>$TMP_SCRIPT
    echo "expect *key*">>$TMP_SCRIPT
    echo "send ">>$TMP_SCRIPT
    if [ -f $SSH_DIR/id_rsa ]; then
    echo "expect *verwrite*">>$TMP_SCRIPT
    echo "send y ">>$TMP_SCRIPT
    fi
    echo "expect *passphrase*">>$TMP_SCRIPT
    echo "send ">>$TMP_SCRIPT
    echo "expect *again:*">>$TMP_SCRIPT
    echo "send ">>$TMP_SCRIPT
    echo "interact">>$TMP_SCRIPT

    chmod +x $TMP_SCRIPT

    /usr/bin/expect $TMP_SCRIPT
    rm $TMP_SCRIPT

    # 3. generat file authorized_keys
    cat $SSH_DIR/id_rsa.pub>>$SSH_DIR/authorized_keys

    # 4. chmod 600 for file authorized_keys
    chmod 600 $SSH_DIR/authorized_keys
    echo ===========================
    # 5. copy all files to other hosts
    for i in `seq 1 $nu` ;do
    ip=`sed "$i"p -n $iplist |awk '{print $1}' |sed s/[[:space:]]//g`
    DEST_USER=`sed "$i"p -n $iplist |awk '{print $2}' |sed s/[[:space:]]//g`
    PASSWORD=`sed "$i"p -n $iplist |awk '{print $3}' |sed s/[[:space:]]//g`

    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 ">>$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."
    fi
    done
    rm $iplist
    echo done.

  • 相关阅读:
    Nginx会话保持之nginx-sticky-module模块
    企业级分布式应用服务EDAS _Dubbo商业版_微服务PaaS平台 【EDAS Serverless 运维 创业】
    git repository description
    运维成长
    jenkins+maven+tomcat集群发布
    Leaf——美团点评分布式ID生成系统 UUID & 类snowflake
    tomcat redis 集群 session共享
    JEECG & JEESite Tomcat集群 Session共享
    分布式Tomcat session会话Sticky Sessions问题
    Memcached 集群架构与memcached-session-manager
  • 原文地址:https://www.cnblogs.com/rohero/p/5523125.html
Copyright © 2011-2022 走看看