N25期–第八周作业

1、写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态; 在线的主机使用绿色显示; 不在线的主使用红色显示;

#!/bin/bash

declare -i i=1

hostping(){
    if ping -W 1 -c 1 172.16.250.$i &> /dev/null;then
        echo -e "\033[32m 172.16.250.$i is up.\033[0m" 
    else 
        echo -e "\033[31m 172.16.250.$i is down.\033[0m"

    fi
    }
    while [ $i -le 255 ]; do
    hostping 172.16.250.$i
    let i++ 

    done

2、如何给网络接口配置多个地址,有哪些方式?

1、ifconfig命令

ifconfig eth0:0 192.168.6.100 netmask 255.255.255.0 up

2、修改配置文件信息

vim /etc/sysconfig/network-scripts/ifcfg-eth0:0

DEVICE=eth0:0 //虚拟网络接口,随意 
ONBOOT=yes //系统启动时激活 BOOTPROTO=static //使用静态ip地址 
IPADDR=192.168.6.100 //该虚拟网络接口的ip别名,随意 NETMASK=255.255.255.0 //子网掩码,对应ip别名 GATEWAY=192.168.6.1 //网关,对应ip别名 HWADDR=00:10:5A:5E:B1:E4 //网卡MAC地址,无需更改 
USERCTL=no //是否给予非root用户设备管理权限

CentOS 7
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

TYPE="Ethernet"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
NAME="enp0s3"
UUID="933cdc9b-b383-4ddd-b219-5a72c69c9cf0"
ONBOOT="yes"
HWADDR="08:00:27:3F:AB:68"
IPADDR0="192.168.1.150"
IPADDR1="192.168.6.100"
IPADDR2="192.168.6.101"
PREFIX0="24"
GATEWAY0="192.168.1.1"
DNS1="192.168.1.1"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"

3、写一个脚本,完成以下功能 (1) 假设某目录(/etc/rc.d/rc3.d/)下分别有K开头的文件和S开头的文件若干; (2) 显示所有以K开头的文件的文件名,并且给其附加一个stop字符串; (3) 显示所有以S开头的文件的文件名,并且给其附加一个start字符串; (4) 分别统计S开头和K开头的文件各有多少;

#!/bin/bash
declare i j=0
declare i k=0

for i in `ls /etc/rc.d/rc3.d/`;do

    if  [[ $i =~  ^K ]];then    
        echo "$i stop"
    let j++

    elif [[ $i =~  ^S ]];then   
        echo "$i start"
    let k++

    fi
done

    echo "共$j个文件以K开头"
    echo "共$k个文件以S开头"

4、写一个脚本,完成以下功能 (1) 脚本能接受用户名作为参数; (2) 计算此些用户的ID之和;

#!/bin/bash
declare -i sum=0
if [ $# -le 0 ];then                           
  echo "Useage:bash.sh name1 name2..." 
  exit 1
fi

for i in $@;do                                 
  if id $i &> /dev/null;then                   
    let sum+=$(id -u $i)                      
  else
    echo "$i : does not exist!"                
  fi
done
echo "All user id: $sum"

5、写一个脚本 (1) 传递一些目录给此脚本; (2) 逐个显示每个目录的所有一级文件或子目录的内容类型; (3) 统计一共有多少个目录;且一共显示了多少个文件的内容类型;

#!/bin/bash

declare -i file=0
declare -i sfile=0
declare -i dir=0
declare -i sfile=0
declare -i other=0


for path in $@ ;do
       if [ -f $path ]; then                
       echo "$path is a Common file."
       let file++
   elif [ -L $path ]; then                  
       echo "$path is a Symbolic file."
       let sfile++
   elif [ -d $path ]; then                
       echo "$path is a Directory."
       let dir++
   elif [ -S $path ];then                   
       echo "$path is a socket file."
       let sfile++
   else
       echo "Other type."                   
       let other++


       fi
done
echo "Common file $file"
echo "Symbolic file $sfile"
echo "Directory $dir"
echo "socket file $sfile"
echo "Other type $other"

6、写一个脚本 通过命令行传递一个参数给脚本,参数为用户名 如果用户的id号大于等于500,则显示此用户为普通用户;

#!/bin/bash

read -p "please enter a use name " username

        user_id=`id -u $username`

if (id $username &> /dev/null); then
        if [ $user_id -gt 500 ]; then
                echo "$username is a common user."

        else
                echo "$username is a system user."
        fi
else
        echo "$username not exist"
fi
done

7、写一脚本,用ping命令测试172.16.250.20-172.16.250.100以内有哪些主机在线,将在线的显示出来;

#!/bin/bash
#
net="172.16.250"
    for i in {20..100};do
        if ping -c 1 -w 1 $net.$i &> /dev/null;then     
        echo " $net.$i is online "

        fi
    done

8、打印九九乘法表;

#!/bin/bash
for ((i=i;i<=9;i++)){
        for((j=1;j<=i;j++));do
        echo -n -e "$[i]x$[j]=$[$i*$j]\t"
 done   
        echo
}

 

原创文章,作者:victorli88,如若转载,请注明出处:http://www.178linux.com/66905

(0)
victorli88victorli88
上一篇 2017-02-27 12:26
下一篇 2017-02-27 13:52

相关推荐

  • N25第二周作业

    一、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。     (1).cat:cat命令可以用来合并文件,也可以用来在屏幕上显示整个文件的内容。     2.语法:cat [选项] [文件]…     3.选项: &nbsp…

    Linux干货 2016-12-26
  • N28-第三周博客作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。
    2、取出最后登录到当前系统的用户的相关信息。
    3、取出当前系统上被用户当作其默认shell的最多的那个shell。
    4、将/etc/passwd中的第三个字段数值最大的后10个用户的信息全部改为大写后保存至/tmp/maxusers.txt文件中。
    5、取出当前主机的IP地址,提示:对ifconfig命令的结果进行切分。
    6、列出/etc目录下所有以.conf结尾的文件的文件名,并将其名字转换为大写后保存至/tmp/etc.conf文件中。
    7、显示/var目录下一级子目录或文件的总个数。
    8、取出/etc/group文件中第三个字段数值最小的10个组的名字。
    9、将/etc/fstab和/etc/issue文件的内容合并为同一个内容后保存至/tmp/etc.test文件中。
    10、请总结描述用户和组管理类命令的使用方法并完成以下练习:
    (1)、创建组distro,其GID为2016;
    (2)、创建用户mandriva, 其ID号为1005;基本组为distro;
    (3)、创建用户mageia,其ID号为1100,家目录为/home/linux;
    (4)、给用户mageia添加密码,密码为mageedu;
    (5)、删除mandriva,但保留其家目录;
    (6)、创建用户slackware,其ID号为2002,基本组为distro,附加组peguin;
    (7)、修改slackware的默认shell为/bin/tcsh;
    (8)、为用户slackware新增附加组admins;

    Linux干货 2017-12-19
  • Shell 位置参数总结

    描述: 位置参数指的是shell脚本的命令行参数,同时也表示shell函数的额函数参数。 说明: 示例: #!/bin/sh echo "number:$#"     # 传给脚本的参数个数 echo "scname:$0" &n…

    Linux干货 2016-08-16
  • 用户及用户组管理使用的练习

    用户及用户组管理使用的练习 1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 先使用who得出登陆用户,通过uniq去重。 [root@mail ~]# who | grep -E -o “^[[:alnum:]]+” | uniq root 2、取出最后登录到当前系统的用户的相关信息。 思路:首先使用who取得最后…

    Linux干货 2018-03-18
  • class8 文本处理工具sed和vim编辑器

    一、处理文本的工具sed     Stream EDitor,  行编辑器     sed是linux上一款比较重要的流编辑器。     特点:一次处理一行内容,处理完成后,把缓冲区的内容送往屏幕。这样不断重复,直到文件末尾。 &…

    Linux干货 2016-08-11
  • mongodb数据库切分

    前言:  相信维护过有大数据的MySQL的运维人员一定对sharding这个非常了解,MySQL数据库切分自身没有工具需要借助第三方工具进行;MySQL切片是一件非常头疼而又难做的一件事,一旦切分错误,不仅不能优化数据库,反而会加剧数据库负载;mongodb相对于MySQL来说,数据库切分是mongodb与生俱来的功能,mongodb会自动切分数据…

    Linux干货 2015-09-05