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)
a295053193a295053193
上一篇 2016-10-17
下一篇 2016-10-17

相关推荐

  • sed与vim相关练习

    sed 练习 以行为单位的新增/删除功能 1将 /etc/passwd 的内容列出并且打印行号,同时,请将第 2~5 行删除! 2在第二行后(亦即是加在第三行)加上“the is xing line?”字样! 3在第二行前(亦即是加在第而行)加上“the is xing line?”字样! 4在第二行后面加入两行字,例如“the is xing line &…

    Linux干货 2016-08-10
  • 第一周作业-01

    计算机组成    硬件:主要由5大部件组成,CPU包含运算器和控制器两大部件        CPU:运算器、控制器、寄存器、缓存        存储器:内存,RAM(Random Access Memory)    , Memory只支持平…

    Linux干货 2016-09-10
  • 马哥教育网络班20期+第6周课程练习

    1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; cp /etc/rc.d/rc.sysinit /tmp sed 's/^[[:space:]]/#&/' /tmp/rc.sysinit 2、…

    Linux干货 2016-08-15
  • Linux系统自动化安装基础

    Linux系统自动化安装基础 安装程序CentOS系统安装系统启动流程:bootloader–>kernel(initramfs)–>rootfs–>/sbin/init注意:安装过程中与启动过程中的文件不同 anaconda系统安装程序tui: 基于图形库curses的文本窗口gui:图形窗口 安装程序…

    Linux干货 2016-10-08
  • 记马哥教育第30期Linux云计算面授班开班典礼

    记马哥教育第30期Linux云计算面授班开班典礼

    2018-03-26
  • bash变量详解

       shell作为用户和Unix/Linux沟通的桥梁,既可以是一个可执行的二进制程序,同时也是一个具备了编程能力的程序设计语言,定义了各种各样的变量和参数,下面介绍一下shell之上的各种变量。 1、本地变量    特性:只对当前shell生效 [root@centos7 ~/bin]#cat …

    Linux干货 2016-08-15

评论列表(1条)

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

    作业写的很好