• Linux_Bash常用脚本


    目录

    从用户列表中过滤用户名并创建用户

    ######################### name.sh  
    #!/bin/bash
    n=0
    userName=`echo $(cat /root/name.txt | tr -s " " | cut -d " " -f2 )`
    for userN in $userName
    do
            let ++n
            dirName=`echo $(cat /root/name.txt | awk -F " " '{print $1}')| cut -d " " -f$n`
            useradd -d /home/$dirName $userN
            echo 123456 | passwd --stdin $userN
    done

    awk、tr、cut 指令的文本处理

    awk、tr、cut 指令可以很好的进行文本信息处理

    tr指令

    一般用于文本或字符串编辑处理,可以替换、删除、合并重复字符。

    tr -s "Str" textString #将testString中的重复的"Str"合并为一个
    #如:
    tr -s " " 将标准输入的Text中的连续的" " 合并重一个空格符

    cut指令

    以分割的方式来编辑文本

    cut -d " " -f2
        -d 定义分隔符,将标准输入的文本信息以" "作为分隔符
        -f-d配合指定分割后要显示的区域
        -c numberRange <==>(2-5) 将Text中的2-5范围的字符截取出来

    awk指令

    awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理。
    工作原理:读入并分割有’ ’换行符的的一条记录,再将这条记录以-F " "指定的特定分割符来划分出域,填充域,最后使用$Number 来选择需要显示第几个域并最终使用{print $Number}显示。没有-F指定特定分隔符时,默认分隔符为”空白键” 或 “[tab]键”。

    备份文件

    #############################Backups.sh  
    #!/bin/bash
    read -p "请输入要备份的内容:" backupName
    read -p "请输入要备份的文件名及路径:" backupUrl
    read -p "请输入要备份的文件的存放路径:" backupCpUrl
    read -p "请输入要使用的压缩算法:" backupAlg
    alg=0
    algName=0
    case $backupAlg in
    gzip)
            alg=z
            algName=gz
            ;;
    bzip2)
            alg=j
            algName=bz2
            ;;
    xz)
            alg=J
            algName=xz
            ;;
    *)
            echo "请输入正确的压缩算法类型!"
    esac
    
    tar ${alg}cvf ${backupCpUrl}/${backupName}.tar.${algName} ${backupUrl}
    if [ $? -eq 0 ]
            then echo "打包备份文件成功!"
    else
            echo "打包备份失败!"
    fi
    ########################################## SCRIPT END 

    测试LFTPServer权限设定

    ########################################## Lftp.sh 
    #!/bin/bash
    lftp 192.168.8.248 -u user1,fanguiju -e "cd share;ls;exit" &> /dev/null
    if [ $? -eq 0 ]
            then echo "user1用户可以读取share目录,符合要求!"
    else
            echo "user1用户不可以读取share目录,不符合要求!"
    fi
    lftp 192.168.8.248 -u user1,fanguiju -e "cd share;mkdir testSaDir_user1;exit" &> /dev/null
    if [ $? -eq 1 ]
            then echo "user1用户不可以写入share目录,符合要求!"
    else
            echo "user1用户可以写入share目录,不符合要求!"
    fi
    lftp 192.168.8.248 -u user1,fanguiju -e "cd data;ls;exit" &> /dev/null
    if [ $? -eq 0 ]
            then echo "user1用户可以读取data目录,符合要求!"
    else
            echo "user1用户不可以读取data目录,不符合要求!"
    fi
    lftp 192.168.8.248 -u user1,fanguiju -e "cd data;mkdir testDaDir_user1;exit" &> /dev/null
    if [ $? -eq 0 ]
            then echo "user1用户可以写入data目录,符合要求!"
    else
            echo "user1用户可以不写入data目录,不符合要求!"
    fi
    
    lftp 192.168.8.248 -u user2,fanguiju -e "cd share;ls;exit" &> /dev/null
    if [ $? -eq 0 ]
            then echo "user2用户可以读取share目录,符合要求!"
    else
            echo "user2用户不可以读取share目录,不符合要求!"
    fi
    lftp 192.168.8.248 -u user2,fanguiju -e "cd share;mkdir testSaDir_user2;exit" &> /dev/null
    if [ $? -eq 1 ]
            then echo "user2用户不可以写入share目录,符合要求!"
    else
            echo "user2用户可以写入share目录,不符合要求!"
    fi
    lftp 192.168.8.248 -u user2,fanguiju -e "cd data;ls;exit" &> /dev/null
    if [ $? -eq 0 ]
            then echo "user2用户可以读取data目录,符合要求!"
    else
            echo "user2用户不可以读取data目录,不符合要求!"
    fi
    lftp 192.168.8.248 -u user2,fanguiju -e "cd data;mkdir testDaDir_user2;exit" &> /dev/null
    if [ $? -eq 1 ]
            then echo "user1用户不可以写入data目录,符合要求!"
    else
            echo "user1用户可以写入data目录,不符合要求!"
    fi
    #FTP(File Transfer Protocol) lftp FTPServerIP -u userName,Password -e "command1;command2;exit" &> /dev/null 是编写LFTP服务脚本的方法
    ##################################################  SCRIPT END

    开启Httpd

    ################################################## HttpStatus.sh  
    #!/bin/bash
    while true
    do
            netstat -lputn | grep :80 &> /dev/null
            if [ $? -eq 0 ]
                    then echo "httpd running!"
                    exit
            else
                    echo "httpd stop"
                    echo "正在尝试重启httpd服务..."
                    echo `date +"%Y-%m-%d %H:%M:%S"` >> /var/log/mylog
                    tail -n 1 /etc/httpd/logs/error_log >> /var/log/mylog
                    service httpd start
            fi
            netstat -lputn | grep :80 &> /dev/null
            if [ $? -eq 0 ]
                    then
                    echo "httpd 重启启动成功!"
                    break
            fi
    done
    exit 0
    ################################################## SCRIPT END

    安装Httpd

    ################################################## InstallHttp.sh  
    #!/bin/bash
    rpm -q httpd
    if [ $? -eq 0 ]
            then echo "httpd已经安装!"
            exit 0
            else
            echo -n "正在安装httpd..."
    fi
    yum install -y httpd &> /dev/null
    rpm -q httpd
    if [ $? -eq 0 ]
            then echo "安装成功!"
    else
            echo -n "安装失败!" >> /var/log/mylog
            date >> /var/log/mylog
    fi
    ################################################# SCRIPT END

    批量创建用户

    ################################################# UserAdd.sh  
    #!/bin/bash
    while true
    do
    read -p "请输入要添加的用户数目(100以内):" userNum
    if [ $userNum -le 0 ] || [ $userNum -ge 100 ]
            then
            echo "请输入正确的数目范围!"
    else
            break
    fi
    done
    read -p "请输入用户名前缀:" userName
    read -p "请输入用户帐号的失效时间(MM/DD/YY):" userTime
    read -p "请输入用户的初始密码:" userPwd
    num=0
    for (( num=0;num<=$userNum;num++ ))
    do
    if [ $num -lt 10 ]
            then
            name=${userName}0${num}
            else
            name=${userName}$num
    fi
    useradd -e $userTime $name
    echo $userPwd | passwd --stdin $name
    done
    echo "你成功创建了${userNum}个用户!"
    ########################################### SCRIPT END

    批量删除用户

    ###########################################  UserDel.sh   
    #!/bin/bash
    if [ $# -ne 1 ]
            then echo "语法错误!"
            echo "用法:$0 用户名前缀"
    fi
    num=`echo $(cat /etc/passwd | grep -v ^root$ | cut -d ":" -f1 | grep -v ^root$ | grep $1 )`
    if [ -z $num ]
            then echo "没有以$1为前缀的用户"
            else
            for userName in $num
            do
            echo -n "正在删除用户$userName..."
            userdel -r $userName
            echo "完成"
            done
    fi
    # $# 脚本后接参数的个数 $# -ne 1 脚本后参数的个数!=1
    ############################################ SCRIPT END
  • 相关阅读:
    error while loading shared libraries: libhwloc.so.5: cannot open shared object file: No such file or directory
    Mac刷新DNS,修改/etc/hosts立即生效
    zxing生成识别二维码
    电脑M2接口不是磁盘0问题
    WSL
    Ubuntu安装Docker
    Win10关闭自动更新和防护
    Mysql的5种日志
    开发常用工具Windows
    log4j2高危漏洞
  • 原文地址:https://www.cnblogs.com/jmilkfan-fanguiju/p/7533744.html
Copyright © 2020-2023  润新知