美文网首页
第二十六节、运维脚本编写实例

第二十六节、运维脚本编写实例

作者: 妄语莫言 | 来源:发表于2017-12-20 22:06 被阅读0次
一、线上WEB服务器日志文件打包、

实验环境:日志文件所在目录/data/logs/linu_web
要求:创建自动日志打包脚本,并删除已打包的日志文件安

#在data目录下创建存放脚本用的sh目录
[root@localhost ~]# mkdir -p /data/sh
[root@localhost ~]# cd /data/sh/
#创建日志自动打包脚本
[root@localhost sh]# vim auto_log_tgz.sh 
#auto log packages
#by allan 2017/12/20
LOGS_DIR="/data/logs/linux_web/"                     #定义变量设定所在目录,用绝对路径
for i in `find $LOGS_DIR -name "access_*.log"`  #循环i依次获取目录下的文件
do
        FILES=`echo $i|xargs basename`              #利用basename获取文件名
#       FILES=`echo $i|awk -F "/" '{print $NF}'`    #利用awk切割获取文件名
        DIR=`echo $i|xargs dirname`                    #利用dirname获取每个文件所在的目录       
        cd $DIR                                                      #进入文件所在目录进行打包
        echo "The tar -czvf ${FILES}.tar.gz  ${FILES}"  #打印打包信息
        tar -czvf ${FILES}.tar.gz  ${FILES}             #打包文件
        rm -rf ${FILES}                                            #删除源文件
done
二、批量管理主机脚本

思路:首先新建一个ip列表文件记录需要管理的Ip地址,这样即使地址较多没有规律也能利用for循环依次进行批量操作管理如下

[root@localhost sh]# cat ip_list  #ip列表文件
192.168.15.10
192.168.15.11
192.168.15.12
192.168.15.14
192.168.15.15
192.168.15.16
192.168.15.17
192.168.15.18
192.168.15.19
[root@localhost sh]# vim ssh_ip.sh #创建脚本
#!/bin/bash
for i in `cat /data/sh/ip_list`
do
        echo -e "\033[31m-----------------\033[0m" #分界符,每循环依次代表一台主机操作完毕
        echo "ip=$i"  #模拟远程操作命令,按实际情况添加具体操作语句
done
[root@localhost sh]# sh ssh_ip.sh 
-----------------
ip=192.168.15.10
-----------------
ip=192.168.15.11
-----------------
ip=192.168.15.12
-----------------
ip=192.168.15.14
-----------------
ip=192.168.15.15
-----------------
ip=192.168.15.16
-----------------
ip=192.168.15.17
-----------------
ip=192.168.15.18
-----------------
ip=192.168.15.19

下面是远程管理脚本实例,参数是命令的话就在全部脚本执行,是IP和命令就只在该IP的主机上执行

#!/bin/bash
#auto exec remote server CMD
#2016 www.jfedu.net
#################           #以下部分是变量赋值区
CMD=$*                               #脚本跟的所有参数赋值给变量CMD
FILES="/data/sh/ip_list.txt"  #ip列表的绝对路径赋值给变量FILES
#################          #判断如果参数为空打印提示信息并退出
if [ -z "$CMD" ];then             
    echo -e  "\033[32mUsage:{Please enter $0 CMD df -h|ifconfig eth0}\033[0m"
    exit
fi
############   #第一参数的.替换成换行符\n,然后统计是否有4位来判定$1参数是不是IP
NUM=`echo $1|sed 's/\./\n/g'|wc -l`         #判断第一个参数是否为IP
if [ $NUM == "4" ];then
    CMD=`echo $CMD|sed "s/$1//g"`  #重新给CMD赋值,去除$1IP地址剩余的命令 
    echo -e  "\033[32mssh -l root $1 $CMD\033[0m"
    ssh -l root $1 "$CMD"
    exit
fi
############             #以下部分是循环列表中的主机执行操作
for i in `cat $FILES`

do
    echo -e "\033[32m---------------------\033[0m"
    echo -e  "\033[32mssh -l root $i $CMD\033[0m"
    ssh -l root $i "$CMD"

done

相关文章

网友评论

      本文标题:第二十六节、运维脚本编写实例

      本文链接:https://www.haomeiwen.com/subject/wiegwxtx.html