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