shell示例1

  1. 统计出/etc/passwd 文件中默认 shell 为非/sbin/nologin 的用户数,并将用户显示出来

    # 显示用户
    sed -r '/\/sbin\/nologin/d;s#([^:]*).*#\1#' /etc/passwd
    # 显示用户数
    grep -v '/sbin/nologin$' /etc/passwd|wc -l
  2. 查出用户 UID 最大值的用户名,UID 和 shell 类型

    sort -rnt ':' -k 3 /etc/passwd|cut -d : -f 1,3,7
  3. 统计当前连接本机的每个远程主机 ip 的连接数,并按从大到小排序

    ss -tne|tr -s ' ' ':'|sed '1d'|cut -d ':' -f 6|sort|uniq -c|sort -rn
  4. 编写脚本 createuser.sh,实现如下功能
    以一个用户名为参数,如果用户存在,就显示用户存在,否则添加并显示用户 id.

    test $# -lt 1 && echo "No user name" && exit 1
    id $1 &> /dev/null && echo "user $1 is existed,UID is `id -u $1`" && exit 1
    useradd $1
    echo "user is add successed.UID is `id -u $1`"
  5. 编写生成脚本基本格式的脚本,包括作者,联系方式,版本,时间,描述等

    #!/bin/bash -e
    # Author: chaoyi
    # Date: 2019-8-31
    # Describe: create a script
    # -------------------------------------------------------------------------------------------------------------------------------------
    
    head_author="# Author:\t\t chaoyiyang"
    head_date="# Date:\t\t\t $(date +%F)"
    head_communication="# Email: [email protected]"
    head_version="# Version: 0.1"
    head_describe="# Describe:"
    head_halving="
    # -------------------------------------------------------------------------------------------------------------------------------------
    "
    
    function create_files
    {
        test $# -lt 1 && echo "Please add file name" && exit 1
        touch $@
        chmod +x $*
    }
    
    function say_success
    {
        echo -e "Success create \033[31m $# \033[0m file."
        time=0
        for i in $@
        do
            printf "%-20s\t" $i
            test $((++time)) -gt 2 && echo && time=0
        done
        echo
        unset i time
    }
    
    # 为不同后缀的文件添加开头
    function add_head
    {
        for i in $@
        do
            case ${i##*.} in
                "sh") echo "#!/bin/bash" > $i ;;
                "py") echo "#!/usr/bin/env python3" > $i ;;
            esac
        done
        unset i
    }
    
    function add_mid
    {
        for i in $@
        do
            echo -e $head_author >> $i
            echo -e $head_date >> $i
            echo -e $head_communication >> $i
            echo -e $head_version >> $i
            echo -e $head_describe >> $i
            echo -e $head_halving >> $i
        done
        unset i
    }
    
    function main
    {
        create_files $@
        add_head $@
        add_mid $@
        say_success $@
    }
    
    main $@

猜你喜欢

转载自www.cnblogs.com/chaoyiyang/p/11785300.html