zoukankan      html  css  js  c++  java
  • 『BASH』

    一、显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小

    1 #!/usr/bin/bash
    2 printf \
    3 " Hostname: $(hostname)\n \
    4 IPv4: $(ip addr | grep -oP '(\d+\.){3}\d+/\d+' | awk 'BEGIN{ORS=" "}{print}')\n \
    5 OS_version: $(cat /etc/gentoo-release)\n \
    6 Kernel_version: $(uname -r)\n \
    7 Cpu: $(uname -p)\n \
    8 TotalMem(kiB): $(cat /proc/meminfo | grep -oP  '(?<=MemTotal:)\s*\d+' | sed 's/ \+//g')\n \
    9 TotalDisksize(kiB): $(cat /sys/block/sd*/size | gawk 'BEGIN{printf "(";ORS=" + "}{print}END{printf "0) / 2\n"}' | bc)\n"
    f@z ~/bash_script $ bash systeminfo.sh 
     Hostname: z
     IPv4: 127.0.0.1/8 172.18.16.4/24 
     OS_version: Funtoo Linux - baselayout 2.2.1
     Kernel_version: 4.4.16
     Cpu: Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz
     TotalMem(kiB): 16437364
     TotalDisksize(kiB): 1211193648

    二、计算/etc/passwd文件中的第10个用户和第20用户的ID之和

    #!/bin/bash
    sed -n '10p;20p' /etc/passwd | gawk -F: 'BEGIN{ORS=" + ";printf "("}{print $3}END{printf "0)" "\n"}' | bc
    
    f@z ~/bash_script $ bash sumid.sh 
    1010

    三、传递两个文件路径作为参数给脚本,计算这两个文件中所有空白行之和

    f@z ~/bash_script $ cat sum_blanklines.sh 
    #!/bin/bash
    read -p "请输入一个文件路径: " file1
    read -p "请再输入一个文件路径: " file2
    printf "这两个文件中的空白行数合计: $(grep -P '^\s*$' $file1 $file2 | wc -l)\n"
    f@z ~/bash_script $ bash sum_blanklines.sh 
    请输入一个文件路径: passwd
    请再输入一个文件路径: passwd1
    这两个文件中的空白行数合计: 6

    四、统计/etc, /var, /usr目录中共有多少个一级子目录和文件

    #!/bin/bash
    find /etc /var /usr -maxdepth 1 | wc -l

    五、接受一个文件路径作为参数;若参数个数小于1,则提示“不能为空”,并再次提示输入;若参数个数不小于1,则显示第一个参数所指向的文件中的空白行数

    f@z ~/bash_script $ cat args_num.sh 
    #!/bin/bash
    path() {
        printf "请输入一个文件路径: "
    }
    path
    read Path
    until [[ $Path != "" ]]
    do 
        printf "不能为空!\n"
        path
        read Path
    done
        grep -P '^\s*$' $Path | wc -l

    六、接受一个主机的IPv4地址做为参数,测试是否可连通,若能ping通,则提示用户“该IP可访问”;若不通,则提示用户“ 该IP不可访问”

    #!/bin/bash
    read -p "请输入一个IPv4地址: " IPv4
    ping -w 1 -c 1 $IPv4 > /dev/null
    if [[ $? == "0" ]]
    then
        printf "该IP可访问\n"
    else
        printf "该IP不可访问\n"
    fi

    七、判断硬盘的每个分区空间和inode的利用率是否大于80%,如果是,发邮件通知root磁盘将满

    #!/bin/bash
    InodeUsed=$(df -i | gawk '{if ($5 ~ /[8-9][0-9]%|100%/) print $1 " " $5}')
    SpaceUsed=$(df | gawk '{if ($5 ~ /[8-9][0-9]%|100%/) print $1 " " $5}')
    if [[ $InodeUsed != "" || $SpaceUsed != "" ]]
    then
        echo -e "如下分区空间使用率已超过80%:\n${SpaceUsed}\n如下分区Inode使用率已超过80%:\n${InodeUsed}\n" | mail -s Disk_Space_Warning root 
    fi

    八、计算1到100之间整数的和

    #!/bin/bash
    echo {1..100} | tr ' ' '+' | bc

    九、判断输入的IP是否为合法IP(粗略判断,重点在于脚本中正则的应用)

    #!/bin/bash
    if [[ $1 =~ ([0-9]+\.){3}[0-9]+ ]]
    then
        printf "IP合法\n"
    else
        printf "IP不合法\n"
    fi

    十、输入起始值A和最后值B,计算从A+(A+1)...+(B-1)+B的总和

    f@z ~/bash_script $ cat sum100diy.sh 
    #!/bin/bash
    read -p "请输入两个正整数: " goal1 goal2
    sum=0
    if [[ goal1 -gt goal2 ]]
    then
        g1=goal1
        g2=goal2
    else
        g1=goal2
        g2=goal1
    fi
    
    until [[ $g1 -le $g2 ]]
    do
        sum=$(($sum + $g1))
        g1=$(($g1 - 1))
    done
    sum=$(($sum + $g2))
    printf "$sum\n"
  • 相关阅读:
    在Visual Studio中怎样快速添加代码段
    18个不常见的C#关键字,您使用过几个?
    C# 非常好用的组元Tuple
    C# List根据另一个List集合或数组排序
    Expression 核心操作符、表达式、操作方法
    如何避免频繁创建临时对象
    C# 23种设计模式
    C# 23种设计模式
    Api Cloud官方日期类型转换
    sql server 保留小数(续A)
  • 原文地址:https://www.cnblogs.com/hadex/p/5758965.html
Copyright © 2011-2022 走看看