|
- 需求分析:有些小项目的公司一个服务器上的nginx上配置了很多个域名站点,你会一个个配置文件去查看有哪些站点,有哪些域名,这些是否域名配置了负载均衡?那个域名解析映射的是本机。
- 为此,我写了个脚本用了批量服务器整理
- 技能演练提升,shell数组的循环,awk gsub函数的应用,自动化需求的发现与体验
话不多少,下面是鄙人的代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| #!/bin/bash
EXEC=nginx
LOCAL_IPS=`ifconfig | grep "t a" | awk '{print $2}'| awk -F":" '{print $2}' | awk BEGIN{RS=EOF}'{if($NR!=NR){gsub(/\n/," ")};print}'`
which $EXEC
if [ ! $? -eq 0 ];then
echo -e "\[033m 请确认是否安装了$EXEC\[0m";
exit 1;
fi
EXEC_BIN=`which $EXEC`
BASE_HOME=`ls -l $EXEC_BIN | awk '{print $NF}'`
BIN_HOME=`echo ${BASE_HOME%%$EXEC}`
CONF_HOME=`cd $BIN_HOME && cd .. && pwd`/conf
server_nums=`grep -ir "server_name" $CONF_HOME | awk -F"server_name" '{print $2}' | uniq | awk BEGIN{RS=EOF}'{gsub(/\n/," ");print}' | awk '{gsub(";"," ");print}' | awk '{print NF}' | uniq`
server_names=`grep -ir "server_name" $CONF_HOME | awk -F"server_name" '{print $2}' | uniq | awk BEGIN{RS=EOF}'{gsub(/\n/," ");print}' | awk '{gsub(";"," ");print}'`
echo "一共发现$server_nums个域名"
### 将域名写入临时文件 ##
rm -rf /tmp/server_names.txt
for server in $server_names
do
if [[ $server =~ "letiku.net" ]];then
for ip in ${LOCAL_IPS[@]}
do
ping_rs=`ping -c 1 $server | sed -n '1p' | grep "$ip"`
#echo $ping_rs
if [ ! -z "$ping_rs" ];then
echo $server >> /tmp/server_names.txt
fi
done
fi
done
local_server_num=`cat /tmp/server_names.txt | wc -l`
echo "属于本机的vhost一共有$local_server_num个"
|
4.脚本运行结果截图:
输出文件结果截图如下:
算是小白我的成长道路吧!!有不对的地方还请指教!!
写完这个脚本,我立刻想起了写ping某个网段主机存活状态的脚本,下次我再用shell和python多线程分别实现!
|
|