N22-第九周作业

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

#!/bin/bash
#
declare -i log_user
declare -i notlog_user
while read line;do
    usershell=$(echo $line | cut -d: -f7)
    if [[ "$usershell" == "/sbin/nologin" ]];then
        let notlog_user++
    else
        let log_user++
    fi
done < /etc/passwd    
echo "There are $log_user users can log on,$notlog_user users need not log on."

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

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

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

```
#!/bin/bash
#
if fdisk -l | grep "^Disk $1\>" &> /dev/null;then
    fdisk -l $1
else
    echo "This disk is not exists."
fi
```

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

```
#!/bin/bash
#
while true;do
    read -p "please enter a option:" opt
    if [[ $opt == "quit" ]];then
        echo "Exit normally." && exit 0
    elif [[ $opt == "yes" ]];then
        echo "di again."
    else
        exit 2
    fi
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 [[ $1 == "gzip" ]];then
    tar zcf /backups/etc-20160613.tar.gz /etc/* &> /dev/null
elif [[ $1 == "bzip2" ]];then
    tar jcf /backups/etc-20160613.tar.bz2 /etc/* &>/dev/null
elif [[ $1 == "xz" ]];then
    tar Jcf /backups/etc-20160613.tar.xz /etc/* &>/dev/null
else 
    echo "Wrong zip tools !" && exit 0
fi
```

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

```
#!/bin/bash
#
while true;do
    read -p "Give a dir:" opt
    if [[ -f $opt ]];then
        echo "It is a normal file."
    elif [[ -d $opt ]];then
        echo "It is a directory."
    elif [[ -h $opt ]];then
        echo "It is a sybo link."
    elif [[ $opt == "quit" ]];then
        exit 0
    else 
        echo "can not recognize."
    fi
done
```

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

```
#!/bin/bash
#
hos=$(hostname)
if [[ $hos == "(none)" ]] || [[ $hos == "loaclhost" ]] || [[ $hos == " " ]];then
    hostname mail.magedu.com
else
    hostname
fi
```

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

```
#!/bin/bash
#
if [ $(id -u $1) -eq 0 ];then
    echo "sys admin."
elif [ $(id -u $1) -gt 500 ];then
    echo "normal user."
else
    echo " sys user."
fi
```

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

```
#!/bin/bash
#
read -p "Enter a user:" opt
if [ $(id -u $opt) -ge 500 ] && awk -F: '/$opt/{print $7}' /etc/passwd | grep "sh$" &> /dev/null;then
    echo "User $opt can log system."
else
    echo "$opt can not log on."
fi
```

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

```
#!/bin/bash
#
declare -i i=1
for file in /var/log/*;do
    mkdir /tmp/test$i
    if [[ -d $file ]];then
        cp -r $file /tmp/test$i
        let i++
    elif [[ -f $file ]];then
        cp $file /tmp/test$i
        let i++
    elif [[ -h $file ]];then
        cp -d $file /tmp/test$i
        let i++
    else
        cp -a $file /tmp/test$i
        let i++
    fi
done
```

原创文章,作者:上海-brown,如若转载,请注明出处:http://www.178linux.com/52854

(0)
上海-brown上海-brown
上一篇 2016-10-24 09:11
下一篇 2016-10-24 09:11

相关推荐

  • N21—-第一周课程练习题

    1、描述计算机的组成及其功能。 我们现在通常理解为计算机是由硬件系统+软件系统组成的,根据冯·诺依曼体系结构。计算机主要由五大部件组成:      运算器(Datapath): 计算机中执行各种算术和逻辑运算操作的部件      控制器(Control):是整个计算机的中枢神经,…

    Linux干货 2016-07-12
  • 马哥教育网络班21期+第7周课程练习

    1、创建一个10G分区,并格式为ext4文件系统; (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;(2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳; [root@itop ~]# fdisk /dev/sda&nbsp…

    Linux干货 2016-08-30
  • LINUX课堂笔记(第二周)

    2018.03.12 rpm httpd*** service httpd start ab 模仿用户访问 cat /var/log/httpd/access_log curl 访问web服务 rev 字符颠倒显示 sort  -r 执行反方向(由上至下)整理  -R 随机排序  -n 执行按数字大小整理  -f 选项忽略(fold)字符串中的字符大…

    Linux干货 2018-03-17
  • 第六周 网络进程管理

    1、简述osi七层模型和TCP/IP五层模型 2、简述iproute家族命令 3、详细说明进程管理工具htop、vmstat等相关命令,并举例 4、使用until和while分别实现192.168.0.0/24 网段内,地址是否能够ping通,弱ping通则输出”success!”,若ping不通则输出”fail!&#82…

    2018-01-12
  • 第10周作业(上)

    第10周作业 1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情)。CentOS系统启动详细的过程如下(以CentOS7为例): 加电自检(POST)按下电源开关,BIOS系统随即开始加电自检,检查CPU、内存、主板及各接口、硬盘、键盘、光驱等,检测它们的好坏。 读取启动顺序检查完成后,BIOS会根据预先设定好的启动顺序去挨个寻找可引导…

    Linux干货 2017-01-03

评论列表(1条)

  • 马哥教育
    马哥教育 2016-11-02 14:43

    博客写得非常的好,32个赞,脚本思路清晰,加油!