zoukankan      html  css  js  c++  java
  • 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  下载文件类型

  • 相关阅读:
    异常
    C++中的mutable,volatile,explicit关键字
    Vi配置文件--Vimrc
    结构体和类的区别
    [转]恢复视力的方法(500度以下)
    与struct相关的宏定义 ---今Tencent笔试用到的
    如何在C++中调用C的代码
    C中如何调用C++函数?
    技术博走起
    Shell常见命令实践
  • 原文地址:https://www.cnblogs.com/abels0025/p/11401749.html
Copyright © 2011-2022 走看看