shell脚本编程练习

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

在线的主机使用绿色显示

不在线的主使用红色显示

#!/bin/bash

#

for i in {1..254};do

if ping -c 6 -w 1 192.168.1.$i &> /dev/null;then

echo -e “\033[32m 192.168.1.$i \033[0m is up”

else

echo -e “\033[31m 192.168.1.$i \033[0m is down”

fi

done

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

  1. a) 使用ifconfig命令

例如 ifconfig eno16777736:0 192.168.0.100/24

  1. b) 使用Ip addr命令

例如 ip addr add 192.168.0.101/24 dev eno16777736

  1. c) 通过配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE来识别接口并完成配置;
  2. d) 使用nmtui命令

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

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

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

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

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

#!/bin/bash

#

declare -i n=0

declare -i m=0

 

for i in $(ls /etc/rc.d/rc3.d); do

 

if [ $(echo $i | cut -c 1)  == “K” ]; then

echo “$i stop”

let n++

elif [ $(echo $i | cut -c 1) == “S” ]; then

echo “$i start”

let m++

fi

 

done

 

echo “K is $n S is $m.”

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

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

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

#!/bin/bash

#

declare -i sum=0

 

for i in $@; do

if ! id $i &> /dev/null; then

echo “$i is not user”

else

let sum=$sum+$(id -u $i)

fi

done

 

echo “uid sum = $sum”

5、写一个脚本

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

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

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

#!/bin/bash

#

declare -i m=0

declare -i n=0

 

for i in $@;do

if [ -d $i ];then

for x in $i/*;do

echo $x

let m++

if [ -d $x ];then

echo $x

let n++

fi

done

else

echo “$i is not a dir or not file”

fi

 

done

 

echo ” dir = $n   file = $m ”

6、写一个脚本

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

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

#!/bin/bash

#

uname=$1

if id $uname &> /dev/null ;then

if [ $(id -u $uname) -ge 500 ];then

echo “this is a normal user”

else

echo “Not an ordinary user”

fi

else

echo “not a user”

fi

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

#!/bin/bash

#

for i in {20..100};do

if ping -c 1 172.16.250.$i &> /dev/null;then

echo “172.16.250.$i is online”

fi

done

8、打印九九乘法表

#!/bin/bash

#

for i in ‘seq 1 9’;do

for j in ‘seq 1 $i’;do

echo -n -e “${j}X${i}=$[$j*$i]\t”

done

echo

done

 

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

(4)
N27_wjxN27_wjx
上一篇 2017-11-15 15:59
下一篇 2017-11-15 19:20

相关推荐

  • Cent OS 6 编译方式安装LAMP

    细节要求: (1) 三者分离于三台主机; (2) 一个虚拟主机用于提供phpMyAdmin;另一个虚拟主机用于提供wordpress; (3) PHP使用FastCGI+xcache; (4) httpd使用非prefork的mpm模式; 一、CentOS6环境准备 1、OS(CentOS6.8)下开发环境包的安装,编译安装程序包需要使用 #yum grou…

    Linux干货 2017-02-24
  • keepalive

    HA Cluster: 集群类型:LB(lvs/nginx(http/upstream, stream/upstream))、HA、HP SPoF: Single Point of Failure 系统可用性的公式:A=MTBF/(MTBF+MTTR)(0,1), 95%几个9(指标): 99%, …, 99.999%,99.9999%;99%:…

    Linux干货 2017-05-22
  • 使用httpd反向代理模块实现tomcat负载均衡集群(上)

    前言  tomcat介绍:   tomcat是一个免费开放源代码的web应用服务器,不是一个完整意义上的Java EE服务器;它甚至都没有提供哪怕对一个主Java EE API的实现,但由于遵守apache开源协议,tomcat却有为众多的java应用程序服务器嵌入自己的产品中构建商业的java应用程序服务器,如JBoss和JOnAS等。…

    Linux干货 2015-07-21
  • 磁盘配额配置

     实现磁盘配额 1、启用home家目录下的磁盘配额挂载选项vim /etc/fstab #在vim下可通过r!blkid /dev/sdb1调取UUIDUUID=aqvKA0-bL5B-MsuF-PIzQ-fl3P-G7E0-j3UlOI    /home   ext4  &nb…

    Linux干货 2016-08-30
  • 【原创】Tengine+LUA+Nginx-GridFS+jemalloc编译安装

    操作系统 ubuntu 14.04 LTS Nginx-GridFS为nginx直接访问mongoDB的扩展模块,目前只支持到mongodb2.6.12 mongodb安装请自己百度 #安装依赖包保平安 apt-get install root-system-bin autoconf automake gcc c++ libgeoip-devlibxml++…

    Linux干货 2016-11-30
  • 第九周加密及DNS

    1、简述常见加密算法及常见加密算法原理,最好使用图例解说
    2、搭建apache或者nginx并使用自签证书实现https访问,自签名证书的域名自拟
    3、简述DNS服务器原理,并搭建主-辅服务器
    4、搭建并实现智能DNS

    Linux干货 2018-01-29

评论列表(1条)

  • 马哥教育
    马哥教育 2017-12-02 09:20

    作业不错,继续加油。