linux小测试

mac2022-06-30  63

###张小强>**`作业答案`**- 1.写一个脚本``` (1) 接受一个以上文件路径作为参数,一个路径或多个路径作为参数;(2) 显示每个文件拥有的行数;(3) 并且说明一共统计了有多少文件,且一共多少行;``````if [ $# -lt 1 ];then    echo " $0 PATH1 PATH2.... "    exit 1fideclare -i linedeclare -i lines=0declare -i FILE_NUMS=0PATH_NUMS=$## 这里的注意点在于:使用变量去参数名需要这里来取:${!i} == $1 == 参数1for i in `seq $PATH_NUMS`; do        if [ -e ${!i} ];then            line=$(wc -l ${!i} | cut -d" " -f1)            lines=$[ $lines+$line ]            let FILE_NUMS++            echo -e "\E[1;33m${!i}有$line行 \033[0m"        else                echo -e "\E[1;31m${!i}不存在 \033[0m"           fidoneecho -e "\E[1;33m一共统计了$FILE_NUMS个文件,一共$lines行 \033[0m" ```- 2.写一个脚本```(1) 传递两个以上的字符串当作用户名,可以是3个也可以是多个哦,不限于两个哦;(2) 创建这些用户;且密码同用户名;(3) 统计一共创建了几个用户;``````#!/bin/bash# (1) 传递两个以上字符串当作用户名;# (2) 创建这些用户;且密码同用户名;# (3) 总结说明共创建了几个用户;if [ $# -lt 2 ];then    echo "请输入两个以上的用户名作为参数"    exit 1fideclare -i USER_NUMS=0ARGS=$#for i in `seq $ARGS`; do    if id ${!i} &> /dev/null;then        # 如果用户存在        echo -e "\E[1;31m用户${!i}存在 \033[0m"    else        # 如果用户不存在        useradd ${!i} echo "${!i}" | passwd --stdin ${!i} &> /dev/null        let USER_NUMS++        echo -e "\E[1;33m创建用户${!i} \033[0m"    fidoneecho -e "\E[1;34m一共创建了$USER_NUMS \033[0m"```- 3、写一个脚本```(0)给脚本传递两个数值用于指定用户的范围,例如:1 20 则创建20个用户 或 101 200 则创建100个用户(1)批量新建用户,如:student1---student20, 或 student101---student200; (2)密码与用户名相同;(3)如果用户已经存在就不统计其UID,并给出提示(4)计算新建用户的UID之和;``````#!/bin/bash# (0)给脚本传递两个数值用于指定用户的范围,例如:1 20 则创建20个用户 或 101 200 则创建100个用户# (1)批量新建用户,如:student1---student20, 或 student101---student200; # (2)密码与用户名相同;# (3)如果用户已经存在就不统计其UID,并给出提示# (4)计算新建用户的UID之和;declare -i IDdeclare -i ID_SUM=0for i in `seq $1 $2`; do    if id student$i &> /dev/null ;then        # 如果用户存在        echo -e "\E[1;31m用户student$i已经存在 \033[0m"    else        useradd student$i echo "student$i" | passwd --stdin student$i &> /dev/null        ID=$(id -u student$i)        ID_SUM=$[ ID_SUM+ID ]        echo -e "\E[1;34m创建了用户student$i \033[0m"    fidoneecho -e "\E[1;33m用户的UID之和为:$ID_SUM \033[0m"```- 4、写一个脚本```(1)分别统计/etc/rc.d/rc.sysinit、/etc/rc.d/init.d/functions和/etc/fstab文件中以#号开头的行数之和,以及总的空白行数;``````#!/bin/bash# 分别统计/etc/rc.d/rc.sysinit、/etc/rc.d/init.d/functions和/etc/fstab文件中以#号开头的行数之和,以及空白行数之和;declare -i Line1=0declare -i Line2=0for file in /etc/rc.d/rc.sysinit /etc/rc.d/init.d/functions /etc/fstab; do    Line1=$[ $Line1+$(egrep "^#" $file | wc -l) ]    Line2=$[ $Line2+$(egrep "^[[:space:]]*$" $file | wc -l) ]doneecho -e "\E[1;33m#号开头的行数之和为:$Line1\033[0m"echo -e "\E[1;31m空白行数之和:$Line2\033[0m"```- 5、写一个脚本```(1)显示当前系统上所有默认shell为bash的用户的用户名、UID以及此类所有用户的UID之和;``````#!/bin/bashegrep "/bin/bash" /etc/passwd | cut -d: -f1egrep "/bin/bash" /etc/passwd | cut -d: -f3declare -i sum=0for i in `egrep "/bin/bash" /etc/passwd | cut -d: -f3`;do     sum=$[ $i+$sum ] done  echo -e "\E[1;33mUID之和为:$sum\033[0m"```- 6、写一个脚本```(1)使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态;(2)在线的主机使用绿色显示;(3)不在线的主使用红色显示;(4)请使用函数完成``````#!/bin/bash# 使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态;# 在线的主机使用绿色显示;# 不在线的主使用红色显示;PING(){    if ping -c1 -w1 172.16.250.$1 &> /dev/null;then        # 可以ping通        echo -e "\E[1;32m172.16.250.$1 在线\033[0m"    else        # 不能ping通        echo -e "\E[1;31m172.16.250.$1 不在线\033[0m"    fi

转载于:https://www.cnblogs.com/Dust-disappear/p/7391481.html

最新回复(0)