宝藏男孩路飞 2021-11-15 19:47 采纳率: 100%
浏览 35
已结题

11111111111111

#!/bin/bash

typeset cmd=""
typeset check_cmd=""
typeset kill_cmd=""
typeset ip=""
typeset user=""
typeset passwd=""
typeset tmp_passwd=""

function rsa_login
{
ip=$1
passwd=$2
user=$3

echo "[temp]" > ${dir}/.ssh/hosts
echo "${ip} ansible_ssh_user=${user} ansible_ssh_private_key_file=${dir}/.ssh/${ip}" > ${dir}/.ssh/hosts

/bin/expect
spawn ansible -i ${dir}/.ssh/hosts temp -m ping
expect {
"es/no" { send "yes\n"; exp_continue }
"
${ip}':" { send "${passwd}\n"; exp_continue }
}
EOF

return 0

}

function create_rsa
{
if [ ! -e "${dir}/.ssh" ];then
mkdir ${dir}/.ssh
fi

while read line
do
    if [ "X${line}" != "X" ];then
        ip=$(echo "${line}" | awk -F"," '{print $1}')
        user=$(echo "${line}" | awk -F"," '{print $2}')
        passwd=$(echo "${line}" | awk -F"," '{print $3}')
        tmp_passwd=$(echo "${line}" | awk -F"," '{print $4}')

        ./dra_scp1.exp "${ip}" "${user}" "${passwd}"
        if [ $? -ne 0 ];then
            echo "scp create_id_rsa.sh to ${ip} is failed."
            break;
        fi

        cmd="sh create_id_rsa.sh"
        ./dra.exp "${ip}" "${user}" "${passwd}" "${tmp_passwd}" "${cmd}" > tmp_file_excete

        cmd="ls -al ${ip} | wc -l"
        ./dra_check.exp "${ip}" "${user}" "${passwd}" "${cmd}" > tmp_file

        sed -i '/spawn/d' tmp_file
        sed -i '/password/d' tmp_file

        grep -w "0" tmp_file > /dev/null
        if [ $? -ne 0 ];then
            echo "${ip} : id_rsa is not create"
        else
            ./dra.exp "${ip}" "${user}" "${passwd}" "echo ${ip}.pub >> .ssh/authorized_keys" > tmp_file_excete

            ./dra_scp2.exp "${ip}" "${user}" "${passwd}" > tmp_file_excete

            ls -al ${dir}/.ssh/${ip} | wc -l > tmp_file
            grep -w "1" tmp_file > /dev/null
            if [ $? -ne 0 ];then
                echo "${ip} : id_rsa is not scp success"
            fi
        fi

        chmod 600 ${dir}/.ssh/${ip}

        rsa_login "${ip}" "${user}" "${tmp_passwd}"
        if [ $? -ne 0 ];then
            echo "login ${ip} is failed."
        fi
    fi
done

return 0

}

function stop_kill
{
ip=$1
user=$2
passwd=$3
check_cmd=$4
kill_cmd=$5

./dra.exp "${ip}" "${user}" "${tmp_passwd}" "${kill_cmd}" > tmp_file_excute

./dra.exp "${ip}" "${user}" "${tmp_passwd}" "${check_cmd}" > tmp_file

sed -i '/password/d' tmp_file

grep -w "0" tmp_file > /dev/null
if [ $? -ne 0 ];then
    echo "kill : ${ip} is failed."
    return 1
fi

return 0

}

function stop
{
while read line
do
if [ "X${line}" != "" ];then
ip=$(echo ${line} | awk -F"," '{print $1}')
user=$(echo ${line} | awk -F"," '{print $2}')
passwd=$(echo ${line} | awk -F"," '{print $3}')

        if [ "X${passwd}" == "Xuat_jboss_xhx7" ];then
            tmp_passwd="jbossxhx7"
            cmd="sh /opt/wildfly/bin/stop.sh"
            check_cmd="ps -ef | grep java | grep jboss | grep -v grep | wc -l"
            kill_cmd="ps -ef | grep java | grep jboss | grep -v grep | awk '{print $2}' | xargs -n1 -i kill -9 {}"
        elif [ "X${passwd}" == "Xuat_jboss" ]; then
            tmp_passwd="jbossuser"
            cmd="sh /opt/wildfly/bin/stop.sh"
            check_cmd="ps -ef | grep java | grep jboss | grep -v grep | wc -l"
            kill_cmd="ps -ef | grep java | grep jboss | grep -v grep | awk '{print $2}' | xargs -n1 -i kill -9 {}"
        elif [ "X${passwd}" == "Xuat_jboss_zf9" ]; then
            tmp_passwd="jbosszf9"
            cmd="sh /opt/wildfly/bin/stop.sh"
            check_cmd="ps -ef | grep java | gep jboss | grep -v grep | wc -l"
            kill_cmd="ps -ef | grep java | grep jboss | grep -v grep | awk '{print $2}' | xargs -n1 -i kill -9 {}"
        elif [ "X${passwd}" == "Xtomcat" ]; then
            tmp_passwd="tomcat"
            cmd="sh /opt/snbtmct/bin/snbtmtd stop"
            check_cmd="ps -ef | grep java | grep tomcat | grep -v grep | wc -l"
            kill_cmd="ps -ef | grep java | grep tomcat | grep -v grep | awk '{print $2}' | xargs -n1 -i kill -9 {}"
        else
            tmp_passwd="tomcatuser"
            cmd="sh /opt/tomcat/bin/shutdown.sh"
            check_cmd="ps -ef | grep java | grep tomcat | grep -v grep | wc -l"
            kill_cmd="ps -ef | grep java | grep tomcat | grep -v grep | awk '{print $2}' | xargs -n1 -i kill -9 {}"
        fi

        ./dra.exp "${ip}" "${user}" "${tmp_passwd}" "netstat -an | grep -E \"8080|9990\" | wc -l" > tmp_file
        
        sed -i '/spawn/d' tmp_file
        sed -i '/password/d' tmp_file

        grep -w "0" tmp_file > /dev/null
        if [ $? -ne 0 ];then
            ./dra.exp "${ip}" "${user}" "${tmp_passwd}" "${cmd}" > tmp_file_excute

            ./dra.exp "${ip}" "${user}" "${tmp_passwd}" "${check_cmd}" > tmp_file
  •           sed -i '/spawn/d' tmp_file
              sed -i '/password/d' tmp_file
    
              grep -w "0" tmp_file > /dev/null
              if [ $? -eq 0 ];then
                  echo "${ip} stop failed."
                  echo "Begin to kill : ${ip}"
                  stop_kill "${ip}" "${user}" "${tmp_passwd}" "${check_cmd}" "${kill_cmd}"
                  if [ $? -ne 0 ];then
                      echo "${ip} stop fialed."
                      return 1
                  else
                      echo "${ip} stop success"
                  fi
              fi
          fi
      fi
    

    done<iplist

    return 0
    }

maiin $@
if [ $? -ne 0 ];then
echo "script_excute_error"
exit 1
else
echo "script_excute_success"
exit 0
fi

function main
{
stop
if [ $? -ne 0 ];then
echo "stop is

  • 写回答

1条回答 默认 最新

  • qza2468 2021-11-15 20:15
    关注

    运行一下看看,我现在手上没有linux计算机

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月1日
  • 已采纳回答 9月1日
  • 修改了问题 6月2日
  • 创建了问题 11月15日

悬赏问题

  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)