• shell 案例


    1. 通过位置变量创建 Linux 系统账户及密码

    #!/bin/bash
    
    useradd "$1" 
    echo "$2" |passwd --stdin "$1"

    .2. 每周 5 使用 tar 命令备份/var/log 下的所有日志文件
    编写脚本

    #!/bin/bash
    
    tar -zcf log-`date +%F_%T`.tar.gz /var/log
    
    chmod +x tar.sh
    
    设置定时任务
    
    crontab -e
    
    * * * * 5 /root/tar.sh

    3. 监控本机内存和硬盘剩余空间,剩余内存小于 500M、根分区剩余空间小于 1000M
    时,发送报警邮件给 root 管理员

    #!/bin/bash
    gen_size=$(df / |awk '///{print $4}') 
    mem_size=$(free |awk '/Mem/{print $4}') 
    while :
    do
    
    if [ $gen_size -le 512000 -a $mem_size -le 1024000 ]
    then
    mail -s 'mail test' xxx@yyy.com < con.txt 
    fi
    done

    4. 脚本生成一个 100 以内的随机数,提示用户猜数字,根据用户的输入,提示用户猜对了,
    猜小了或猜大了,直至用户猜对脚本结束

    #!/bin/bash
    
    num=$[RANDOM%100+1]
    while :
    do
    read -p "计算机生成了一个 1-100 的随机数,你猜: " num
    if [ $num -eq $num ];then
    echo "恭喜,猜对了"
    exit
    elif [ $num -gt $num ];then
    echo "Oops,猜大了"
    else
    echo "Oops,猜小了"
    fi
    done

    5. 检测本机当前用户是否为超级管理员,如果是管理员,则使用 yum 安装 vsftpd,如果不
    是,则提示您非管理员(使用字串对比版本)

    #!/bin/bash
    
    if [ $USER == "root" ]
    then
    yum -y install vsftpd
    else
    echo "您不是管理员,没有权限安装软件"
    fi

    6. 依次提示用户输入 3 个整数,脚本根据数字大小依次排序输出 3 个数字

    #!/bin/bash
    read -p "请输入一个整数:" num1
    read -p "请输入一个整数:" num2
    read -p "请输入一个整数:" num3
    
    tmp=0
    if [ $num1 -gt $num2 ];then
    tmp=$num1
    num1=$num2
    num2=$tmp
    fi
    
    if [ $num1 -gt $num3 ];then
    tmp=$num1
    num1=$num3
    num3=$tmp
    fi
    
    if [ $num2 -gt $num3 ];then
    tmp=$num2
    num2=$num3
    num3=$tmp
    fi
    echo "排序后数据为:$num1,$num2,$num3"

    7. 编写脚本测试 10.0.0.0/24 整个网段中哪些主机处于开机状态,哪些主机处于关机状态(多进程版)

    #!/bin/bash
    
    myping(){
    ping -c2 -i0.3 -W1 $1 &>/dev/null
    if [ $? -eq 0 ];then
    echo "$1 is up"
    else
    echo "$1 is down"
    fi
    }
    
    for i in {1..24}
    do
    myping 10.0.0.$i &
    done

    8. 编写批量修改扩展名脚本

    #!/bin/bash
    
    for i in "ls *.$1"
    do
    mv $i ${i%.*}.$2
    done

    9. 切割 Nginx 日志文件(防止单个文件过大,后期处理很困难)

    vim nginx_log.sh
    
    #!/bin/bash
    logs_path="/usr/local/nginx/logs/"
    mv ${logs_path}access.log ${logs_path}access_$(date -d "yesterday" +"%Y%m%d").log
    kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
    
    chmod +x nginx_log.sh
    
    脚本写完后,将脚本放入计划任务每天执行一次脚本
    
    crontab -e
    
    0 1 * * * /root/scripts/nginx_log.sh

    10. 检测 MySQL 数据库连接数量,超过500时报警并发送邮件给管理员

    #!/bin/bash
    a=`mysqladmin -uroot -p123 status|awk '{print $4}'`
    if [ $a -gt 500 ]
    then
    mail -s 'mail test' xxx@yyy.com < con.txt
    fi
  • 相关阅读:
    【转】批处理第三方命令行工具汇总(2014-11-10更新)
    爬虫问题汇总 + 解决
    ocs的沟通平台
    DSCP 与IP 优先级IP优先级
    IPSec协议
    GRE 协议简介
    使用VLC创建组播流
    华为olt ma5680t常用命令详解
    Python统计列表中的重复项出现的次数的方法
    Kafka
  • 原文地址:https://www.cnblogs.com/xianglei_/p/12160189.html
Copyright © 2020-2023  润新知