第九周 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)
上一篇 2016-09-26 07:43
下一篇 2016-09-26 07:44

相关推荐

  • Linux文件目录的权限

     Linux是多用户多任务的分时操作系统,如果每个人都对文件和目录都是随便访问的话,难么你的文件很有可能会被他人删除或修改,从而丢失数据。为此系统对文件增加了权限的机制来防止这种事情的发生。对文件而言,用户被分为三类:属主(onwer)、属组(group)、和其他(other)。常规的权限分为:读(r readable)、写(w writable)…

    Linux干货 2016-08-07
  • grep和正则表达式

    grep       作用:文本搜索工具,根据用户指定的“模式(过滤条件)”对目标文件逐行进行匹配检查;打印匹配到的行;       模式:由正则表达式的元字符及文本所编写出的过滤条件    语法:【选项】【文件】  &…

    2017-08-04
  • 内核编译之增加ntfs文件系统

    内核编译 内核编译 单内核体系设计,但充分借鉴了微内核设计体系的优点,为内核引入模块化机制。 内核组成部分:     Kernel,内核核心,一般为bzImage,通常在/boot目录下,名称为vmlinuz-WERSION- RELEASE;     Kernel object…

    Linux干货 2016-09-13
  • 马哥linux0728课程内容

    课堂学习内容   -ahistory list –.bash_histroy 保存历史列表到历史文件 -cclear history list 清空历史列表 -d deletehistory entru 清除历史列表某一条命令 -rread .bash_history 读历史文件中的命令到历史列表…

    Linux干货 2016-08-04
  • Linux系统压缩和解压缩工具gzip、bzip2、xz以及tar打包工具总结

    在Linux系统使用过程中,对于一些不是常用的文件,利用cpu的时间资源对文件进行压缩可以节省一定的磁盘空间,对系统中某个目录经常会有备份的需求,可以使用Linux系统中的tar打包工具实现,文件的压缩对于大量的网络文件传输可以节约带宽,同时也能降低服务器的负载,我们经常需要从网站下载软件包到本地主机,这些包基本都是打包压缩的,要想使用安装,需要我们解压缩他…

    Linux干货 2016-08-18
  • M20-1 8月3号作业

    1、三种权限rwx对文件和目录的不同意义 2、umask和acl mask 的区别和联系 3、三种特殊权限的应用场景和作用 4、设置user1,使之新建文件权限为rw——- 5、设置/testdir/f1的权限,使user1用户不可以读写执行,g1组可以读写 /testdir/dir的权限,使新建文件自动具有acl权限:user1:r…

    Linux干货 2016-08-05

评论列表(1条)

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

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