22期第九周课堂作业

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

#!/bin/bash
declare -i a=0
declare -i b=0
n=`cat /etc/passwd |cut -d: -f 7`
for i in $n;do
if [ $i == /sbin/nologin ];then
let a++
else
let b++
fi
done
echo "the nologin users number is": $a
echo "the login number users is": $b

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

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

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

    3、写一个脚本,完成如下功能
        (1)   传递一个磁盘设备文件路径给脚本,判断此设备是否存在;

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

#!/bin/bash
if [ $# -lt 1 ];then
  echo "please input in least one device"
 exit 2
fi
if [ -e $1 ];then
 fdisk -l $1
else
  echo "no such device"
fi

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

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

#!/bin/bash
read -p "pelase input a common quit/yes": a
if [ $a == quit ];then
  echo "exit script"
  exit 0
elif [ $a == yes ];then
  echo "script continue"
else
   echo "error agrument"
   exit 2
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 [ $# -lt 1 ];then
 echo "please input in a common"
fi
if [ $1 == gzip ];then
 tar -zcf  /backups/etc-20160613.tar.gz /etc
elif [ $1 == bzip2 ];then
 tar -jcf /backups/etc-20160613.tar.bz2 /etc
elif [ $1 == xz ];then
 tar -Jcf /backups/etc-20160613.tar.xz /etc
else
  echo "argument error"
  exit 2
fi

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

       (4) 其它为无法判断;

if [ $# -lt 1 ];then
  echo "please input a url"
fi
if [ -L $1 ];then
  echo "this is a access url"
elif [ -d $1 ];then
  echo "can use cd common"
elif [ -f $1 ];then
  echo "normal access"
else
 echo "unknow"
fi

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

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

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

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

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

#!/bin/bash
a=`id -u $1`
if ! grep "^$1\>" /etc/passwd &> /dev/null; then
 echo "no such user"
elif [ $a -eq 0 ];then
 echo "this is root"
elif [ $a -lt 500 ];then
echo "this system user"
else
  echo "this regular user"
fi

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

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

#!/bin/bash
if [ $# -lt 1 ];then
  echo "please input a agarument"
  exit 2
fi
if ! grep "^$1\>" /etc/passwd &> /dev/null;then
 echo "no such user"
 exit 3
fi
a=`id -u $1`
b=`grep -o "^user1\>.*sh$" /etc/passwd |grep -o sh`
if [ $a -ge 500 ] && [ $b == sh ];then
  echo "a user can log system"
else
   echo "can 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 /var/log/*;do
 if [ -d $i ];then
  cp -r $i /tmp/test1-testn
 elif [ -L $i ];then
  cp -d $i /tmp/test1-testn
 elif [ -f $i ];then
  cp  $i /tmp/test1-testn
 else
   cp -a $i /tmp/test1-testn
 fi
done

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

(0)
上一篇 2016-10-17 08:36
下一篇 2016-10-17 08:37

相关推荐

  • 第三周作业

    1、列出1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。[root@localhost ~]# who | cut -d ‘ ‘ -f1 | sort -u 2、取出最后登录到当前系统的用户的相关信息。[root@localhost ~]# who | tail -1 | export &am…

    Linux干货 2017-12-16
  • yum——替你排忧解难的前端包安装工具

    yum CentOS前端工具: yum, dnf 统一资源定位符:URL YUM: Yellowdog Update Modifier,rpm的前端程序,用来解决软件包相关依赖性,可以在多个库之间定位软件包,自动安装软件包,以及该软件包的依赖包,up2date的替代工具 yum repository: yum repo (yum仓库)  &nbsp…

    Linux干货 2016-08-24
  • linux 进程及作业管理

     1、Process: 运行中的程序的一个副本,是被载入内存的一个指令集合 进程ID(Process ID,PID)号码被用来标记各个进程 UID、GID、和SELinux语境决定对文件系统的存取和访问权限, 通常从执行进程的用户来继承 存在生命周期 Uninterruptible sleep: 不可中断的睡眠 Interruptible slee…

    Linux干货 2017-08-28
  • Linux系统下的bonding设置

    bonding多个物理网卡聚合成一个虚拟网卡     Bonding,其原理是讲多个物理网卡聚合成一个虚拟网卡,一张网卡正常工作,其余网卡作为备用,每隔一段时间(miimon=毫秒),向正常工作的网卡发一状态询问,若没回复,则认为其运行失败,然后就会启用备用网卡,但是IP地址不会改变。   &nbs…

    Linux干货 2016-09-07
  • N26-第五周作业

    1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; grep ‘^[[:space:]]\+’ /boot/grub2/grub.cfg 2、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行; grep ‘^#[[:space:]]\+’ /etc/rc.d/rc….

    Linux干货 2017-03-06
  • 设计模式(八)装饰器模式Decorator(结构型)

    1. 概述        若你从事过面向对象开发,实现给一个类或对象增加行为,使用继承机制,这是所有面向对象语言的一个基本特性。如果已经存在的一个类缺少某些方法,或者须要给方法添加更多的功能(魅力),你也许会仅仅继承这个类来产生一个新类—这建立在额外的代码上。       通过继…

    Linux干货 2015-07-03

评论列表(1条)

  • 马哥教育
    马哥教育 2016-10-25 13:17

    作业写的很好