集中练习7-bash脚本

集中练习7-bash脚本

1. 写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现;
“`
#!/bin/bash
#
declare -i loguser=0
declare -i nologuser=0
while read userinfo; do
usershell=`echo $userinfo | cut -d’:’ -f7`
if [ $usershell == ‘/sbin/nologin’ ]; then
let nologuser+=1
else
let loguser+=1
fi
done < /etc/passwd
echo “Login user: $loguser.”
echo “Nologin user: $nologuser.”
“`
2. 写一个脚本
(1) 获取当前主机的主机名,保存于hostname变量中;
(2) 判断此变量的值是否为localhost,如果是,则将当前主机名修改为www.magedu.com;
(3) 否则,显示当前主机名;
“`
#!/bin/bash
#
hostname=`hostname`
if [ $hostname == ‘localhost’ ]; then
hostname ‘www.magedu.com’
fi
echo “Hostname for this host is $hostname.”
“`
3. 写一个脚本,完成如下功能
(1) 传递一个磁盘设备文件路径给脚本,判断此设备是否存在;
(2) 如果存在,则显示此设备上的所有分区信息;
“`
#!/bin/bash
#
read -p “Please enter a disk device in the following format(/dev/sda): ” disk
if fdisk -l | grep “^Disk $disk”; then
fdisk -l $disk
else
echo “The disk you entered does not exist.”
exit 1
fi
“`
4. 写一个脚本,完成如下功能
脚本能够接受一个参数
(1) 如果参数1为quit,则显示退出脚本,并执行正常退出;
(2) 如果参数1为yes,则显示继续执行脚本;
(3) 否则参数1为其他任意值,均质性非正常退出;
“`
#!/bin/bash
#
read -p “Please enter a parameter: ” PARM
while true; do
case $PARM in
quit)
echo “Quiting the script…”
exit 0
;;
yes)
read -p “Please reenter a parameter: ” PARM
;;
*)
echo “Abnormal quiting.”
exit 1
;;
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
#
read -p “Please choose a compress method {gzip|bzip2|xz} : ” COMP_MTHD
ls /backups/ &> /dev/null || mkdir /backups
case $COMP_MTHD in
gzip)
tar -zcf /backups/etc-`date +%Y%m%d`.tar.gz /etc/* &> /dev/null && echo “Gzip archive finished.”
;;
bzip2)
tar -jcf /backups/etc-`date +%Y%m%d`.tar.bz2 /etc/* &> /dev/null && echo “Bzip2 archive finished.”
;;
xz)
tar -Jcf /backups/etc-`date +%Y%m%d`.tar.xz /etc/* &> /dev/null && echo “XZ archive finished.”
;;
*)
echo “Wrong compress tool.”
exit 1
;;
esac
“`
6. 写一个脚本,接受一个路径参数:
(1) 如果为普通文件,则说明其可被正常访问;
(2) 如果是目录文件,则说明可对其使用cd命令;
(3) 如果为符号链接文件,则说明是个访问路径;
(4) 其他为无法判断
“`
#!/bin/bash
#
read -p “Please eneter a filepath: ” filepath
until `ls $filepath &> /dev/null`; do
echo “$filepath is not a valid filepath.”
read -p “Please eneter a filepath: ” filepath
done
filetype=`file -b $filepath | cut -d’,’ -f1`
if echo $filetype | grep “symbolic link” &> /dev/null; then
echo “This is a access path.”
elif [ “$filetype” == ‘directory’ ]; then
echo “You can use cd command to enter this directory.”
elif [ “$filetype” == ‘ASCII text’ ]; then
echo “This file can be access normally.”
else
echo “Unknow file type.”
fi
“`
7. 写一个脚本,取得当前主机的主机名,判断
如果主机名为空或为localhost、或为“(none)”,则将其命名为mail.magedu.com;
“`
#!/bin/bash
#
hostName=$(hostname)
[ -z “$hostName” -o “$hostName”==”localhost” -o $hostName”==”none” ] && hostname mail.magedu.com
“`

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/89524

(0)
N27_sapbcsN27_sapbcs
上一篇 2017-12-05 10:51
下一篇 2017-12-05 15:27

相关推荐

  • Linux命令date命令详解

    在linux环境中,熟练运用date命令来表示自己想要表示的时间,肯定可以给自己的工作带来诸多方便,下面是详细的使用说明和示例 在linux环境中,不管是编程还是其他维护,时间是必不可少的,也经常会用到时间的运算,熟练运用date命令来表示自己想要表示的时间,肯定可以给自己的工作带来诸多方便。 1.命令格式:date[参数]… [+格式] 2.命…

    2017-07-18
  • 激情的魅力samba服务(热舞篇)

    正如名称一样的迷人的一个服务,充满了激情。火热的天气中更添加一分悸动,本章就尝试对下面火热的samba服务是要如何破解并掌握于手心中。(本篇当中借鉴了鸟哥私房菜和linux就该这么学还有传说中的中华小题库,通过做题来对于samba进行初步的了解)后续还会添加一篇关于samba服务的文章,作为深度了解。 首先了解下samba的来源,听说作者老道(Tridgwe…

    Linux干货 2017-08-19
  • find 详解

    find 命令基本用法:         find pathname [opotions] [-print | -exec | -ok …] 1、find 基本参数:         pa…

    Linux干货 2016-12-26
  • MySQL Fabric 安装部署

    MySQL Fabric  是一个用于管理 MySQL 服务器群的可扩展框架。该框架实现了两个特性 — 高可用性 (HA) 以及使用数据分片的横向扩展。这两个特性既可以单独使用,也可以结合使用。 环境: 安装MySQL Fabric 配置MySQL Fabric MySQL Fabric 安装管理数据库fabric 启动MySQL Fab…

    数据库运维 2016-06-03
  • grep与正则表达式

    1.什么是grep grep(Golobal Regular Expression print)是Linux系统中一个强大的文本搜索工具,也是俗称的搜索三兄弟之一,grep的最大意义就是搜索文本,把匹配的行打印到屏幕上,但不影响原文件的内容;在搜索文本的过程中,可以利用到“正则表达式”来定以自己的搜索匹配模式。 Unix的grep家族包括了grep、egre…

    Linux干货 2015-10-08
  • 一起学DNS系列(十三)图文详说A、CNAME、MX和NS记录

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://jeffyyko.blog.51cto.com/28563/226194    前面用了12个小节对DNS的基础、以及Windows的DNS系统作了较详细的描述,下面的几节主要是说一些有关DNS应用方面…

    2015-03-18

评论列表(1条)

  • 马哥教育
    马哥教育 2017-12-08 16:47

    脚本没有问题。赞