N26-第九周作业-邢岩

马哥门徒-N26-邢岩


相信自己、勤奋努力、不断总结!shell脚本练习需要重复、重复、再重复!那么,我就继续来写、写、写。N26-第九周作业-邢岩N26-第九周作业-邢岩N26-第九周作业-邢岩

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


#****************************************************

# Author: jeque
# Last modified: 2017-04-02 23:04
# Filename: user10.sh
# Description: 
# Version: 1.1 
#****************************************************
declare user_login=0
declare user_nologin=0
for i in $(cat /etc/passwd | cut -d: -f7); do
    if [ $i == “/sbin/nologin” ];then
        let user_nologin++
    else
        let user_login++
    fi
done
echo “login user number:$user_login”
echo “nologin user number:$user_nologin”

N26-第九周作业-邢岩


2、写一个脚本

    (1) 获取当前主机的主机名,保存于hostname变量中;

    (2) 判断此变量的值是否为localhost,如果是,则将当前主机名修改为www.magedu.com;

    (3) 否则,则显示当前主机名;


#!/bin/bash

#****************************************************
# Email: [email protected]
# Author: jeque
# Time: 2017-04-02 23:31
# Filename: localhost1.sh
# Version: 1.0 
# Description: A test script.
#****************************************************
HostName=$(/bin/hostname)
if [ $UID -eq 0 ];then
    if [ $HostName == “localhost.localdomain” ];then
        hostname www.magedu.com
        echo “hostname changed”
    else
        hostname
    fi
else
    echo”You must be root to change the hostname.”
    exit 1
fi

N26-第九周作业-邢岩

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

    (1) 传递一个磁盘设备文件路径给脚本,判断此设备是否存在;

    (2) 如果存在,则显示此设备上的所有分区信息;


#!/bin/bash

#****************************************************
# Email: [email protected]
# Author: jeque
# Time: 2017-04-03 18:03
# Filename: fdev.sh
# Version: 1.0 
# Description: A test script.
#****************************************************
if [ $# -ge 1 ];then
    for dev in $*;do
        if [ -b $dev ];then
            fdisk -l $dev
        else
            nodev=$nodev” “$dev
        fi
    done
    [[ $(echo $nodev | wc -c) -gt 1 ]] && echo -e “\nThe device is not exist,plesae try again.\n$nodev”
else
    echo “please put in an exist device.”
fi

N26-第九周作业-邢岩N26-第九周作业-邢岩


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

   脚本能够接受一个参数;

   (1) 如果参数1为quit,则显示退出脚本,并执行正常退出;

   (2) 如果参数1为yes,则显示继续执行脚本;

   (3) 否则,参数1为其它任意值,均执行非正常退出;


#!/bin/bash
#****************************************************
# Email: [email protected]
# Author: jeque
# Time: 2017-04-03 18:39
# Filename: parameter.sh
# Version: 1.0 
# Description: A test script.
#****************************************************
menu () {
cat <<END
    1.quit
    2.yes
    3.other
    please input the parameter you want:
END
}
menu
read -p “Your choice: ” option

case $option in
quit)
    echo “Exit the script.”
    exit
    ;;
yes) 
    echo “Script continue.”
    ;;
*)
    exit 2
esac

N26-第九周作业-邢岩N26-第九周作业-邢岩


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

#****************************************************
# Email: [email protected]
# Author: jeque
# Time: 2017-04-03 21:08
# Filename: parameter2.sh
# Version: 1.0 
# Description: A test script.
#****************************************************
menu () {
cat <<END
    1.gzip
    2.bzip2
    3.xz
    please input the parameter listed above:
END
}

myPath=”/backups”
if [ ! -x “$myPath” ];then 
    mkdir -p “$myPath” &> /dev/null
fi

menu
read -p “Your choice:” option
case $option in
gzip) 
    tar -zcf /backups/etc-$(date +%Y%m%d).tar.gz /etc &> /dev/null
    echo “The new filename is etc-$(date +%Y%m%d).tar.gz”
    ;;
bzip2)
    tar -jcf /backups/etc-$(date +%Y%m%d).tar.bz2 /etci &> /dev/null
    echo “The new filename is etc-$(date +%Y%m%d).tar.bz2”
    ;;
xz)
    tar -Jcf /backups/etc-$(date +%Y%m%d).tar.xz /etc &> /dev/null
    echo “The new filename is etc-$(date +%Y%m%d).tar.xz”
    ;;
*)
    echo “Error compression tools.”
    exit 2
esac

N26-第九周作业-邢岩N26-第九周作业-邢岩N26-第九周作业-邢岩


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

   (1) 如果为普通文件,则说明其可被正常访问;

   (2) 如果是目录文件,则说明可对其使用cd命令;

   (3) 如果为符号链接文件,则说明是个访问路径;

   (4) 其它为无法判断;


#!/bin/bash

#****************************************************
# Email: [email protected]
# Author: jeque
# Time: 2017-04-03 22:17
# Filename: files11.sh
# Version: 1.0 
# Description: A test script.
#****************************************************
if [ $# -lt 1 ]; then
    echo “At least one path.”
    exit 1
elif ! [ -e $1 ]; then
    echo “No such file!”
    exit 2
elif [ -f $1 ]; then
    echo “Common file.”
    echo ” It can be normal access.”
elif [ -d $1 ]; then
    echo “Directory file.”
    echo “You can use command ‘cd’ to the file.”
elif [ -L $1 ]; then
    echo “Symbolic link file.”
    echo “An access path! “
else
    echo “Unkown!” 
    echo “Can’t judge!”
fi

N26-第九周作业-邢岩N26-第九周作业-邢岩


7、写一个脚本,取得当前主机的主机名,判断

   (1) 如果主机名为空或为localhost,或为””(none)””,则将其命名为mail.magedu.com;

   (2) 否则,显示现有的主机名即可;


#!/bin/bash

#****************************************************
# Email: [email protected]
# Author: jeque
# Time: 2017-04-03 22:39
# Filename: localhost2.sh
# Version: 1.0 
# Description: A test script.
#****************************************************
HostName=$(/bin/hostname)
if [ $UID -eq 0 ];then
    if [ $HostName == “localhost” ];then
        hostname mail.magedu.com
        echo “hostname changed”
    elif [ $HostName == ” ” ]; then
        hostname mail.magedu.com
    elif [ $HostName == “(none)” ];then
        hostname mail.magedu.com

    else
        hostname
    fi
else
    echo”You must be root to change the hostname.”
exit 1
fi

N26-第九周作业-邢岩


   OK!shell脚本暂时先练到这里,该休息了!Bye!N26-第九周作业-邢岩

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

(0)
jequejeque
上一篇 2017-04-03 22:35
下一篇 2017-04-04 10:12

相关推荐

  • linux下的文件查找命令对比(locate,find,grep,sed)

        在linux下,文件系统占据着非常重要的位置,而我们对于文件系统的操作也显得尤为重要。 如果我们想熟悉的操作文件系统,其中,我们需要对文本的查找,截取等命令需要熟悉的掌握。 这里就不得不说几个关于文本操作的几个命令的作用详细介绍和对比。比如: locate,find ,grep ,sed等。 这里,grep ,…

    Linux干货 2016-08-15
  • OSI模型与TCP/IP协议栈

         OSI模型:     使用OSI模型的意义:      简化教学     加快发展速度     确保技术的互操作性     简化模块化设计  &nbs…

    2017-08-20
  • 网卡别名与bonding配置

    我们知道,一般来说,一个硬件地址对应与一个IP地址。但在一些情况下,我们可以通过一些方法打破硬件地址与IP地址的一一对应关系。下面就来说一下网卡别名与bonding配置。 网卡别名就是将多个IP地址绑定到一个网络接口上,其命名方式为IFACE:num,如eth0:1等。需要注意的是,网卡别名仅对虚拟主机有效。创建网卡别名有两种方式: 1、ifconfig命令…

    Linux干货 2016-09-05
  • sed– 用于筛选和转换文本的流编辑器

    sed 用于筛选和转换文本的流编辑器命令格式:sed [OPTION] {script} file选项       -n, –quiet, –silent 抑制模式空间的自动打印  echo -e “abc\ndef” | sed ‘p’ #输出 abc # abc # def # d…

    Linux干货 2017-08-15
  • 用户、组、权限和修改

    用户、组和权限     普通用户 1–65535     系统用户  系统已经已经存在专门用来对系统服务或者系统资源进行管理的               1…

    Linux干货 2017-04-04
  • ArchLinux折腾记

    刚接触linux的时候, 听到前辈说到这样一个系统,  说是linux 技能纯熟才能驾驭的了ArchLinux , 最近正好有个半天闲, 于是抽空,  佐以官方文档,  来认认真真的折腾一下ArchLinux Contents ArchLinux简介  准备工作  分区设置  基本功能安装 &nbs…

    Linux干货 2016-09-29

评论列表(2条)

  • 马哥教育
    马哥教育 2017-04-10 16:21

    总结的很好,脚本的思路清晰,加油~~~~

  • Dotty
    Dotty 2017-04-24 10:27

    Cool! That’s a clever way of loonkig at it!