第八周-Shell脚本编程

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

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

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

#!/bin/bash

for i in {1..254};
do
{
  ip=172.16.250.$i
  if ping -c 1 -w 1 $ip &> /dev/null ; then
    echo -e "\033[32;49;1m$ip\033[39;49;0m\n"
  else
    echo -e "\033[31;49;1m$ip\033[39;49;0m\n"
  fi
} &
done
wait

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

(1)、使用ifconfig命令

ifconfig eth0:0 192.168.1.200 up

(2)、使用ip命令

ip addr add 192.168.1.200/24 dev eth0

(3)、新建子接口配置文件(永久性)

vim /etc/sysconfig/network-scripts/ifcfg-eth0:0
添加以下配置:
DEVICE=eth0:0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.1.200
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
保存后启用此接口
ifup eth0:0

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
  S*)
 echo "$i start"
 S=$[S+1]
  ;;
  K*)
 echo "$i stop"
 K=$[K+1]
  ;;
esac
done
echo -e "S $S Files\nK $K Files"

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

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

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

!/bin/bash

sum=0
for i in $@;do
 if id $i &>/dev/null ;then
    sum=$[sum+`id -u $i`]
 else
    echo  "User $i is no existed"
 fi
done
echo "Users id sum is $sum"

5、写一个脚本

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

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

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

#!/bin/bash
dir=0
files=0
for i in $@;do
 file $i/*
  for e in `ls $i`;do
     if [ -d $i/$e ];then
       dir=$[dir+1]
     fi
     files=$[files+1]
  done
done
echo " dir = $dir ,all file type= $files "

6、写一个脚本

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

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

#!/bin/bash

for i in $@;do
   if ! id $i &>/dev/null;then
      echo "user $i no exist"
   elif [ `id -u $i` -ge 500 ];then
      echo "$i is general user"
   fi
done

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

#!/bin/bash
for i in {20..100};
do
{
  ip=172.16.250.$i
  if ping -c 1 -w 1 $ip &> /dev/null ; then
    echo -e "\033[32;49;1m$ip\033[39;49;0m\n"
  fi
} &
done
wait

8、打印九九乘法表;

#!/bin/bash

for i in  `seq 9`;do
         for j in `seq 1 $i`;do
         echo -n "$i*$j= `echo $(($i*$j))`      "
         done
         echo
done

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

(0)
N27_whatN27_what
上一篇 2017-08-23
下一篇 2017-08-23

相关推荐

  • ~~ 1;列出当前系统上所有已经登录的用户的用户名,注意:同一用户登录多次,则只显示 一次即可。 # who | cut -d" " -f 1 | sort -u 2;取出最后登录到当前系统的用户的相关信息 # id $(who | tail -1 |cut -d" " -f 1) # last | head -1 3…

    Linux干货 2017-01-03
  • TIME_WAIT引起Cannot assign requested address报错

    1.  问题描述      有时候用redis客户端(php或者java客户端)连接Redis服务器,报错:“Cannot assign requested address。”      原因是客户端频繁的连接服务器,由于每次连接都在很短时间内结束,导致很多的TIME_WAIT。所以新的连…

    Linux干货 2016-03-09
  • Linux第二周总结

    1、Linux上的文件管理命令都有哪些,其常用的使用方法及其相关示例演示。 Cp、mv、rm cp命令: copy 单源复制:cp [OPTION]… [-T] SOURCE DEST 如果DEST不存在:则事先创建此文件,并复制源文件的数据流至DEST中; 如果DEST存在: 如果DESST是非目录文件;则覆盖目标文件; 如果DEST是目录文件…

    2017-07-09
  • systemd

    systemd的新特性(centos 7) 系统引导时实现服务并行启动 按需激活进程,在此之前可以让进程处于半活动状态 系统状态快照:能够自我保存当前系统上没一个用户空间的进程运行状态快照,将来可以迅速恢复到某一种状态,因此用户空间有了时间机器。可以回滚到过去某一时刻的状态 内在的基于依赖关系定义的服务控制逻辑 对与systemd来讲,引入了一个新的核心概念…

    Linux干货 2016-09-23
  • N22-℡浮生.若夢 ╮第六周作业

    1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; cp /etc/rc.sysinit /tmp/rc.sysinit vim/tmp/rc.sysinit :%s@^[[:space:]]\+@#&@g 2、复制/boot/grub…

    Linux干货 2016-10-29
  • 运维学习笔记-看看别人家的Puppet代码

    这篇博客的目的是通过分析Forge上的Puppet模块来加深一些概念的理解,同时了解一些常用用法。 今天的例子是jfryman-nginx模块,它是原puppetlabs-nginx模块的升级版本,依赖3个Puppet公共模块:puppetlabs-apt,puppetlabs-stdlib和puppetlabs-concat。安装非常方便,puppet m…

    Linux干货 2016-06-23