日常小脚本

Deadly 提交于 2020-01-26 14:35:44
  1. 通过位置变量创建 Linux 系统账户及密码
    #!/bin/bash
    for i in {1…5}
    do
    cat /etc/passwd|grep user$i
    if [ $? -eq 0 ];then
    echo “用户已存在”
    else
    a=openssl rand -base64 8
    passwd=echo ${a:5:0}
    useradd user$i
    echo "$passwd" |passwd --stdin user$i
    echo -e "\033[31m 用户: user$i 密码: $passwd \033[0m">>passwd.txt
    fi
    done
  2. 每周 5 使用 tar 命令备份/var/log 下的所有日志文件
    tar -czf log-date +%Y%m%d.tar.gz /var/log
    ]# crontab -e -u root
    00 03 * * 5 /root/logbak.sh
  3. 监控本机内存和硬盘剩余空间,剩余内存小于 500M、根分区剩余空间小于 1000M
    时,发送报警邮件给 root 管理员
    #!/bin/bash
    #提取根分区剩余空间
    disk_size=$(df | awk 'NR==2{print $4}')
    #提取内存剩余空间
    mem_size=$(free | awk 'NR==2{print $4}')
    while :
    do
    注意内存和磁盘提取的空间大小都是以 Kb 为单位
    if [ $disk_size -le 512000 -a $mem_size -le 1024000 ]
    then
    mail ‐s “Warning” root <<EOF
    Insufficient resources,资源不足
    EOF
    fi
  4. 脚本生成一个 100 以内的随机数,提示用户猜数字,根据用户的输入,提示用户猜对了,
    猜小了或猜大了,直至用户猜对脚本结束。
    num=$[RANDOM%100+1]
    while :
    do
    read -p "计算机生成了一个 1-100 的随机数,你猜: " cai
    if [ $cai -eq $num ];then
    echo “恭喜,猜对了”
    exit
    elif [ $cai -gt $num ];then
    echo “Oops,猜大了”
    else
    echo “Oops,猜小了”
    fi
    done
  5. 检测本机当前用户是否为超级管理员,如果是管理员,则使用 yum 安装 vsftpd,如果不
    是,则提示您非管理员(使用字串对比版本)
    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
    #不管谁大谁小,最后都打印 echo “num1,num1,num2,$num3”
    #num1 中永远存最小的值,num2 中永远存中间值,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,num1,num2,$num3”
  7. 编写批量修改扩展名脚本
    #!/bin/bash
    for i in ls *.$1
    do
    echo $1
    name=echo $i |awk -F '.' '{print $1}'
    mv $i $name.$2
    done
  8. 切割 Nginx 日志文件(防止单个文件过大,后期处理很困难
    #!/bin/bash
    logs_path="/usr/local/nginx/logs"
    pid_path="/usr/local/nginx/logs/nginx.pid"
    mv ${logs_path}access.log KaTeX parse error: Expected group after '_' at position 17: …log_path}access_̲(date +"%Y-%m-%d").log
    ss -ntlp |grep nginx
    if [ $? -eq 0 ];then
    /usr/local/nginx/sbin/nginx -s reload
    else
    /usr/local/nginx/sbin/nginx
    /usr/local/nginx/sbin/nginx -s reload
    fi
    echo “00 00 00 00 00 /bin/bash /root/shell/nginx_log.sh” >> /var/spool/cron/root
    #!/bin/bash
    for i in {1…10}
    do
    curl -I -m 10 -o /dev/null -s -w %{http_code} http://10.0.0.11
    done
  9. 检测 MySQL 数据库连接数量,超过500时报警并发送邮件给管理员
    a=mysqladmin -uroot -p123 status|awk '{print $4}'
    if [ $a -gt 500 ];then
    mail -s Warning root <<EOF
    Insufficient resources,资源不足
    EOF
    fi
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!