马哥教育网络班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

相关推荐

  • lamp的搭建

    方法一编译安装amp:   1.系统环境:CentOS 6,7       CentOS6:apr,apr-util的版本为1.3.9,不适合httpd-2.4    CentOS7:apr,apr-util的版本为1.4+2.开发环境需要安装:    Developm…

    Linux干货 2016-10-16
  • Linux发展史

    一、从 Unix 到 Linux 这一段历史         早在 Linux 出现之前的二十年 ( 大约在 1970 年代 , 就有一个相当稳定而成熟的操作系统存在了!那就是 Linux 的老大哥『 Unix 』是也!怎么这么说呢?!他们这两个家伙有什么关系呀?这里就给他说一说啰!众所皆知的,Linux 的核心是由 …

    Linux干货 2016-10-14
  • 08-vim文本编辑器

    简介: vi: Visual Interface,文本编辑器 文本:ASCII, Unicode 文本编辑种类: 行编辑器: sed 全屏编辑器:nano, vi vim – Vi Improved 其他编辑器: gedit 一个简单的图形编辑器 gvim 一个Vim编辑器的图形版本 打开文件: # vim [OPTION]… FIL…

    2017-03-16
  • linux发展史

    Linux 发展史 说明 此前对linux认识模糊一知半解,近期通过学习将自己对于linux的发展总结一下方便大家日后的学习。那Linux是目前一款非常火热的开源操作系统,可是linux是什么时候出现的,又是因为什么样的原因被开发出来的呢。以下将对linux的发展历程进行详细的讲解。    目录 一、Linux发展背景 二、UINIX的诞…

    Linux干货 2016-10-14
  • shell脚本编程初步

    shell脚本编程初步    随着课程学习的深入,我们已经学习了一些常用的命令,会去解决了一部分简单的问题,但是这不能满足复杂的工作,它可以帮助我执行自动化的常用命令、执行系统管理和故障排除、创建简单的应用程序、处理文本或文件。所以我们开始了shell脚本的编程,帮助我们更好的去完成工作。简单地说,shell编程相当于帮我们之前…

    Linux干货 2016-08-15
  • 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条)

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

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