shell脚本
罗显明-技术个人博客
干运维这么多年,总感觉自己在努力,但是却没有什么成就感,从昨天开始,慢慢写写博客,做一些沉淀,让浮躁的内心,安静下来,努力做好技术,其他的交给天命
致自己:
我见过一个牛人,公司的内部的从自动化代码构建、打包成镜像,自动发布,elasticsearch性能优化、nginx优化,mysql、oracle性能优化,linux服务器性能优化、监控各种技术用的得心顺手,开发对他特别的尊敬,说明开发和运维之间,并不是单方面的鄙视,而是技术为王,愿自己可以成为那个被仰望的人
展开
-
shell脚本:nginx日志按照月份进行进行归档并修改日志名称
上个博文中,我对nginx日志进行了重命名和重新生成,这样的好处是便于运维人员查阅,防止nginx日志越滚越大导致查阅困难本篇博文,对nginx日志进行了归档,按照月份进行归档, 更方便于查阅和美观Nginx_dir=/usr/local/nginx/logs/Yesterday=$(date -d "yesterday" +%F)Month_time=$(date +%Y-%m)Nginx_log_name="hbxt_"#创建年月份目录 例如:2020-07if [ ! -d $原创 2020-07-31 09:51:41 · 568 阅读 · 0 评论 -
shell脚本:mysql数据库分库分表备份
背景:作为运维,备份及其重要,在进行删改操作,无论是应用系统还是数据库,还是系统文件,备份是第一步,警惕一顿操作猛如虎的行为备份:我可以根据库备份,也可以根据库中的表来备份。所以写了2个脚本,备份的粒度不一样,就可以多方面去实现我们想要的恢复效果一、分库备份USER=rootPASSWD=123456HOST=localhostDATE=$(date +%F-%H-%M-%S)BACK_DIR=/data/[email protected]#获...原创 2020-07-30 17:04:57 · 242 阅读 · 0 评论 -
shell脚本:mysql主从状态监控脚本
处理思路:1、show slave status\G获取slave_IO_Running 和slave_Sql_running的状态,当两者都为yes,说明从机去主机获取binlog日志,以及从机执行relay日志状态都是ok的,说明:主从状态连接顺畅2、mysql -e ''指令, 可以去执行非交互状态的的指令mysql主从原理:1、master服务器将数据的改变的执行指令记录到二进制binlog日志中,只要master上的数据发生改变(增删改权限赋予等),就会进行记录2、slave...原创 2020-07-29 15:28:32 · 660 阅读 · 0 评论 -
shell脚本:openresty安装配置+WAF介绍
OpenResty是一个结合了 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。OpenResty通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团队自主开发),从而将 Nginx 有效地变成一个强大的通用 Web 应用平台。这样,Web 开发人员和系统工程师可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua原创 2020-07-29 10:52:57 · 391 阅读 · 0 评论 -
shell脚本:expect使用案例
expect是linux上的一种人机交互的一套工具,它里面的命令能完成数据的接受、发送以及新进程的启动参数:1、spawn:新建一个进程,这个进程的交互由expect控制2、expect等待接收进程返回的字符串,直到超时时间,根据规则决定下一步操作3、send发送字符串给expect控制的进程去执行4、set设置变量为某个值5、exp_continue:重新执行expect命令分支6、expect eof 等待spawn进程结束后退出信号eofshell 中套用expect脚本:.原创 2020-07-27 17:01:19 · 1335 阅读 · 0 评论 -
shell脚本:批量检测web服务状态
背景:运维人员在客户发现网站异常之前处理掉异常方式:正常有很多种方式,通过判断端口、进程、模拟用户访问等常用的方式是通过模拟客户端进行访问的形式Url_list="http://www.baidu.com http://www.sina.com http://www.nishishazi.com"Mail_address="[email protected]"for url in $Url_listdo Fail_count=0 for ((i=0;i<原创 2020-07-27 14:35:44 · 405 阅读 · 0 评论 -
shell脚本:监控多台主机磁盘使用率并进行预警
说明:当有多台主机时,需要对磁盘分区的使用量做预警,防止因为磁盘使用量满了导致服务停用备注:在执行脚本前,需要进行ssh免密交互的操作,也可以使用脚本来实现,参见我上一个博客#说明:hosts.info是一个主机ip,ssh连接用户,ssh端口的三个字段的文件,ip停用可以对文件进行注释Color="echo -e \033[31m"End='\033[0m'#如果不存在该主机清单,就退出脚本Host_file=/scripts/hosts.infoif [ ! -f $..原创 2020-07-24 17:16:59 · 576 阅读 · 0 评论 -
shell脚本:流量监控的三种方法
说明:监控服务器流量的方法,有很多种 1)iftop工具 2)ifconfig中会显示发送总流量(TX)和接收总流量(RX) 3)通过查看/proc/net/dev可以获取到流量每种方法大同小异,ifconfig大家都很熟悉,这里不做介绍(思路和方法三一致,都是通过计算差值,取得平均值),简单介绍下iftop流量监控工具和方法三脚本监控 iftop是一个工具,如果没有安装下 yum install iftop -yiftop界面关键字说明: TX:发...原创 2020-07-24 10:10:18 · 901 阅读 · 0 评论 -
shell脚本:免密交互式生成ssh秘钥并把公钥发送给其他机器
应用场景:我们使用ansible自动化进行发布,ssh连接需要验证,通过该脚本可以实现非交互式的产生秘钥,并把公钥发送给其他机器,直接实现免密交互rpm -q sshpass &>/dev/null || yum install sshpass -y[ -f /root/.ssh/id_rsa ] || ssh-keygen -f /root/.ssh/id_rsa -P '' -qexport SSHPASS=123456while read ipdo sshpass .原创 2020-07-23 14:32:41 · 1155 阅读 · 0 评论 -
centos7 系统初始化脚本
背景:为了保证服务器安装,在进行系统安装都是采取最小安装,在业务部署之前,需要对服务器的系统进行初始化,这里例举需要优化的参考项,仅供参考一、ssh设置二、时间同步设置三、最大并发数设置(打开的最大文件数)四、字符集设置五、selinux设置六、防火墙设置七、 内核优化八、网络yum源配置九、常用命令下载配置这里仅仅配置了常用的优化项,具体根据业务需求。比如开机自启动项等也可以进行调整...原创 2020-07-22 14:26:28 · 548 阅读 · 0 评论 -
shell脚本之系统资源监控:监控项:cpu ,磁盘分区,内存,tcp连接等选项
说明:通过菜单,写出用户的想要了解的资源选项,然后做展示Color='\033[31m'End='\033[0m'echo -e "####${Color}Menu${End}########"cat <<eof1.memory2.cpu3.disk4.neteofread -p "which one you want: " Wantechofunction memory_use { Free=`cat /proc/meminfo |awk -F " ...原创 2020-07-21 18:05:11 · 163 阅读 · 0 评论 -
nginx 日志切割 脚本
一、需求背景:如果日志不做切割,会导致日志堆积在access.log文件中,长时间会导致日志文件越滚越大,后续排查问题查看日志文件会是一个噩梦(我见过没有做做切割导致日志文件5G以上的,打开文件会读入到内存,系统直接卡顿无法显示)二、思路: 通过定时任务:每晚凌晨0点,对access.log文件进行改名为当天日期,然后重载nginx生成新的access.log文件三、shell脚本实现过程#/bin/bashNginx_log_dir=/usr/local/nginx/logs/..原创 2020-07-01 11:12:20 · 171 阅读 · 0 评论 -
shell脚本案例:统计文件大小
应用常用:统计系统中以.sh结尾的文件大小Size=0Total=$(find / -name "*.sh" -exec ls -l {} \;| cut -d " " -f5 )for i in $Totaldo let Size+=$idoneecho "total size:`echo "scale=2;$Size/1024"|bc` M"备注:小数计算时,可以通过bc计算器来处理,通过指定小数位数,得到想要的精度...原创 2020-06-18 17:39:08 · 1317 阅读 · 0 评论 -
shell 脚本-批量创建用户
使用场景:新增工作人员,根据用户的名单,来批量创建用户#用户名单文件 格式为 name passwdDirectory="/tmp/user.txt"#判断用户名单是否存在,不存在则提示并退出if [ ! -f "$Directory" ];then echo "用户名单错误,请确认" exit 1fi#循环读入文件,根据文件提供的用户和用户密码来创建用户,当用户存在则提示已经存在且不做任何处理while read linedo User=`echo $line |awk '原创 2020-06-17 15:59:39 · 515 阅读 · 0 评论 -
shell脚本之内存监控
一、获取内存的三种方法 1、使用free 使用常规方法:free -m |grep -i "mem" |tr -s " " |cut -d " " -f2 通过awk:free -m |awk -F" +" 'NR==2{print $2}' 2、使用top获取 top -n1 |grep -i "buff" |tr -s " " |cut -d " " -f4 3、通过/proc/meminfo ...原创 2020-06-16 15:00:03 · 277 阅读 · 0 评论 -
shell 脚本 :shell中 颜色显示
说明:shell中颜色显示常用数字来进行表示:格式:echo -e "\033[31m 内容 \033[0m"其中:\033[数字代表显示的颜色,033[0m表示取消常用颜色说明如下:31 红色32 绿色33 黄色34 蓝色35 紫色37 白色shell 案例:#judge parameter numberfunction echo_color() { if [ $# -ne 2 ];then ...原创 2020-05-18 10:51:15 · 2412 阅读 · 0 评论 -
shell 脚本案例:要求输入五个数,统计五个数的和,最小值、最大值
min=0max=100num=0sum=0while [ $num -lt 5 ]do read -p 'pls enter a int number:' a expr $a + 1 &>/dev/null if [ $? -ne 0 ];then echo "your enter must be int" exit 1 fi if .原创 2020-05-18 10:22:27 · 6627 阅读 · 0 评论 -
shell脚本之检查web服务状态并邮件预警
背景:运维人员在客户发现网站异常之前处理掉异常,这很决定该公司在客户心中的实力方式:正常有很多种方式,通过判断端口、进程、模拟用户访问等这里使用的是模拟用户访问url=www.baidu.comcode=curl -s -o /dev/null -w %{http_code} $urlif [ “code"=="200"−o"code" == "200" -o "code"=="200"...原创 2020-04-01 19:30:50 · 278 阅读 · 0 评论 -
shell脚本之mysql数据库备份
背景:作为运维,备份及其重要,在进行删改操作,无论是应用系统还是数据库,还是系统文件,备份是第一步,切记一顿操作猛如虎的行为#定义数组存储数据库名database=(discuz mysql zabbix)#定义备份目录backdir=/data/back#判断备份目录是否存在[ ! -d $backdir ] && mkdir -p $backdir#循环取备份的数...原创 2020-04-01 19:14:54 · 98 阅读 · 0 评论 -
企业级shell脚本之二:批量创建用户
背景:生产中当系统管理人员比较多,存在批量创建用户的情况脚本比较简单:代码如下:#!/bin/bashecho “---------we will batch creating user-------”read -p "pls enter your prefix and number: " prefix numif [ -z “prefix"−o−z"prefix" -o -z "pr...原创 2020-04-01 00:29:33 · 145 阅读 · 0 评论 -
企业级shell脚本之一:统计前10 占用内存和cpu资源的进程
背景:生产环境中我们经常要分析系统资源的使用情况,所以分析内存和cpu的消耗情况是很有必要的命令说明:ps 命令查看进程参数:-e 显示所有进程-o 自定义显示的字段–sort 排序比如:我们要查看系统cpu消耗前10的进程:ps aux --sort=-pcpu | head -10整体脚本比较简单:如下:![#!/bin/bashecho “--...原创 2020-03-31 23:58:38 · 854 阅读 · 0 评论