马哥教育网络班19期+第九周课程练习

1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin),分别这两类用户的个数,通过字符串比较来实现。

#!/bin/bash

for user_shell in `awk -F: '{print $7}' /etc/passwd`;do

     if [ "$user_shell" = "/sbin/nologin" ];then

        echo "`awk -F: '{print $7}' /etc/passwd | grep -c /sbin/nologin` users is nologin"
        break

     elif [ "$user_shell" != "/sbin/nologin" ];then
        echo "`awk -F: '{print $7}' /etc/passwd | grep -cv /sbin/nologin` users is login"

     fi
done

2、写一个脚本
 (1) 获取当前主机的主机名,保存于hostname变量中;
 (2) 判断此变量的值是否为localhost,如果是,则将当前主机名修改为www.magedu.com;
 (3) 否则,则显示当前主机名;

#!/bin/bash

hostname=`hostname`

if [ "$hostname" == "localhost" ];then
        hostname www.magedu.com
else
      hostname
fi

3、写一个脚本,完成如下功能
 (1) 传递一个磁盘设备文件路径给脚本,判断此设备是否存在;
 (2) 如果存在,则显示此设备上的所有分区信息;

#!/bin/bash
read -p "please input a block device: " device
case $device in
/dev/[hs]d*)
        echo "`fdisk -l $device`"
;;
*)
        echo "please input a exist block device"
;;
esac

4、写一个脚本,完成如下功能
脚本能够接受一个参数;
 (1) 如果参数1为quit,则显示退出脚本,并执行正常退出;
 (2) 如果参数1为yes,则显示继续执行脚本;
 (3) 否则,参数1为其它任意值,均执行非正常退出;

#!/bin/bash

read -p "please input a word: " i
if  [ $i == "quit" ];then
        echo "ok"
    elif [ $i == "yes" ];then
         echo "please retry"
         read -p "please input a word: " i
      if [ $i == "quit" ];then
         echo "ok"
      else
         echo "error exist"
         exit 1
      fi
    else
         echo "error exist"
         exit 1
    fi

5、写一个脚本,完成如下功能
   传递一个参数给脚本,此参数为gzip、bzip2或者xz三者之一;
   (1) 如果参数1的值为gzip,则使用tar和gzip归档压缩/etc目录至/backups目录中,并命名为/backups/etc-20160613.tar.gz;
   (2) 如果参数1的值为bzip2,则使用tar和bzip2归档压缩/etc目录至/backups目录中,并命名为/backups/etc-20160613.tar.bz2;
   (3) 如果参数1的值为xz,则使用tar和xz归档压缩/etc目录至/backups目录中,并命名为/backups/etc-20160613.tar.xz;
   (4) 其它任意值,则显示错误压缩工具,并执行非正常退出

#!/bin/bash

if  [ ! -e /backups ];then
mkdir /backups
fi

read -p "please choose the Compression tool(gzip|bzip2|xz) " i

case $i in 

gzip)
        tar czvf /backups/etc-20160613.tar.gz /etc
;;

bzip2)
        tar cjvf /backups/etc-20160613.tar.bz2 /etc
;;

xz)
        tar cJvf /backups/etc-20160613.tar.xz /etc
;;

*)
        echo "please choose the correct tools"
        exit 1
;;

esac

6、写一个脚本,接受一个路径参数:
   (1) 如果为普通文件,则说明其可被正常访问;
   (2) 如果是目录文件,则说明可对其使用cd命令;
   (3) 如果为符号链接文件,则说明是个访问路径;
   (4) 其它为无法判断;

#!/bin/bash
read -p "please input something " n

if [ -f $n ];then
   echo "$n can be access"
elif [ -d $n ];then
   echo "$n can be use "cd" command"
elif [ -L $n ];then
   echo "this is a access path"
else
   echo "$n can't be judge" 
fi

7、写一个脚本,取得当前主机的主机名,判断
   (1) 如果主机名为空或为localhost,或为""(none)"",则将其命名为mail.magedu.com;
   (2) 否则,显示现有的主机名即可;

#!/bin/bash
hostname=`hostname`
if [ -z "$hostname" ]||[ $hostname == "localhost" ]||[ $hostname == \"\"\(none\)\"\" ];then
    hostname mail.magedu.com
else
    echo $hostname
fi

8、写一脚本,接受一个用户名为参数;
   (1) 如果用户的id号为0,则显示其为管理员;
   (2) 如果用户的id号大于0且小于500, 则显示其为系统用户;
   (3) 否则,则显示其为普通用户;

#!/bin/bash

if [ $# -eq 1 ] && id $1>/dev/null;then
uid=`grep "$1" /etc/passwd | cut -d: -f3`
 if [ $uid -eq 0 ];then
  echo "this is root"
 elif [ $uid -gt 0 ]&&[ $uid -lt 500 ];then
  echo "this is system user"
 elif [ $uid -gt 500 ];then
  echo "this is normal user"
 fi
 else
  echo "please input the exist username"
fi

9、写一个脚本,传递一个用户名参数给脚本;
   (1) 如果用户的id号大于等于500,且其默认shell为以sh结尾的字符串,则显示“a user can log system.”类的字符串;
   (2) 否则,则显示无法登录系统;

#!/bin/bash

if [ $# -eq 1 ]&&id $1>/dev/null;then
uid=`grep "$1" /etc/passwd | cut -d: -f3`
 if [ $uid -ge 500 ]&& grep "sh$" /etc/passwd>/dev/null;then
        echo "a user can log system"
 else
        echo "the user can't login"
 fi
else
 echo "please input a exist user"
fi

10、写一个脚本,完成如下任务 :
   (1) 按顺序分别复制/var/log目录下的每个直接文件或子目录至/tmp/test1-testn目录中;
   (2) 复制目录时,才使用cp -r命令;
   (3) 复制文件时使用cp命令;
   (4) 复制链接文件时使用cp -d命令;
   (5) 余下的所有类型,使用cp -a命令;

#!/bin/bash

if ! [ -d /tmp/test1-testn ];then
    mkdir -p /tmp/test1-testn
fi
for file in `ls /var/log`;do
    if [ -d $file ];then
        cp -r /var/log/$file /tmp/test1-testn
    elif [ -f $file ];then
        cp  /var/log/$file /tmp/test1-testn
    elif [ -L $file ];then
        cp -d /var/log/$file /tmp/test1-testn
    else
        cp -a /var/log/$file /tmp/test1-testn
    fi
done

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

(0)
N19_leoN19_leo
上一篇 2016-06-30 09:35
下一篇 2016-07-02

相关推荐

  • 本地yum仓库配置以及创建yum仓库

    如何使用光盘当做本地yum仓库?     1.挂载光盘至某目录,例如/media/cdrom      [root@CentOS7 ~]# mount /dev/cdrom /media/cdrom/ mount: /dev/sr…

    Linux干货 2016-08-23
  • Флагман Казино 🎰 Официальный сайт Flagman Casino 2025

    Флагман Казино 2025 🚀 💸 Легальное онлайн-казино с топовыми слотами, быстрыми выплатами и бонусом +250FS! 🎁 Бонус +250FS 🎰 Игровой зал 🎁 Бону…

    Linux干货 3天前
  • 马哥教育网络班21期+第14周课程练习

    系统的INPUT和OUTPUT默认策略为DROP; iptables -P INPUT DROP iptables -P OUTPUT DROP 1、限制本地主机的web服务器在周一不允许访问;新请求的速率不能超过100个每秒;web服务器包含了admin字符串的页面不允许访问;web服务器仅允许响…

    Linux干货 2016-10-09
  • 配额-and-RAID

    配置配额系统 控制单个用户,或组在某磁盘上所能占的最大空间大小 配额是基于磁盘分区的,不基于文件 如何基于软件控制配额:          1、设置分区挂载选项          &nbsp…

    Linux干货 2016-08-29
  • 系统启动流程 grub

    grub CentOS 6启动流程: POST —> Boot Sequence(BIOS) —> Boot Loader —>Kernel(ramdisk) —> rootfs —> switchroot —> /sbin/init—>(/etc/inittab, /etc/init/*.conf) —> 设…

    Linux干货 2016-09-16
  • 逻辑卷(LVM)管理实例详解

    LVM基本术语 下面是LVM需要了解的基本术语:    物理卷(PV physical volume): 它可以是物理硬盘上的分区,也可以是整块物理硬盘;  卷组(VG volume group): 建立在物理卷之上,一个卷组至少包括一个物理卷,可以动态增删物理卷;  逻辑卷(LV logical volume):建立…

    Linux干货 2016-09-01

评论列表(1条)

  • 马哥教育
    马哥教育 2016-07-04 14:01

    写的很好,排版也很棒,但是有的题目还是有点小瑕疵,比如第4个,如果用while会不会更好 加油