linux shell练习1

1、删除某个目录下大小为0的文件,且7天以外的文件,除了t.txt文件永不删除(自己去创建)
提示:find 目录 -size 0;需要指定目录;

find $dir -type f -size 0 -exec rm -rf {} ;

2、显示CPU厂商信息
提示:/proc/cpuinfo 里面的厂家信息

awk '/vendor_id/{print $3}' /proc/cpuinfo

3、使用脚本自动创建逻辑卷

1  #!/bin/bash
     2  check_disk(){
     3        read -p "请输入磁盘,例如/dev/sda:" disk
     4        if [ -b $disk ];then
     5           check_vg
     6           return 0
     7        else
     8           echo "磁盘不存在"
     9           check_disk
    10           return 1
    11        fi
    12  }
    13  check_vg(){
    14        read -p "请输入vgname:" vgname
    15        echo $vgname |grep "[^[:punct:]]{1,}" >/dev/null
    16        if [ $? -ne 0 ];then
    17           echo "不能使用特殊字符,请重新输入"
    18           check_vg
    19           return 1
    20        else
    21           check_lv
    22           return 0
    23        fi
    24  }
    25  check_lv(){
    26        read -p "请输入lvname:" lvname
    27        echo $lvname |grep "[^[:punct:]]{1,}" >/dev/null
    28        if [ $? -ne 0 ];then
    29           echo "不能使用特殊字符,请重新输入"
    30           check_lv
    31           return 1
    32        else
    33            judge_
    34           return 0
    35        fi
    36  }
    37  judge_(){
    38     if [[ check_disk && check_vg && check_lv ]];then
    39         pvcreate $disk
    40         if [ $? -eq 0 ];then
    41             vgcreate $vgname $disk
    42             if [ $? -eq 0 ];then
    43                lvcreate -n $lvname -L 2G $vgname
    44                if [ $? -eq 0 ];then
    45                   echo "创建成功"
    46                   return 0
    47                else 
    48                   echo "$lvname逻辑卷未创建成功"
    49                   return 1
    50                 fi
    51              else
    52                    echo "$vgname 卷组未创建成功"
    53                    return 1
    54              fi
    55          else 
    56               echo "$pvname物理卷未创建成功"
    57          fi
    58       exit
    59     fi
    60  }
    61  check_disk

4、添加防火墙规则,开启某些服务或端口
提示:指定服务和端口,来开启;
     iptables -I INPUT -s 192.168.0.0/24 -p tcp --dport 8087 -j ACCEPT
     iptables -L -n   //如何判断添加成功

  1 #!/bin/bash
  2 #
  3 #********************************************************************
  4 #Author:               一枚肥仔!!!
  5 #QQ:                  1933899172
  6 #Date:                2019-08-23
  7 #FileName:            firewall.sh
  8 #URL:                 https://www.cnblogs.com/abels0025
  9 #Description:         The test script
 10 #Copyright (C):      2019 All rights reserved
 11 #********************************************************************
 12 iptables -I INPUT -s $1 -p $2 --dport $3 -j ACCEPT
 13 a=$(iptables -L |head -n 3 |tail -n 1|awk '{print $4}')
 14 if [ $a == $1 ];then                                                                                                        
 15         echo "添加成功!$(ptables -L |head -n 3 |tail -n 1)"
 16 else
 17         echo "添加失败!"
 18 fi
 19 


5、监控某个固定网站的HTTP服务器的状态(测试返回码)

  1 #!/bin/bash
  2 #
  3 #********************************************************************
  4 #Author:               一枚肥仔!!!
  5 #QQ:                  1933899172
  6 #Date:                2019-08-23
  7 #FileName:            monitored_http.sh
  8 #URL:                 https://www.cnblogs.com/abels0025
  9 #Description:         The test script
 10 #Copyright (C):      2019 All rights reserved
 11 #********************************************************************
 12 #
 13 a=$(curl -o /dev/null -s -w %{http_code} http://www.$1.com)
 14 #echo $a
 15 if [ $a != 200 ];then
 16         echo "==================$(date +%Y%m%d%H%M%S)===================== "> /tmp/http.$(date +%Y%m%d).log
 17         echo "$1 网站存在问题!!!返回值$a" >> /tmp/http.$(date +%Y%m%d).log
 18 
 19 else
 20         echo "==================$(date +%Y%m%d%H%M%S)===================== "> /tmp/http.$(date +%Y%m%d).log
 21         echo "$1 网站正常          返回值$a" >> /tmp/http.$(date +%Y%m%d).log
 22 fi
 23 mail -s '网站监测报告' mrl0001@163.com < /tmp/http.$(date +%Y%m%d).log                                                                                                                 
 24 

6、同时检查特定的软件包是否已经安装
提示:通过$@来传递参数,使用 rpm -q 来检查软件包是否安装

  1 #!/bin/bash
  2 #
  3 #********************************************************************
  4 #Author:               一枚肥仔!!!
  5 #QQ:                  1933899172
  6 #Date:                2019-08-23
  7 #FileName:            check_package.sh
  8 #URL:                 https://www.cnblogs.com/abels0025
  9 #Description:         The test script
 10 #Copyright (C):      2019 All rights reserved
 11 #********************************************************************
 12 #
 13 for i in $@;do
 14         if [ $i == $(rpm -q gawk |cut -d"-" -f1) ];then
 15                 echo "=====$i 已安装!====="
 16                 echo $(rpm -q $i)
 17         else
 18                 echo "=====$i 未安装!====="
 19         fi                                                                  
 20 done

7、非交互自动生成SSH秘钥
提示:使用sshkey来生成秘钥对
ssh-keygen

8、通过MD5校验文件是否被修改
提示:md5sum

9、自动化对磁盘进行分区,格式化,挂载

10、编写NGINX的启动脚本

11、自动为其他脚本添加 /bin/bash 程序;

12、统计/var/log中有多少个文件,并统计出来一个总数

13、统计当前计算机中可以登录计算机的账户有多少个

14、批量下载指定网页中的图片

15、自动化一键安装LAMP环境

16、循环关闭局域网中所有主机

17、获取网段中的所有IP地址与MAC地址

18、找出/etc/passwd 中能登录的用户,并将对应在/etc/shadow 中第二列密码提出处理

19、显示本机Linux系统上所有开放的端口


20、通过shell脚本获取网站性能
curl -o /dev/null -s -w %{time_total}" " www.yy.com
     -o 指定输出到空
     -s 指定静默输出
     -w %{option}
         time_total  表示输网站的返回延时
         time_namelookup  完成解析的时间
         time_connect  建立到服务器的TCP连接所用的时间
         time_redirect  重定向完成的时间
         time_starttransfer  在发出请求后,web服务器返回数据的第一个字节所用的时间
         http_code  http返回值404,200,500等
         size_download  下载网页或文件大小
         size_upload  上传文件大小
         size_header  响应头部
         size_request  发送请求参数大小
         size_download  传输速度
         size_upload  平均上传速度
         content_type  下载文件类型

原文地址:https://www.cnblogs.com/abels0025/p/11401749.html