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 08:36
下一篇 2016-10-17 08:36

相关推荐

  • 16个很有用的在线工具

    1. ExplainShell.com 命令解释 对于Linux用户来说每天都会写各种命令和脚本,那么你可以使用这个网站工具来查看命令式如何工作的,这样可以避免不必要的错误出现;也是一个很好的学习命令的方式 2. BashrcGenerator.com 定制个性命令提示符 简单说就是个性化生成命令提示符,可将生成的代码…

    Linux干货 2015-03-13
  • 第八周-Linux网络配置,软件安装,bash编程

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别 网桥:一种网络设备,负责网络桥接(network bridging)之用。桥接器将网络的多个网段在数据链路层(OSI模型第2层)连接起来(即桥接)。 集线器(Hub):是指将多条以太网双绞线或光纤集合连接在同一段物理介质下的设备。集线器是运作在OSI模型中的物理层。 二层交换机:工…

    Linux干货 2016-11-14
  • 磁盘分区和脚本练习

    1、创建一个10G分区,并格式为ext4文件系统 (1)要求其block大小为2048,预留空间百分比为2,卷标为MYDATA,默认挂载属性包含acl; mke2fs -t ext4 -b 2048 -m 2 -L MYDATA /dev/sdb5 tune2fs -o acl /dev/sdb5 (2)挂载至/etc/mydate目录,要求挂载时禁止自动运…

    Linux干货 2017-08-21
  • CentOS7常用网络管理命令总结

    一、CentOS7网络接口命名策略(systemd)二、CentOS7的基础网络管理命令2.1 NetworkManager服务2.2 nmtui文本交互式工具2.3 nmcli命令行接口工具nmcli的语法说明NetworkManager整体状态显示显示所有连接或仅活动的连接显示所有设备的状态显示指定设备的所有连接属性添加动态的以太网连接(DHCP)添加静…

    Linux干货 2016-06-09
  • 文本查找相关命令简单介绍

    文件查找命 在文件系统上查找符合条件的文件 非实时查找:基于索引查找 locate 实时查找:find locate介绍 依赖于事先构建的索引:索引的构建是在系统较为空闲时自动进行(周期性任务):手动更新数据库(updatedb) 索引构建过程需要遍历整个根文件系统,极消耗资源,生产中尽量避免手动更新。 语法: locate KEYWORD -i:忽略大小写…

    Linux干货 2017-04-10
  • rsyslog+mysql+loganalyzer日志服务器搭建

    rsyslog+mysql+loganalyzer日志服务器搭建 环境 服务器端:192.168.25.129,centos7 客户机端:192.168.25.130,centos7 rsyslog+Mysql服务器端的配置: 准备好msql server或mariadb server ]# yum -y install&nbs…

    Linux干货 2016-11-07

评论列表(1条)

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

    作业写的很好