Net25-第9周作业

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

#!/bin/bash
for line in `cat /etc/passwd`;do
    if [[ `echo $line | awk -F: '{print $7}'` == '/sbin/nologin' ]];then
        n=$[++n]
    else
        s=$[++s]
    fi
done
echo "shell is /sbin/nologin    $n"
echo "shell is not /sbin/nologin   $s"

2、写一个脚本

  • (1) 获取当前主机的主机名,保存于hostname变量中;
  • (2) 判断此变量的值是否为localhost,如果是,则将当前主机名修改为www.magedu.com;
  • (3) 否则,则显示当前主机名;
#!/bin/bash
hostname=`hostname`
if [[ ${hostname} == 'localhost' ]];then
    hostname www.magedu.com
    sed -i  's@\(^HOSTNAME=\).*/\1www.magedu.com/g' /etc/sysconfig/network
    hostname
else
    echo ${hostname}
fi

3、写一个脚本,完成如下功能

  • (1) 传递一个磁盘设备文件路径给脚本,判断此设备是否存在;
  • (2) 如果存在,则显示此设备上的所有分区信息;
#!/bin/bash
check_parm(){
    if [ $# -lt 1 ];then
        echo "at least one disk file"
        exit 1
    fi
}

show_patitions(){
    for disk in "$@";do
        if [ -b ${disk} ];then
            fdisk -l ${disk}
        else
            echo "no such ${disk} disk!"
        fi
    done
}

check_parm "$@"
show_patitions "$@"

4、写一个脚本,完成如下功能
脚本能够接受一个参数;

  • (1) 如果参数1为quit,则显示退出脚本,并执行正常退出;
  • (2) 如果参数1为yes,则显示继续执行脚本;
  • (3) 否则,参数1为其它任意值,均执行非正常退出;
while true;do
    read -p "please choose(yes|no|quit):" parm
    case $parm in
    quit)
        echo "bye!"
        exit 
        ;;
    yes)
        continue
        ;;
    *)
        exit 2
    esac
done

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 "at least one parm..."
    exit 1
fi

mkdir -p /backups

case $1 in 
 gzip)
      tar -czf /backups/etc-`date +%F`.tar.gz /etc
      ;;
bzip2)
      tar -cjf /backups/etc-`date +%F`.tar.bz2 /etc
      ;;
xz)
     tar -Jcf /backups/etc-`date +%F`.tar.xz /etc
     ;;
*)
     echo "error compress tools"
     exit 2
     ;;
esac

6、写一个脚本,接受一个路径参数:

  • (1) 如果为普通文件,则说明其可被正常访问;
  • (2) 如果是目录文件,则说明可对其使用cd命令;
  • (3) 如果为符号链接文件,则说明是个访问路径;
  • (4) 其它为无法判断;
#!/bin/bash
if [ $# -lt 1 ];then
    echo "at least one parm..."
    exit 1
fi

if [ -f $1 ];then
    echo "$1 能被正常访问"
elif [ -d $1 ];then
    echo "$1 可以使用cd命令"
elif [ -l $1 ];then
    echo "$1 是个访问路径"
else
    echo "无法判断"
fi

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

(0)
N25_随心N25_随心
上一篇 2017-03-15
下一篇 2017-03-15

相关推荐

  • 早安,Linux

    希望能通过不断的努力,变成一个不一样的我。

    Linux干货 2017-07-11
  • 马哥教育网络班21期+第4周课程练习

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 [root@itop ~]# cp -r /etc/skel /home/tuserl [root@itop ~]# chmod -R&nbsp…

    Linux干货 2016-08-01
  • centos 7.3二进制安装mariadb10.2.8

    1 rpm -qa mariadb* 2 getent passwd mysql useradd -d /app/mysqldb -r -m -s /sbin/nologin mysql 3 tar xvf mariadb-10.2.8-linux-x86_64.tar.gz -C /usr/local/cd /usr/local/ln -s mariadb…

    Linux干货 2017-10-16
  • 第二周作业

    课后作业 1.Linux上的文件管理类命令都有哪些,其常用的使用方法及相关示例演示。 cp:复制命令 三种常用方式: cp[OPTION]…[-T] SOURCE DEST cp[OPTION]…SOURCE…DIRECTORY cp[OPTION]…-t DIRECTORY SOURCE 如果SRC是…

    Linux干货 2016-12-10
  • Linux运维不想早死的方法 一

    Linux运维不想早死的方法 一 为了提高工作效率,减少工作时间,爱惜生命,远离辐射;务必做好以下几点: 1,一定用快捷键         这里简单的说下几个常用的快捷按键。 Ctrl + l     清屏,相当于clear命令。 Ctrl…

    Linux干货 2017-03-26
  • 管理分区和文件系统及挂载设备

    管理分区 列出块设备 lsblk       分区工具fdisk fdisk -l /dev/sdX 查看硬盘分区信息 CentOS7: fdisk -l /dev/sda 默认开启dos及扇区显示模式    开启dos及柱面显示模式:fdisk -c=dos -u=cylinders -l /dev/sda…

    2017-08-26

评论列表(1条)

  • 马哥教育
    马哥教育 2017-03-29 17:14

    不错,连脚本函数都已经用的很熟练了。