Linux基础之shell脚本编程(二)

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

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

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

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

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

  1 #!/bin/bash
  2 #author:BaoZhang
  3 #
  4 DIR=/etc/rc.d/rc3.d/
  5 k_start=0
  6 s_start=0
  7 for i in $(ls $DIR)
  8 do
  9   echo $i | grep "^K" &>/dev/null
 10   if [ $? -eq 0 ];then
 11     line=$( wc -l $DIR$i| cut -d" " -f1 )
 12     let k_start++
 13     echo "$i:stop:$line"
 14   else
 15     line=$(wc -l $DIR$i | cut -d" " -f1 )
 16     let s_start++
 17     echo "$i:start:$line"
 18   fi
 19 done
 20 echo "the total files start of k are:$k_start"
 21 echo "the total files start of s are:$s_start"

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

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

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

  1 #!/bin/bash
  2 #author:BaoZhang
  3 #
  4 sum=0
  5 if [ $# -gt 0 ];then
  6   for i in $*
  7   do
  8     id $i &>/dev/null
  9     if [ $? -eq 0 ];then
 10       echo "user $i exist "
 11       let sum+=$(id -u $i )
 12     else
 13       echo "user $i not  exist "
 14     fi
 15   done
 16 else
 17   echo "arguments must be great then 0 "
 18   exit 1
 19 fi
 20 echo "the sum of all user id is: $sum"

3、写一个脚本

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

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

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

  1 #!/bin/bash
  2 #author:BaoZhang
  3 #
  4 function  dir_count()
  5 {
  6   dir_number=0
  7   file_number=0
  8   cd $1 &>/dev/null
  9   if [ $? -eq 0 ];then
 10     for j in $(ls $1)
 11     do
 12       cd $1$j &>/dev/null
 13       if [ $? -eq 0 ];then
 14         let dir_number++
 15         file_number=$(ls $1$j | wc -l )
 16       else
 17         let file_number++
 18       fi
 19     done
 20    ls $1
 21    echo "in $1 ,total dir number is:$dir_number,total file is: $file_number"
 22    else
 23      echo "$1 is not a directory"
 24   fi
 25 }
 26 
 27 if [ $# -ge 1 ];then
 28   for i in $*
 29   do
 30     dir_count $i
 31   done
 32 else
 33   echo "argument invalid"
 34   exit 1
 35 fi


4、写一个脚本

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

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

  1 #!/bin/bash
  2 #author:BaoZhang
  3 #
  4 if [ $# -eq 1 ];then
  5   id_number=$(id -u $1 &>/dev/null)
  6   if [ $? -eq 0 ];then
  7     if [ $id_number > 500 ];then
  8       echo "usual user"
  9     else
 10       echo "system user"
 11     fi
 12   else
 13     echo "$1 not exist"
 14   fi
 15 else
 16 echo "argument must be only one"
 17 fi

5、写一个脚本

   (1) 添加10用户user1-user10;密码同用户名;

   (2) 用户不存在时才添加;存在时则跳过;

   (3) 最后显示本次共添加了多少用户;

  1 #!/bin/bash 
  2 #author:BaoZhang
  3 #       
  4 total_user=0
  5 for i in {1..10}
  6 do        
  7   id user$i &>/dev/null
  8   if [ $? -eq 0 ]; then
  9     echo "user$i exist" 
 10     echo "user$i" | passwd --stdin user$i &>/dev/null 
 11     echo "user$i change the password"
 12   else
 13     useradd user$i
 14     echo "user$i" | passwd --stdin user$i &>/dev/null
 15     echo "user$i add finished" 
 16     let total_user+=1
 17   fi  
 18 done
 19 echo "$total_user add"

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

  1 #!/bin/bash
  2 #author:BaoZhang
  3 #
  4 online_number=0
  5 no_online_number=0
  6 for i in 192.168.88.{100..200}
  7 do
  8   ping -c 2 -W 2 $i &>/dev/null
  9   if [ $? -eq 0 ];then
 10     echo "$i is onlline"
 11     let online_number++
 12   else
 13     echo "$i not online"
 14     let no_online_number++
 15   fi
 16 done
 17 echo "$online_number host online,$no_online_number not online "
 18

7、打印九九乘法表;

  1 #!/bin/bash
  2 #author:BaoZhang
  3 #
  4 for((i=1;i<10;i++))
  5 do
  6   for((j=1;j<=i;j++))
  7   do
  8     echo -n "$j*$i=$[ $j * $i ]"
  9     echo -n "  "
 10   done
 11   echo  ""
 12 done
~

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

(0)
zhangbaozhangbao
上一篇 2016-11-17 17:52
下一篇 2016-11-17 21:19

相关推荐

  • 简单描述LVS工作原理-第1部分

    一、NAT模式(VS-NAT) 原理:就是把客户端发来的数据包的IP头的目的地址,在负载均衡器上换成其中一台RS的IP地址,并发至此RS来处理,RS处理完成后把数据交给经过负载均衡器,负载均衡器再把数据包的原IP地址改为自己的IP,将目的地址改为客户端IP地址即可。期间,无论是进来的流量,还是出去的流量,都必须经过负载均衡器。 优点:集群中的物理服务器可以使…

    Linux干货 2016-08-15
  • 将两个局域网用openvpn连接起来

    考虑到我们做集群的时候需要用到可能有20台机器,可能我的要求跟别人的不一样的,我需要做20台左右的集群,不仅仅是会,而且需要非常熟练的搭建,最后通过脚步一键自动化部署安装。 目前我有两台电脑,一台可以运行7台,另一台可以运行12台左右,刚好可以满足的我的要求,但是我两台电脑都是设置的nat模式的网络,为什么我非要配置nat模式呢,根据集群架构思想,为了保证架…

    Linux干货 2017-05-01
  • 脚本进阶

    1、写一脚本,用ping命令测试192.168.1.1-192.168.1.10之间的所有主机的在线状态,在线的主机使用绿色表示,不在线的主机使用红色表示   2、如何给网络配置多个地址,有哪些方式   3、写一个脚本 (1)假设某目录(/etc/rc.d/rc3.d/)下分别有K开头的文件和S开头的文件若干 (2)显示所有以K开头的文件…

    2018-01-08
  • 基于ssl协议和openssl工具建立私有CA

    前言     要自建CA需先了解openssl工具和ssl协议还有各加密类型     ssl(Secure Socket Layer)安全套接字层当前版本为3.0,浏览器与Web服务器之间的身份认证和加密数据传输,它工作在传输层和各应用层之间,用户可以选择是否使用ssl进行传输,选择ssl协议将调用…

    Linux干货 2015-05-07
  • LVS介绍

    LVS介绍     LVS是linux virtual server的简写,是服务器集群的一种负载均衡解决方案,作为netfilter的补充套件,工作于内核空间。     常见的术语 CIP:客户端ip地址 RIP:后端服务器ip地址 VIP:lvs面向客户端的ip地址 DIP:lvs面向…

    Linux干货 2017-08-04
  • N26-第六周博客

    vim编辑器及简单shell脚本示例 请详细总结vim编辑器的使用并完成以下练习题 1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; [root@localhost tmp]# vim rc.sysinit:%s@^[[:space:]]\+[^[:s…

    系统运维 2017-02-16

评论列表(1条)

  • 马哥教育
    马哥教育 2017-04-13 08:57

    赞,几个脚本都写的比较好~~继续加油~