马哥教育网络班N22期+第9周课程练习

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

#!/bin/bashnolo_user=0login_user=0while read user;do
   bash_type=$(echo $user | cut -d: -f7)   if [ "${bash_type##*/}" == nologin ];then
      let nolo_user+=1
   else
       let login_user+=1
   fidone</etc/passwdecho ${nolo_user}echo ${login_user}

2、写一个脚本

(1) 获取当前主机的主机名,保存于hostname变量中;

(2) 判断此变量的值是否为localhost,如果是,则将当前主机名修改为www.magedu.com;

(3) 否则,则显示当前主机名;

#!/bin/bash#hostname=$(hostname)if [ "$hostname" == localhost ];then
    hostname www.magedu.com && echo `hostname`else
     echo `hostname`fi

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

(1) 传递一个磁盘设备文件路径给脚本,判断此设备是否存在;

(2) 如果存在,则显示此设备上的所有分区信息;

#!/bin/bash#for i in $@ ;do
   if ! blkid | grep "$i";then
      echo "$i no exist" 
   fidone

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

脚本能够接受一个参数;

(1) 如果参数1为quit,则显示退出脚本,并执行正常退出;

(2) 如果参数1为yes,则显示继续执行脚本;

(3) 否则,参数1为其它任意值,均执行非正常退出;

#!/bin/bash#case $1 inyes|y)   echo "continue"
   ;;
quit|q)    echo "quit"
    exit 0
    ;;
*)    exit 12
    ;;esac
      I

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#case $1 in
gzip)
   tar -zcf /backups/etc-20160613.tar.gz /etc
   ;;
bzip2)
   tar -jcf /backups/etc-20160613.tar.bz2 /etc
    ;;
xz)
   tar -Jcf /backups/etc-20160613.tar.xz /etc
   ;;
*)
   echo "error"
   exit 1
   ;;
esac

6、写一个脚本,接受一个路径参数:

(1) 如果为普通文件,则说明其可被正常访问;

(2) 如果是目录文件,则说明可对其使用cd命令;

(3) 如果为符号链接文件,则说明是个访问路径;

(4) 其它为无法判断;

#!/bin/bash#for i in $@;do
  if [ -f $i ];then
     echo "NORMAL"
  elif [ -d $i ];then
      echo "use cd command"
  elif [ -L $i ];then
      echo "file path"
  else
       echo "can not judge"
   fidone

7、写一个脚本,取得当前主机的主机名,判断

(1) 如果主机名为空或为localhost,或为""(none)"",则将其命名为mail.magedu.com;

(2) 否则,显示现有的主机名即可;

   #!/bin/bash#if [ `hostname` == localhost ] || [ -z `hostname` ];then
   hostname mail.mageedu.comelse
  echo $(hostname)
fi

8、写一脚本,接受一个用户名为参数;

(1) 如果用户的id号为0,则显示其为管理员;

(2) 如果用户的id号大于0且小于500, 则显示其为系统用户;

(3) 否则,则显示其为普通用户;

#!/bin/bash#for i in $@;do
  if ! id $i &>/dev/null;then
     echo "$i no exsit "
     continue
  elif  [ `id -u $i` -eq 0 ] ;then
     echo "$i is admin"
  elif [ `id -u $i` -gt 0 -a `id -u $i` -lt 500 ];then
     echo "$i is system user"
  else
     echo "$i is normal user"
  fidone

10、写一个脚本,传递一个用户名参数给脚本;

(1) 如果用户的id号大于等于500,且其默认shell为以sh结尾的字符串,则显示“a user can log system.”类的字符串;

(2) 否则,则显示无法登录系统;

#!/bin/bash#for i in $@ ;do
   grep "^\<${i}\>.*sh$" /etc/passwd &>/dev/null
   value=$(echo $?)   if ! id $i;then
      echo "user no exsit"
   elif [ $(id -u $i) -ge 500 ] && [ ${value} -eq 0 ] ;then
      echo "a user can log system"
   else
      echo "cannot log system"
   fidone

11、写一个脚本,完成如下任务 :

(1) 按顺序分别复制/var/log目录下的每个直接文件或子目录至/tmp/test1-testn目录中;

(2) 复制目录时,才使用cp -r命令;

(3) 复制文件时使用cp命令;

(4) 复制链接文件时使用cp -d命令;

(5) 余下的所有类型,使用cp -a命令;

#!/bin/bash # for i in `ls /var/log`;do 
   if ls -l /var/log/$i | grep "^d" &>/dev/null;then 
      cp -r /var/log/$i /tmp/test1-testn/ 
   elif ls -l /var/log/$i | grep "^[-]" &>/dev/null;then 
      cp  /var/log/$i /tmp/test1-testn/ 
   elif ls -l /var/log/$i | grep "^[l]" &>/dev/null;then 
      cp  -d /var/log/$i /tmp/test1-testn/ 
   else 
      cp  -a /var/log/$i /tmp/test1-testn/ 
   fi done

原创文章,作者:N22-武汉-enfp,如若转载,请注明出处:http://www.178linux.com/53345

(0)
N22-武汉-enfpN22-武汉-enfp
上一篇 2016-10-20 23:04
下一篇 2016-10-21 19:55

相关推荐

  • MySQL入门书籍和方法分享

    原文:http://cenalulu.github.io/mysql/mysql-book-for-newbie/           作者: 卢钧轶     本文罗列了一些适用于MySQL及运维入门和进阶使用的书籍。 背景:各大论坛上总是…

    Linux干货 2015-04-09
  • 马哥教育网络20期+第四周练习博客

    1、  复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 [root@localhost ~]# cd /home/ [root@localhost home]# mkdir tuser1 [root@localhost home]# cp -a /etc/skel&…

    Linux干货 2016-08-02
  • 激情的魅力samba服务(热舞篇)

    正如名称一样的迷人的一个服务,充满了激情。火热的天气中更添加一分悸动,本章就尝试对下面火热的samba服务是要如何破解并掌握于手心中。(本篇当中借鉴了鸟哥私房菜和linux就该这么学还有传说中的中华小题库,通过做题来对于samba进行初步的了解)后续还会添加一篇关于samba服务的文章,作为深度了解。 首先了解下samba的来源,听说作者老道(Tridgwe…

    Linux干货 2017-08-19
  • 网络N22期 第1周作业

    一、计算机组成及其功能 计算机由硬件部分和软件部分组成。     硬件部分包括,         1、CPU:包括运算器、控制器、寄存器、缓存,具有对数据控制和计算功能。         2、存储器:内部存储器、外部存储器,对数据提供存储功能。   …

    Linux干货 2016-08-15
  • 人志建,则无敌—网络基本知识加简单脚本练习

    马哥21期网络班-8周博客作业 1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 网桥:网桥就是把2个不同的网段桥接起来;可隔离冲突域。 集线器:集线器就是把多根以太网线或光纤集合连接在同一段物理介质下的装置;工作在物理层;不能隔离冲突域。 二层交换机:工作于OSI模型的第2层(数据链路层),故而称为二层交换机。二层交换技术的发…

    Linux干货 2016-08-29
  • Linux常用命令及bash特性(1)

    马哥教育网络班22期第二周课程练习 Linux简单使用(1) Linux常用命令介绍 linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心。 linux命令在系统中有两种类型:内置Shell命令和Linux命令。可以使用help、…

    Linux干货 2016-08-29