马哥教育网络班21期-第九周课程练习

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

#!/bin/bash
m=0
n=0
for i in `awk -F: '{print $NF}' /etc/passwd`
do
  if [[ "$i" = "/usr/sbin/nologin" ]];then
      let m+=1
  else
      let n+=1
  fi
done
echo "the shell is nologin :$m"
echo "the other is :$n"

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

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

3、写一个脚本,完成如下功能
    (1) 传递一个磁盘设备文件路径给脚本,判断此设备是否存在;
    (2) 如果存在,则显示此设备上的所有分区信息;

#!/bin/bash
echo "please input a dev file:" 
read DEV
ls -l /dev|grep $DEV &> /dev/null
if [ $? -eq 0 ];then
  fdisk -l /dev/$DEV
else
  exit 100
fi

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

#!/bin/bash
case $1 in
quit)
    echo "exit this script"
    exit 0
    ;;
yes)
    echo "continue..."
    ;;
*)
   exit 127
    ;;
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
echo "please select one opthion in (gzip/bzip2/xz):"
read OPTION
if [ ! -d /backups/ ];then
    mkdir /backups
fi
case $OPTION in 
gzip)
    tar -czvf /backups/etc-`date +%Y%m%d`.tar.gz /etc/
    ;;
bzip2)
    tar -cjvf /backups/etc-`date +%Y%m%d`.tar.bz2 /etc/
    ;;
xz)
    tar cvf /backups/etc-`date +%Y%m%d`.tar /etc/
    xz -z /backups/etc-`date +%Y%m%d`.tar
    ;;
*)
    exit 127
    ;;
esac

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

#!/bin/bash
echo "please input a path"
read PATH
if [ -d $PATH ];then
   echo "This is a directory.You can apply the 'cd' on it."
elif [ -f $PATH ];then
   echo "This a regular file.You can access it normally."
elif [ -L $PATH ];then
   echo "This is a path to others"
else
   echo "Sorry,I can't make it"
fi

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

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

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

#!/bin/bash
echo "please input the username:"
read p
  a=`grep ^"\b${p}\b" /etc/passwd|cut -d: -f3`
echo $a
if [ $a -eq 0 ];then
    echo "hello,administrater"
elif [ $a -gt 0 -a $a -lt 500 ];then
    echo "this is a system user"
else
    echo "this is a common user"
fi

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

#!/bin/bash
echo "please input the username:"
read p
  a=`grep ^"\b${p}\b" /etc/passwd|cut -d: -f3`
echo $a
  s=`grep ^"\b${p}\b" /etc/passwd|awk -F: '{print $NF}' |cut -d"/" -f3`
echo $s
if [ $a -ge 500 -a ${s:0-2} = "sh" ];then
    echo "a user can log system."
else
    echo "login denied"
fi

11、写一个脚本,完成如下任务 :
   (1) 按顺序分别复制/var/log目录下的每个直接文件或子目录至/tmp/test1-testn目录中;
   (2) 复制目录时,才使用cp -r命令;
   (3) 复制文件时使用cp命令;
   (4) 复制链接文件时使用cp -d命令;
   (5) 余下的所有类型,使用cp -a命令;

#!/bin/bash
cd /var/log
for i in `ls`
do   
    if [ -d $i ];then
       cp -r $i /tmp/test1
    elif [ -f $i ];then
       if [ ! -d /tmp/test2 ];then
          mkdir /tmp/test2
       fi
       cp $i /tmp/test2/
    elif [ -L $i];then
       cp -d $i /tmp/test3
    else
       cp -a $i /tmp/test4
    fi  
done

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

赞 (0)
ππ
上一篇 2016-09-15 22:21
下一篇 2016-09-15 22:21

相关推荐

  • 分析命令中含有e2fs

    分析命令中含有e2fs 目  录 1、mke2fs  2、tune2fs 3、dump2fs 4、e2fsck 这周学到了几条命令,超级纳闷为什么这些命令都带有e2fs ,看不懂。毕竟在我的认知中linux的命名大部分都是见名知义,例如history(查看历史命令),fdisk (分区),反观这些命令很长而且还是奇怪的…

    Linux干货 2017-08-20
  • MySQL/MariaDB数据库基于SSL实现主从复制

    前言 备份数据库是生产环境中的首要任务,重中之重,有时候不得不通过网络进行数据库的复制,由于MySQL/MariaDB的主从复制是明文传送的,如果在生产环境中跨网络传送,数据的安全性就无法完全保证,为了解决这一问题,我们需要一种安全的方式进行传送,即基于SSL加密进行数据传输。 部署配置 实验拓扑 实验环境 系统环境:CentOS6.6 数据库版本:mari…

    Linux干货 2015-06-21
  • 第1周作业

    第一周作业   1、描述计算机的组成及其功能。 计算机由运算器,控制器,存储器,输入装置和输出装置五大部件组成计算机 运算器,控制器:CPU 存储器:内存和硬盘 输入装置和输出装置:键鼠和显示器   2、按系列罗列Linux的发行版本,并描述不同版本的联系和区别。   linux的发行版本大致分为两大类,一类是商业公司维护的发行…

    Linux干货 2017-08-24
  • 【N25第七周作业】

    1、创建一个10G分区,并格式为ext4文件系统;    (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl; [root@localhost ~]# mke2fs -t ext4 -b 2048 -m 2 -L MYDATA /dev/sdb1 mke2fs 1.42.9 (28…

    2017-04-13
  • 18文本处理工具sed

    18文本处理工具sed     sed,全称Stream EDitor,是一种流编辑器,它一次处理一行内容,但是它构思巧妙,功能强大,是运维工作中必不可少的文本处理工具,也是因为这样,被称作文本处理三剑客之一。     sed在处理时,把当前处理的行李存储在临时缓冲区中,这个区域被称作“模式空间pa…

    Linux干货 2016-08-12
  • nfs,samba同步LAMP与Mysql

    使用nfs功能实现WEB页面同步     拓扑图见NFS实现LAMP冗余:     目的:使用网络文件系实现LAMP的分步式资源共享    配置步骤:    配置test1:搭建NFS环境:&nbsp…

    2017-04-26

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-19 17:39

    输入的时候可以直接用read -p ,1题不对