第八周作业

shell脚本简用

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

在线的主机使用绿色显示;

不在线的主使用红色显示;

#!/bin/bash
# __author__ zwp
touch /test/ip_ping.txt
ipnet=172.16.250.
trap "exit" INT  #用了Ctrl+c就执行exit
for ((i=1;i<=254;i++));do
    if ping -w 1 -c 1 $ipnet${i} &> /dev/null   
    then
        echo -e "\033[32;1m $ipnet${i} is alive. \033[0m"   #ping的通
    else
        echo -e "\033[31;1m $ipnet${i} is died.\033[0m"     #ping不通
    fi
done

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

1)ifconfig
    ifconfig eth0:1 192.168.1.2/24 
(2)ip
    ip addr add 192.168.1.2/24 label eth0:2 dev eth0
(3)nmcli(7版本)
    nmcli connection add con-name “second” ifname eth0:3 type ethernet ip4 192.168.1.2/24

3、写一个脚本,完成以下功能

(1) 假设某目录(/etc/rc.d/rc3.d/)下分别有K开头的文件和S开头的文件若干;

(2) 显示所有以K开头的文件的文件名,并且给其附加一个stop字符串;

(3) 显示所有以S开头的文件的文件名,并且给其附加一个start字符串;

(4) 分别统计S开头和K开头的文件各有多少;

#!/bin/bash
s=0
k=0
for i in `ls /etc/rc.d/rc3.d/*`;do
    case $i in
    /etc/rc.d/rc3.d/S*)
        echo ${i}###stop && let s++;;
    /etc/rc.d/rc3.d/K*)
        echo ${i}###start &&let k++
    esac
done
echo -en "以K开头的文件个数为:${k}\n"
echo -en "以S开头的文件个数为:${s}\n"

4、写一个脚本,完成以下功能

(1) 脚本能接受用户名作为参数;

(2) 计算此些用户的ID之和;

#!/bin/bash
declare -i sum
sum=0
for i in $@;do
    if id ${i} &> /dev/null
    then
        uid=`id -u ${i}`
        sum+=$uid
    else
        echo "no user ${i}"
    fi
done
echo "用户的ID之和:$sum"

5、写一个脚本

(1) 传递一些目录给此脚本;

(2) 逐个显示每个目录的所有一级文件或子目录的内容类型;

(3) 统计一共有多少个目录;且一共显示了多少个文件的内容类型;

#!/bin/bash
declare -i dir file dir_list file_list
dir=0
file=0
dir_list=0
file_list=0
for i in $@;do
    if [ -d $i ];then
        cd $i
        for j in `ls $i`;do
            echo "$j"
            file $j
            if [ -f $j ];then
                file+=1
            elif [ -d $j ];then
                dir+=1
            fi
        done
    fi
    dir_list+=$dir
    file_list+=$file
    echo -en "这里是$i\n"
done
echo -en "总共包含的目录数:${dir_list}\n"
echo -en "总共显示的文件数:${file_list}\n"

6、写一个脚本

通过命令行传递一个参数给脚本,参数为用户名

如果用户的id号大于等于500,则显示此用户为普通用户;

#!/bin/bash
id -u $1 &> /dev/null
if [ $? -eq "0" ];then
    if [ $(id -u $1) -gt 500 ];then
        echo "$1为普通用户。"
    fi
else
    echo "没有这个用户$1"
fi

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

#!/bin/bash
ip_net=172.16.250.
for ((i=20;i<=100;i++));do
    if ping -w 1 -c 1 $ip_net$i &> /dev/null;then
        echo "$ip_net$i"
    fi
done

8、打印九九乘法表;

#!/bin/bash
for i in `seq 1 9`;do
        for j in $(seq 1 $i);do
                echo -en "${j}x${i}=$[$j*$i]\t"
        done
        echo
done

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/89014

赞 (0)
N25-赵叔N25-赵叔
上一篇 2017-11-27 13:37
下一篇 2017-11-27 23:00

相关推荐

  • AIX下NFS共享导致命令行输入卡住

     1、事件描述:之前公司测试某厂商存储一体机的NFS共享功能,将该NFS目录共享给AIX主机使用(用于备份对应对应的数据库,因为数据库版本太老,Oracle8i的,不支持存储厂商的备份代理),测试完成后,厂商将设备直接关机(这时候在AIX上挂载的NFS目录没有进行卸载)。然后,当我们登陆到AIX服务器上的时候,发现每次敲入“df -g”或者“ls”…

    Linux干货 2016-07-07
  • Awk 高级应用

                              Awk 简介   Awk 是一种变成语言,用于在Linux/UNIX下对文本和数据进行扫描与处理,数据可以来自标准输入,文件 ,管道。Awk分别代表其作者的姓…

    2017-07-17
  • 在马哥学习linux第一天的感受

         来马哥教育好几天了,昨天算是正式开始,在昨天早上,举行了开班典礼,各位老师助教为我们介绍了在马哥教育进行培训的相关注意事项,下午进行了两场测试,首先有一个摸底测试,不得不说我真的是太菜了,除了一些比较简单的题目我还有些把握,相当一部分我都是似曾相识,但是也不是很确定,还有很大一部分我根本听都没听说过,看到别人都写的满满…

    Linux干货 2017-07-11
  • Shell脚本-循环基础

    Shell脚本-循环基础 背景: 正在学习Shell脚本之循环,发现Shell的循环和其他编程语言大同小异,逻辑上都是相通的,但在使用格式上却有点不同,在学习完Shell循环后,将学习的心得体会记录下来,以备今后复习。 介绍: 什么是Shell脚本:       shell script是利用shell的功能…

    2017-08-26
  • Linux的学习之路-第一周

    >N21-Keen-第一周作业 ### 1. 计算机的组成及其原理     >计算机的组成是根据冯诺依曼体系设计的,主要分为五大部分:控制器、运算器、存储器、输入设备和输出设备。          >其中控制器和运算器分布在CPU上,主要用来做控制和运算作用。存储器也就是…

    Linux干货 2016-07-16
  • 显示历史命令时间

        历史命令中默认是不显示时间的,如果我们想要在使用history命令时显示时间可以通过设置环境变量来实现。     HISTTIMEFORMAT变量的具体参数与date命令中的类似,可以参数date命令的对日期时间格式时行修改。    &nbs…

    Linux干货 2015-05-02