Shell之企业实际工作案例

案例一:

监控web站点目录(/var/html/www)下所有文件是否被恶意篡改(文件内容被改了),如果有就打印改动的文件名(发邮件),定时任务每3分钟执行一次

监控脚本内容:

[[email protected] scripts]# cat web-file.sh
#!/bin/bash
##############################################################
# File Name: web-file.sh
# Version: V1.0
# Author: da ya
# Organization: [email protected]
# Created Time : 2018
# Description:
##############################################################
Email='[email protected]'
Find_file='find /tmp/ -type f'
Dir='/opt/web_file.log'
Old_file=(`cat $Dir|sed -r 's#[a-Z,0-9]+  (.*)#\1#g'|paste -s`)
New_file=(`$Find_file|paste -s`)
function check_md5(){
  if [ ! -f "$Dir" ];then
     md5sum $Find_file >>$Dir
  else
     md5sum -c "$Dir" >/opt/check.log 2>&1
     if [ $? -ne 0 ];then
      mail -s 'Html modify' $Email </opt/check.log
     fi
  fi
}
function check_file(){
  if [ "${#Old_file[*]}" != "${#New_file[*]}"  ];then
     echo "$New_file"|mail -s "Html modify" $Email
  fi
}
function main(){
  check_md5
  check_file
}
main

案例二:

编写rsync的服务管理脚本

脚本内容:

#!/bin/bash
##############################################################
# File Name: web-file.sh
# Version: V1.0
# Author: da ya
# Organization: [email protected]
# Created Time : 2018
# Description:
##############################################################
. /etc/init.d/functions
 
if [ ! -f /etc/rsyncd.conf ];then
  action 'rsyncd.conf not exists' /bin/false
  exit
fi
start_cmd='rsync --daemon'
stop_cmd='pkill rsync'
port_cmd=`ss -tunlp|grep 873|wc -l`
START() {
    if [ "$port_cmd" -eq 2 ];then
      action 'rsync service is already exists' /bin/true
      exit
    else
      $start_cmd
      action 'rsync started' /bin/true
    fi
}
STOP() {
    $stop_cmd
    action 'rsync is stoped' /bin/true
}
RESTART() {
    $stop_cmd
    action 'rsync is stoped' /bin/true
    sleep 1
    $start_cmd
    action 'rsync is started' /bin/true
}
case $1 in
start)
    START
    ;;
stop)
    STOP
    ;;
restart)
    RESTART
    ;;
esac

案例三:

监控memcache服务是否正常,模拟用户(web客户端)检测。

使用nc命令加上set/get来模拟检测,以及监控响应时间及命中率。

脚本内容:

#!/bin/bash
##############################################################
# File Name: memcache.sh
# Version: V1.0
# Author: da ya
# Organization: [email protected]
# Created Time : 2018
# Description:
##############################################################
. /etc/init.d/functions
date_cmd=`date +%F-%s`
port_cmd=`nmap 172.16.1.21 -p 11211|awk 'NR==6{print $2}'`
set_cmd=`printf "set key009 0 10 10\r\njiang12345\r\n"|nc 172.16.1.21 11211`
get_cmd=`printf "get key009 \r\n"|nc 172.16.1.21 11211|tr -d '\r'|awk 'NR==2{print $1}'`
restart_cmd=`systemctl restart memcached.service`
if [ "$port_cmd" != "cloesd" ];then
      if [ "$get_cmd" != "jiang12345" ];then
          action 'memcache get key is successfull' /bin/true
      fi
   else
      $restart_cmd
fi

案例四:

编写nginx服务管理脚本,并监控web服务是否正常

管理服务脚本:

#!/bin/bash
##############################################################
# File Name: nginx.sh
# Version: V1.0
# Author: da ya
# Organization: [email protected]
# Created Time : 2018
# Description:
##############################################################
. /etc/init.d/functions
start_cmd='/application/nginx/sbin/nginx'
stop_cmd='pkill nginx'
restart_cmd='/application/nginx/sbin/nginx -s reload'
if [ $# -ne 1 ];then
    echo "please input $0 start|stop|restart"
    exit
fi
case $1 in 
1|start|START)
   $start_cmd
   action 'nginx started' /bin/true
;;
stop|STOP)
   $stop_cmd
   action 'nginx stoped' /bin/true
;;
restart|RESTART)
   $restart_cmd
   action 'nginx restarted' /bin/true
;;
esac

监控web服务脚本:

#!/bin/bash
##############################################################
# File Name: monitor.sh
# Version: V1.0
# Author: da ya
# Organization: [email protected]
# Created Time : 2018
# Description:
##############################################################
start_cmd='/application/nginx/sbin/nginx'
stop_cmd='pkill nginx'
port_cmd=`ss -tunlp|grep 80|wc -l`
curl_cmd=`curl -s -I 10.0.0.31 -w "%{http_code}\n" -o /dev/null`
if [ "$port_cmd" -ne 1 ];then
    $stop_cmd
    sleep 2
    $start_cmd
      if [ "$curl_cmd" -ne 200 ];then
        echo "$curl_cmd"|mail -s "web service failed" [email protected]
      fi
fi

案例四:

实现对MySQL数据库进行分库备份

脚本内容:

#!/bin/bash
##############################################################
# File Name: monitor.sh
# Version: V1.0
# Author: da ya
# Organization: [email protected]
# Created Time : 2018
# Description:
##############################################################
start_cmd='/application/nginx/sbin/nginx'
stop_cmd='pkill nginx'
port_cmd=`ss -tunlp|grep 80|wc -l`
curl_cmd=`curl -s -I 10.0.0.31 -w "%{http_code}\n" -o /dev/null`
if [ "$port_cmd" -ne 1 ];then
    $stop_cmd
    sleep 2
    $start_cmd
      if [ "$curl_cmd" -ne 200 ];then
        echo "$curl_cmd"|mail -s "web service failed" [email protected]
      fi
fi

案例五:

利用for循环打印下面字符串中字母数小于6的单词

I am oldboy teacher welcome to oldboy training class.

脚本内容:

#!/bin/bash
 
for i in I am oldboy teacher welcome to oldboy training class
  do
    if [ "${#i}" -gt 6 ];then
      echo $i:${#i}
    else
      continue
    fi
done

案例六:

批量创建多个账号并生成随机密码,创建成功后要求账号名称和对应密码记录到文件中

脚本内容:

案例七:

[LVS主节点]手工开发ipvsadm管理lvs的脚本ip_vs

实现:/etc/init.d/lvs  {start|stop|restart}

脚本内容:

#!/bin/bash
##############################################################
# File Name: lvs.sh
# Version: V1.0
# Author: da ya
# Organization: [email protected]
# Created Time : 2018-03-24 00:47:17
# Description:
##############################################################
. /etc/init.d/functions
ip_cmd=`ip addr show eth0|grep 10.0.0.13|wc -l`
START() {
   if [ "$ip_cmd" -eq 0 ];then
      ip addr add 10.0.0.13/24 dev eth0
      ipvsadm -C
      ipvsadm --set 30 5 60
      ipvsadm -A -t 10.0.0.13:80 -s wrr -p 20
      ipvsadm -a -t 10.0.0.13:80 -r 10.0.0.17:80 -g -w 1
      ipvsadm -a -t 10.0.0.13:80 -r 10.0.0.18:80 -g -w 1
      action 'LVS is started' /bin/true
   else
      action 'LVS is already exists' /bin/true
   fi
}
STOP() {
      ipvsadm -C
      ip addr del 10.0.0.13/24 dev eth0
      action 'LVS is stoped' /bin/true
}
RESTART() {
      ipvsadm -C
      ip addr del 10.0.0.13/24 dev eth0
      action 'LVS is stoped' /bin/true
      ip addr add 10.0.0.13/24 dev eth0
      ipvsadm --set 30 5 60
      ipvsadm -A -t 10.0.0.13:80 -s wrr -p 20
      ipvsadm -a -t 10.0.0.13:80 -r 10.0.0.17:80 -g -w 1
      ipvsadm -a -t 10.0.0.13:80 -r 10.0.0.18:80 -g -w 1
      action 'LVS is restarted' /bintrue
}
 
case $1 in
 start)
   START
   ;;
 stop)
   STOP
   ;;
 restart)
   RESTART
   ;;
 *)
   echo 'Usage: input { start|stop|restart }'
   ;;
esac

原文地址:http://blog.51cto.com/13520772/2092979

时间: 2024-11-09 00:58:45

Shell之企业实际工作案例的相关文章

Shell之企业实际工作案例2

案例一: [LVS客户端节点]开发LVS客户端设置VIP以及抑制ARP的管理脚本 脚本内容: #!/bin/bash ############################################################## # File Name: lvs_client.sh # Version: V1.0 # Author: da ya # Organization: [email protected] # Created Time : 2018 # Description

Linux -- Samba之企业文件服务器搭建案例

章节案例 在本章案例讲解中通过4个模拟项目对Samba的功能进行演示, 其中第一个案例模拟一个企业中服务器全部基于RHEL5.x,客户端在访问Samba服务器时,用户认证及所有用户行为控制全部通过RHEL5.x完成. 第二个案例模拟一个异构环境,在企业中已使用微软的Windows Server 2003实现了活动目录管理,希望通过Samba服务器搭建一台文件服务器,为便于客户端访问,需要将Samba中加入活动目录,其用户认证工作由活动目录完成. 第三及第四个案例属于Samba服务器高级应用,通过

Linux系统shell脚本编程——生产实战案例

Linux系统shell脚本编程--生产实战案例     在日常的生产环境中,可能会遇到需要批量检查内网目前在线的主机IP地址有哪些,还可能需要检查这些在线的主机哪些端口是开放状态,因此依靠手工来检查是可以实现,但比较费时费力,所以需要结合shell脚本来实现批量检查的功能,那么今天就来做个小小的实验. 1.开发脚本前准备 一般大家都知道,测试主机是否在线,常用的命令无非就是ping.nmap,因此,首先找一个地址来测试下ping命令的效果 [[email protected] scripts]

正益工作:三大杀手锏,进军企业移动工作市场

今年的企业级移动办公市场热闹非凡,有BAT的移动社交入口布局.有CRM厂商的风口融资,还有层出不穷的专注IM.协作等细分领域的新生军,从战略战术上各有千秋,从产品功能上各有侧重.而以移动开发平台起家的正益移动,为什么要在竞争如此激烈的时机,发布企业移动门户--正益工作?正益工作进入企业级厮杀的底气又在哪? 与目前的企业移动工作类软件相比,正益工作有三个杀手锏:满足个性化定制.支持私有化部署.PaaS平台支撑,并且正益工作本身是标准化产品,SaaS模式运作,能够满足企业80%的标准化工作需求.正益

centos shell编程6一些工作中实践脚本 第四十节课

centos   shell编程6一些工作中实践脚本    第四十节课 上半节课 下半节课 f

利用shell解决企业实际问题案例实践

已知老男孩IT教育的某一周的财务招生费用报表如下: 学号 学生 提层 所交费用 欠费 课程顾问 1 葛毅 1500 13100 0 歪歪 2 罗嘉毅 1500 13000 0 丹丹 3 吴星 500 15000 0 歪歪 4 臧阔 500 3200 0 雨神 5 陈吉 500 7500 0 歪歪 6 朱明 500 15000 0 雨神 7 雷林 100 3000 0 丹丹 8 陈恩林 100 5300 0 歪歪 9 张林坤 300 3200 0 雨神 10 梁宇 80 2500 0 雪神 11

企业实战脚本案例2:批量创建用户并设置初始密码

批量创建用户并设置初始密码 目录: 1.脚本功能介绍 2.脚本制作技术需求 2.1 useradd命令 2.2 id命令 2.3 passwd命令 2.4 随机密码 2.5 while循环+case+select 3.脚本编写案例 一.脚本功能介绍 在企业中生产或运维中,经常会遇到VPN服务器.企业网盘.企业邮箱.云桌面私有账号等等一系列的服务器.当批量新员工入职时,经常需要批量账号分配给新员工,若此类账号存储在数据库时,管理员可根据公司账号命名规范通过专有图形化系统进行录入账号,若账号存储在系

shell编程企业实战(试题)

1. 写一个脚本,实现批量添加20个用户,用户名为user1-20,密码为user后面跟5个随机字符 2. Shell实用案例:批量生成随机字符文件 3.请用至少两种方法实现! 将以上文件名中的oldboy全部改成oldgirl(用for循环实现),并且html改成大写. [[email protected] ~]# ll /oldboy/ total 0 -rw-r--r-- 1 root root 0 Jul 20 20:45 aebccciiaj_oldboy.HTML -rw-r--r-

Matlab使用新发现1(小技巧:shell 命令、工程工作目录设置相关)

最近在调试一个基于Matlab的程序,在偶然间发现了几个比较有趣的技巧,给大家分享一下(很可能是太菜鸟了,没有涉及这方面,大方之家请勿见笑,对您有所帮助请点赞!) 1. Matlab语言是一种解释型语言(interpreter) 就像我在总结软件架构数据流时的一种:Interpreter / virtual machine (解释器/虚拟机),具体架构可以参看以下博文:http://blog.csdn.net/lg1259156776/article/details/46802107(解释性语言