第九周 N21 总有刁民想害朕

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

#!/bin/bash
nologinuser=$(awk -F : '$NF~/\/nologin$/ {print $7}' /etc/passwd | wc -l)
#awk -F: '{if($NF=="/sbin/nologin")print $7}' /etc/passwd | wc -l这个效果同nologinuser
loginuser=$(awk -F : '$NF~/\^/nologin$/ {print $7}' /etc/passwd | wc -l)
#awk -F: '{if($NF!="/sbin/nologin")print $7}' /etc/passwd | wc -l 这个效果同loginuser
echo $nologin
echo $loginuser

2、写一个脚本

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

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

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

#!/bin/bash
 hostname=`hostname`
 if [ "$hostname" != "localhost" -a "$hostname" != "" ];then
  hostname=`hostname www.magedu.com`
 fi
 echo `hostname`

 

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

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

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

  #!/bin/bash
  read -p "input a devname like /dev/sda" devname
  if [ -e $devname ];then 
  fdisk -l $devname
  else echo "not match"
  fi

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

   脚本能够接受一个参数;

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

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

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

#!/bin/bash
      if [ $# -eq 0 ];then
      echo "give me a canshu"
      exit 19
      fi
      case $1 in 
      quit)
             echo "exit" && exit;;
       yes)
            echo "continue";;
       *)
       echo "exit 20" && exit 20  ;;
       esac

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 [ $# -eq 0 ];then
      echo "give me a canshu"
      exit 19
      fi
   case $1 in
   gzip)
    tar -zcvf  /backups/etc-`date +%Y%m%d`.tar.gz /etc
    ;;
   bzip2)
    tar -jvf  /backups/etc-`date +%Y%m%d`.tar.bz2 /etc
    ;;
   xz)
    tar -Jvf  /backups/etc-`date +%Y%m%d`.tar.xz /etc
    ;;
   *)
     echo "SB"
     ;;
   esac

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

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

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

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

   (4) 其它为无法判断;

#!/bin/bash
      if [ $# -eq 0 ];then
      echo "give me a canshu"
      exit 19
      fi
   if [ -f $1 ];then echo "file"
   else if [ -d $1 ];then echo "dir"
   else if [ -L $1 ];then echo "lnk"
   else echo "not known"
   fi

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

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

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

   #!/bin/bash
 hostname=`hostname`
 if [ "$hostname" != "localhost" -a "$hostname" != "" ];then
  hostname=`hostname mail.magedu.com`
 fi
 echo `hostname`

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

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

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

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

#!/bin/bash
    id $1
    if [ $? -eq 0]
    then num=grep '$1' /etc/passwd | cut -d:f3 
    else
    echo "give me  current id"
    fi
    if [  $num -eq 0 ];then 
    echo "root"
    else if [  $num -gt 0 -a $num -lt 500 ];then
    echo "system user" 
    else 
    echo "normal"
    fi

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

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

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

 #!/bin/bash
read -p "name" uid
id ^$uid\>
if [ $? -eq 0 ];then
num = $(grep "^$uid\>" /etc/passwd | cut -d: -f3)
sh = $(grep "^$uid\>" /etc/passwd |cut -d: -f7 )
fi
if [ $num -gt 500 -a "$sh" == `grep "sh$" $sh`];then
echo " can login"
else
echo " not login"
fi

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 [ -d $i ];then
    cp -d /var/log/$i /tmp/test1;
   elif [ -f $i ];then
    cp  /var/log/$i /tmp/test2;
   elif [ -d $i ];then   
    cp -d /var/log/$i /tmp/test3;
   else
    cp -a /var/log/$i /tmp/test4;
   fi
done

原创文章,作者:N21-总有刁民想害朕,如若转载,请注明出处:http://www.178linux.com/47789

(0)
N21-总有刁民想害朕N21-总有刁民想害朕
上一篇 2016-09-26 07:43
下一篇 2016-09-26 07:43

相关推荐

  • 文件系统的挂载使用总结

    文件系统使用 除根文件系统以外的文件系统创建后要使用需要先挂载至挂载点后才可以被访问,挂载点即分区设备文件关联的某个目录文件,挂载命令mount和 卸载命令umount; 挂载点: mount_point,作为被挂载的文件系统的访问入口; 作为挂载点需要满足三个条件:  (1)这个目录事先存在  (2)使用未被或不会被其他进程使用到的目录…

    系统运维 2016-11-19
  • 8.8作业

    4、如何设置tab缩进为4个字符?    set tabstop=4     5、复制/etc/rc.d/init.d/functions文件至/tmp目录;替换/tmp/functions文件中的/etc/sysconfig/init为/var/log; cp /etc/rc.d/init.d/functi…

    Linux干货 2016-08-11
  • 廉价磁盘阵列(RAID)与逻辑卷(lvm)

    RAID的作用介绍与LVM的创建分析   有计算机基础常识的人们都能了解,现如今生产出来的存储设备比如机械式磁盘,作为个体它的存储容量是有上限的,虽然曾经有人开发出大容量磁盘,但是成本太高,无法在社会中普及应用。对于这种大型服务器系统迫切需要的功能,催生出了一个叫做廉价冗余磁盘阵列的技术,歪果仁将它称为RAID。而后随着岁月的发展,又产生了逻辑卷l…

    Linux干货 2016-09-11
  • ssh 笔记

    ssh

    Linux干货 2018-01-08
  • 运维挖坑埋坑之旅—-413 Request Entity Too Large

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nolinux.blog.51cto.com/4824967/1575160        好久没写博文了,天天忙的喘不过来气。最近是该总结总结前段时间的工作了,顺便缓解下这两天的霉…

    Linux干货 2016-08-15
  • 关于大型网站技术演进的思考(十四)–网站静态化处理—前后端分离—上(6)

    原文出处: 夏天的森林  前文讲到了CSI技术,这就说明网站静态化技术的讲述已经推进到了浏览器端了即真正到了web前端的范畴了,而时下web前端技术的前沿之一就是前后端 分离技术了,那么在这里网站静态化技术和前后端分离技术产生了交集,所以今天我将讨论下前后端分离技术,前后端分离技术讨论完后,下一篇文章我将会以网站 静态化技术的角度回过头来…

    Linux干货 2015-02-26

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-27 09:38

    2,7不对,你这样做只是一个赋值的操作,并没有改变主机名,还是少一些判断条件