第九周-Shell脚本编程

 

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

#!/bin/bash
nologin=0
login=0
for i in  `cut -d : -f 7 /etc/passwd`;do
     if [ $i = /sbin/nologin ];then
        let nologin++
     else
        let login++
     fi
done
echo Login is $login,Nologin is $nologin

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 [ -b $1 ];then
 fdisk -l $1
else
 echo "Not is Block device file"
fi

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

脚本能够接受一个参数;

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

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

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

#!/bin/bash

while true;do
read -p "please input yes|quit|other str: " word
case $word in
  quit)
  exit 0
  ;;
  yes)
  continue
  ;;
  *)
  echo "Wrong"
  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
mkdir /backups 2>/dev/null
case $1 in
  gzip)
  tar -zcPf /backups/etc-`date +%Y%m%d`.tar.gz /etc
  ;;
  bzip2)
  tar -jcPf /backups/etc-`date +%Y%m%d`.tar.bz2 /etc
  ;;
  xz)
  tar -JcPf /backups/etc-`date +%Y%m%d`.tar.xz /etc
  ;;
  *)
  echo "Error compression tool"
  exit 2
  ;;
esac

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

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

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

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

(4) 其它为无法判断;

#!/bin/bash

if [ -f $1 ];then
  echo "Normal access the file"
elif [ -d $1 ];then
  echo "Can use cd command"
elif [ -h $1 ];then
  echo "this is a access path"
else
  echo "Cannot judge"
fi

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

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

#!/bin/bash

if [ -z $HOSTNAME -o "$HOSTNAME" = "localhost" -o "$HOSTNAME" = "(none)" ];then
hostname mail.magedu.com
fi

 

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

(0)
N27_whatN27_what
上一篇 2017-08-23
下一篇 2017-08-24

相关推荐

  • 学习宣言

    已经虚度了第一个关键的10年,不能再失去下一个10年,3年内年薪20w,5年内年薪30w。

    Linux干货 2016-12-26
  • 第六周作业 bash编程学得好痛苦啊,啊啊啊~~需要挺住!

    请详细总结vim编辑器的使用并完成以下练习题 VIM很强大,但是万变不离其宗,最核心的三模式以下图表示: 1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; :%s/^[[:blank:]]\+.*/\0#/g 2、复制/boot/grub/grub.conf至/…

    Linux干货 2016-12-19
  • 磁盘管理(二)Raid与LVM逻辑卷

    概述:本章主要讲解raid和逻辑卷 什么是RAID RAID:Redundant Arrays of Inexpensive(Independent) Disks 1988年由加利福尼亚大学伯克利分校( University ofCalifornia-Berkeley) “ A Case for RedundantArrays of Inexpensive …

    Linux干货 2016-09-05
  • bash工作特性之命令执行状态返回值与命令行展开概述

    bash工作特性之命令执行状态返回值与命令行展开概述 bash是什么? shell是一种用户接口程序,提供了用户与内核进行交互的接口。shell可以分为两类:一类为GUI,即用户图形界面;另一类为CLI,即命令行接口,将用户的命令送入到内核去执行,大多数发行版中最常用的就是bash。 bash特性 命令执行状态返回值 bash通过状态返回值来输出结果: 命令…

    Linux干货 2017-07-09
  • 2016-10-17作业

    1 生产环境发现一台服务器系统时间产生偏差,造成服务异常,请帮忙校正。 答:hwclock -s 2 生产有一个数据同步脚本需要执行很长时间,怎样做到无人值守,在管理工具退出的情况下,脚本依然能正常运行。 答:screen -S work  进去后开始做工作,暂时离开时可使用 ctrl+a,d 剥离当前会话。 3 Linux系统中命令共分为内建命令…

    Linux干货 2016-10-18
  • Linux基础之正则表达式,用户、组管理

    Linux基础—正则表达式 正则表达式简单来说就是一种行字符串处理的方式,通过一些特殊符号的辅助,可达到搜索、删除、替换等某些特定字符串的处理方式 通配符(Globbing) 通配符与元字符类似,通配符主要用于文件名的匹配,而元字符则主要用在字符串的匹配上; 下面介绍几种常用的通配符: * 表示匹配任意位数的任意字符 ? 表示…

    Linux干货 2016-10-03