日常运维脚本

1.免密脚本

功能介绍:实现了多台主机之间的免密登录配置

#!/bin/bash

#需要免密的用户和密码 

yonghu=mysql 

password=22222 

#需要免密的主机

ip_list=("10.18.1.15"  "10.18.1.16"  "10.18.1.17")

i=0 

#第6行:需要免密的ip 

for ip in ${ip_list[@]};

do

sshpass -p $password  ssh  -o StrictHostKeyChecking=no  $yonghu@$ip  "ssh-keygen  -t rsa  -f `pwd`/.ssh/id_rsa  -P '' -q"

if [ $i -eq 0 ]; then

sshpass -p $password  ssh  -o StrictHostKeyChecking=no  $yonghu@$ip  "cat `pwd`/.ssh/id_rsa.pub" >authorized_keys

sshpass -p $password  ssh  -o StrictHostKeyChecking=no  $yonghu@$ip  ls -l `pwd`/.ssh/id_rsa.pub|awk '{print $9}'|awk -F 'id' '{print $1}' >mulu.txt

else

sshpass -p $password  ssh  -o StrictHostKeyChecking=no  $yonghu@$ip  cat `pwd`/.ssh/id_rsa.pub  >>authorized_keys

fi

let i+=1

done

chmod 600 authorized_keys

for ip in  ${ip_list[@]};

do

sshpass -p $password  scp  -o StrictHostKeyChecking=no authorized_keys  $yonghu@$ip:`cat mulu.txt`

done

rm -f authorized_keys  mulu.txt tmp.txt

2.端口测试脚本

功能介绍:实现了测试端口启动和关闭;业务主机到管理平台主机双向的端口测试;

#!/bin/bash

#脚本使用说明:

#sh  2-check_port.sh  qd  业务主机启动端口,业务主机中执行     

#sh  2-check_port.sh  am  业务主机探测到dmp主机端口,业务主机中执行

#sh  2-check_port.sh  aa  业务主机探测业务主机端口,业务主机中执行

#sh  2-check_port.sh  ma  dmp主机探测业务主机端口,dmp主机中执行

#sh  2-check_port.sh  gb  业务主机关闭nc启动的端口,业务主机中执行

#如下参数需要修改

#业务主机IP

a_ip=("192.168.0.5"  "192.168.0.6" )

#业务主机IP网段,写的越精确越好

yewuwangduan=192.168.0

#dmp主机的网段,信息港为10.168.5  呼池为10.168.9  宁波为10.168.10    哈池为10.168.11  郑州为10.168.12

dmpwangduan=10.168.5

#如下参数无需修改

#所有资源池dmp主机列表

xxg_ip=("10.168.5.2"        "10.168.5.3"  "10.168.5.4" )

huc_ip=("10.168.9.92"      "10.168.9.93"  "10.168.9.94" )

ningb_ip=("10.168.10.162"  "10.168.10.163"  "10.168.10.165")

hac_ip=("10.168.11.147"  "10.168.11.167"  "10.168.11.176" )

zz_ip=("10.168.12.71"  "10.168.12.73"  "10.168.12.85" )

#所有需要测试的端口

am_port=("5700" "5701"  "5742" "5778" "5721" )

aa_port=("5710"  "5722"  "3306"  "5741"  "5703")

ma_port=("22"  "3306"  "5756"  "5701"  "5703")

asuoyou_port=("5810"  "522"    "5801"  "5703" "22"  "3306"  "5716"    )

#获取本机IP

zhujiip=`ifconfig | grep  $yewuwangduan | awk '{print $2}'`

#安装nc  telnet命令

yum  install -y  nc telnet >/dev/null  2>&1

#业务主机到dmp主机端口测试

yewu_dmp_port () {

if test $dmpwangduan =  "10.168.5"

then

echo  "探测本主机到---信息港---dmp主机端口是否畅通,10.168.5.2  10.168.5.3  10.168.5.4"

for ip in  ${xxg_ip[@]};

do

  for port in  ${am_port[@]};

      do

     nc  -vz  $ip  $port -w 1  1>tmpzss.txt  2>&1

hangshu=`cat tmpzss.txt|wc -l `

        if [ $hangshu -eq 2 ];

then

    echo "此主机$zhujiip到$ip的$port端口不通"

else

    echo "此主机$zhujiip到$ip的$port端口Ok"

fi

      done

    echo  ""

done

fi

if test $dmpwangduan =  "10.168.11"

then

echo  "探测本主机到---哈池---dmp主机端口是否畅通,10.168.11.147  10.186.61.125 10.168.11.167  10.168.11.176"

for ip in  ${hac_ip[@]};

do

  for port in  ${am_port[@]};

      do

           nc  -vz  $ip  $port -w 1  1>tmpzss.txt  2>&1

           hangshu=`cat tmpzss.txt|wc -l `

        if [ $hangshu -eq 2 ];then

echo "此主机$zhujiip到$ip的$port端口不通"

else

    echo "此主机$zhujiip到$ip的$port端口Ok"

fi

      done

    echo  ""

done

fi

if test $dmpwangduan =  "10.168.9"

then

echo  "nc探测本主机到---呼池---dmp主机端口是否畅通,10.168.9.92  10.186.61.125 10.168.9.93  10.168.9.94"

for ip in  ${huc_ip[@]};

do

  for port in  ${am_port[@]};

      do

      nc  -vz  $ip  $port -w 1  1>tmpzss.txt  2>&1

hangshu=`cat tmpzss.txt|wc -l `

        if [ $hangshu -eq 2 ];then

echo "此主机$zhujiip到$ip的$port端口不通"

else

    echo "此主机$zhujiip到$ip的$port端口Ok"

fi

      done

    echo  ""

done

fi

if test $dmpwangduan =  "10.168.10"

then

echo  "nc探测本主机到---宁波---dmp主机端口是否畅通,10.168.10.162  10.168.10.163  10.168.10.165"

for ip in  ${ningb_ip[@]};

do

  for port in  ${am_port[@]};

      do

  nc  -vz  $ip  $port -w 1  1>tmpzss.txt  2>&1

hangshu=`cat tmpzss.txt|wc -l `

        if [ $hangshu -eq 2 ];then

echo "此主机$zhujiip到$ip的$port端口不通"

else

    echo "此主机$zhujiip到$ip的$port端口Ok"

fi

      done

    echo  ""

done

fi

if test $dmpwangduan =  "10.168.12"

then

echo  "nc探测本主机到---郑州---dmp主机端口是否畅通,10.168.12.71  10.168.12.73  10.168.12.85"

for ip in  ${zz_ip[@]};

do

  for port in  ${am_port[@]};

      do

        nc  -vz  $ip  $port -w 1  1>tmpzss.txt  2>&1

hangshu=`cat tmpzss.txt|wc -l `

        if [ $hangshu -eq 2 ];then

echo "此主机$zhujiip到$ip的$port端口不通"

else

    echo "此主机$zhujiip到$ip的$port端口Ok"

fi

      done

    echo  ""

done

fi

}

yewu_qidong_port () {

echo "业务主机启动端口中"

  echo $zhujiip

  for ip in  ${a_ip[@]};

  do

      if  test  ${zhujiip} = $ip

        then

          for port in  ${asuoyou_port[@]};

            do

        nc  -lk  $port  >/dev/null  2>/dev/null 

            done

      fi

  done

echo "检测端口是否启动成功:"

ps -ef | grep -v grep | grep "nc -lk"

}

yewu_yewu_port () {

echo "业务主机探测业务主机端口"

for ip in  ${a_ip[@]};

do

      if  test  ${zhujiip} = $ip

      then

  echo  ""

  else       

            for port in  ${aa_port[@]};

do

  nc -vz $ip  $port  2>tmpzss.txt 

  hangshu=`cat tmpzss.txt|wc -l `

              if [ $hangshu -eq 2 ];

  then

      echo "此主机$zhujiip到$ip的$port端口:No"

      else

      echo "此主机$zhujiip到$ip的$port端口:Ok"

      fi

done     

      fi

  echo ""

  done

}

guanbi_port () {

#关闭端口

ps -ef | grep -v grep | grep "nc -lk" | awk '{print $2}' | xargs kill -9  {} >/dev/null 2>/dev/null

echo "查看是否还存在nc 进程:ps -ef | grep -v grep | grep \"nc -lk\""

ps -ef | grep -v grep | grep "nc -lk"

}

dmp_yewu_port () {

if test $dmpwangduan =  "10.168.5"

then

  echo "---信息港---dmp主机到业务主机端口和ping测试"

fi

if test $dmpwangduan =  "10.168.9"

then

  echo "---呼池---dmp主机到业务主机端口和ping测试"

fi

if test $dmpwangduan =  "10.168.10"

then

  echo "---宁波---dmp主机到业务主机端口和ping测试"

fi

for ip in  ${a_ip[@]};

    do             

              ping -c 1 $ip  >/dev/null  2>/dev/null

  if [ $? -eq 0 ];

  then

    echo "此dmp主机$zhujiip到业务主机$ip能否ping通:Ok"

  else

    echo "此dmp主机$zhujiip到业务主机$ip能否ping通:no"

  fi

  for port in  ${ma_port[@]};

    do

      nc -vz $ip  $port  2>tmpzss.txt 

      hangshu=`cat tmpzss.txt|wc -l `

                  if [ $hangshu -eq 2 ];

      then

          echo "此dmp主机$zhujiip到业务主机$ip的$port端口是否畅通:no"

          else

          echo "此dmp主机$zhujiip到业务主机$ip的$port端口是否畅通:Ok"

          fi

    done     

      echo ""

    done

}

if [ $# == 0 ];

then

    echo "没有带参数,退出脚本";

exit

fi

if test $1  = am

then

  yewu_dmp_port

fi

if test $1  = ma

then

  dmp_yewu_port

fi

if test $1  = aa

then

  yewu_yewu_port

fi

if test $1  = qd

then

  yewu_qidong_port

fi

if test $1  = gb

then

  guanbi_port

fi

rm -f  tmpzss.txt

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容