shell脚本编写-1练习题

1、编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小

#!/bin/bash

echo “the hostname is:`hostname`”

echo “the ip address is:`ifconfig | sed –n ‘2p’ |sed 's/^.*inet//'|sed 's/net.*//'`”

echo “the op is: `cat /etc/centos-release`”

echo “the kernel version is: `uname -r`”

echo “the cpu type is: `lscpu |sed -n '13p'|sed 's/^.*://'|tr -s ' '`”

echo “the memory size is: `free –m |sed -n '2p'|sed 's/^.*://'|tr -s ' '|cut -d" " -f2`MB”

echo “the disk size is:`fdisk -l|sed -n '2p'|sed 's/^.*://'|sed 's/\,.*//'|tr –d ' '`”

2、编写脚本/root/bin/backup.sh,可实现每日将/etc/目录备份到/root/etcYYYY-mm-dd中

#!/bin/bash

cp –a /etc /root/etc`date +%F`

3、编写脚本/root/bin/disk.sh,显示当前硬盘分区中空间利用率最大的值

#!/bin/bash

echo “the lagerest disk partition is`df| grep 'sda'| tr -s ' ' ':'| cut -d: -f5 |sort |tail -1`”

4、编脚本/root/bin/links.sh,显示正连接本主机每个远程主机的IPv4地址和连接数,并按连接数从大到小排序

#!/bin/bash

netstat -nt |tr -s ' '|cut -d' ' -f5 |cut -d: -f1 |grep [0-9]|sort |uniq -c|sort -nr

5、写一个脚本/root/bin/sumid.sh,计算/etc/passwd文件中的第10个用户和第20用户的ID之和

#!/bin/bash

A10=`cat /etc/passwd|sed –n ‘10p’|cut –d: -f3`

A20=`cat /etc/passwd|sed –n ‘20p’|cut –d: -f3`

let sum=A10+A20

echo $sum

6、写一个脚本/root/bin/sumspace.sh,传递两个文件路径作为参数给脚本,计算这两个文件中所有空白行之和

#!/bin/bash

A=`grep “^[[:space:]]*$” $1|wc -l`

B=`grep “^[[:space:]]*$” $2|wc -l`

let sum=A+B

echo $sum

7、写一个脚本/root/bin/sumfile.sh,统计/etc, /var, /usr目录中共有多少个一级子目录和文件

#!/bin/bash

A=`ls –d /etc/* |wc -l`

B=`ls –d /var/* |wc -l`

C=`ls –d /usr/*|wc -l`

let sum=A+B+C

echo $sum

8、写一个脚本/root/bin/argsnum.sh,接受一个文件路径作为参数;如果参数个数小于1,则提示用户“至少应该给一个参数”,并立即退出;如果参数个数不小于1,则显示第一个参数所指向的文件中的空白行数

#!/bin/bash

[[ $# -lt 1 ]] && echo "less one arg"||echo "`grep '^[[:space:]]*$' $1 |wc -l`"

9、写一个脚本/root/bin/hostping.sh,接受一个主机的IPv4地址做为参数,测试是否可连通。如果能ping通,则提示用户“该IP地址可访问”;如果不可ping通,则提示用户“该IP地址不可访问”

#!/bin/bash

ping -c1 -W1 $1 &> /dev/null && echo ping successfull || echo ping failture

10、判断硬盘的每个分区空间和inode的利用率是否大于80,如果是,发邮件通知root磁盘满

#!/bin/bash

maxc=`(df;df -i)|grep "sd"|tr -s ' ' |cut -d' ' -f5|grep -o "[[:digit:]]\+"|sort -nr|head -1`

[ $maxc -ge 80 ] && mail -s “diskwarning” root < ~/fi || exit

11、指定文件做为参数,判断文件是否为.sh后缀,如果是,添加x权限

方法一:

#!/bin/bash

A=`echo $1 | grep -o "\.[^.]\+$"`

[[ "$A" == ".sh" ]] && chmod +x $1 || echo xxf

方法二:

#!/bin/bash

read -p "please input the file:" a

A1=`echo $a | grep -o "\.[^.]\+$"`

[[ "$A1" == ".sh" ]] && chmod +x $a || echo xxf

12、判断输入的IP是否为合法IP

#!/bin/bash

read -p "please input ip adress:" a

[[ $a =~

(([0-9]|[1-9][0-9]|[1][0-9]{2}|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9]|[1-9][0-9]|[1][0-9]{2}|[2][0-4][0-9]|[2][5][0-5])\> ]] && echo legal || echo ilegal

13、计算1+2+3+…+100

#!/bin/bash

a=`echo {1..100} |tr ' ' '+'`

let sum100=a

echo $sum100

14、输入起始值A和最后值B,计算从A+(A+1)…+(B-1)+B的总和

#!/bin/bash

echo “the total count is:`seq + $1 $2 |bc`”

15、chmod -rw /tmp/file1,编写脚本/root/bin/per.sh,判断当前用户对/tmp/file1文件是否不可读且不可写

#!/bin/bash

[ ! -r /tmp/file1 -a ! -w /tmp/file1 ] && echo “`whoami`can’t rw” || echo “`whoami`can r or w”

[ ! \(-r /tmp/file1 -o -w /tmp/file1\) ] && echo “`whoami`can’t rw” || echo “`whoami`can r or w”

16、编写脚本/root/bin/nologin.sh 和login.sh,实现禁止和允许普通用户登录系统

禁止普通用户登录:

#!/bin/bash

[ -e /etc/nologin ] && exit || touch /etc/nologin

echo "disable user login "

允许普通用户登录:

#!/bin/bash

[ -e /etc/nologin ] && rm -f /etc/nologin

echo "enable user login "

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

(0)
1861276386318612763863
上一篇 2016-08-15 09:24
下一篇 2016-08-15 09:24

相关推荐

  • sed文本编辑工具

    用法:sed[option]… ‘script’ inputfile…常用选项:-n:不输出模式空间内容到屏幕,即不自动打印-e: 多点编辑-f:/PATH/SCRIPT_FILE: 从指定文件中读取编辑脚本-r: 支持使用扩展正则表达式-i.bak: 备份文件并原处编辑script:‘地址命令…

    Linux干货 2017-05-02
  • 设计模式 ( 十七) 状态模式State(对象行为型)

    设计模式 ( 十七) 状态模式State(对象行为型) 1.概述 在软件开发过程中,应用程序可能会根据不同的情况作出不同的处理。最直接的解决方案是将这些所有可能发生的情况全都考虑到。然后使用if… ellse语句来做状态判断来进行不同情况的处理。但是对复杂状态的判断就显得“力不从心了”。随着增加新的状态或者修改一个状体(if else(或swit…

    Linux干货 2015-07-27
  • ​从实验来了解grub

    实验一为grub设置密码 先看一看grub是怎么样的 grub有两个版本 grub: GRand Unified Bootloader grub 0.x: grub legacy grub 1.x: grub2  Note:grub 1.x是完全重写的只不过是保留grub 0.x的工作机制。 2.利用grub自带命令生成密码grub-md5-cry…

    Linux干货 2016-06-09
  • Linux的文件压缩、解压之tar的使用

    文件的压缩   一、压缩、解压缩及归档工具 压缩 解压 后缀(压缩后) file-roller 图形操作界面上的使用(略) compress 解压一:uncompress 或compress -d (注:使用上面的解压命令,实际上是在屏幕上打印解压的文件信息,并不是真正上解压到文件,所以需要在命令后面加上“重定向到指定的文件中”,方可完成解压。如:…

    Linux干货 2016-08-18
  • 正则表达式简述

    正则表达式简述 什么是正则表达式: 正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。 正则表达式分类: 标准正…

    Linux干货 2016-04-05
  • 联通电信双链路内网VRRP+BFD&&PPTP+MYSQL+FreeRadius实现IDC堡垒机连接IDC机房

    一、具体需求与实现 1、多wan:两条宽带接入链路,使用VRRP+BFD技术,实现链路冗余; 2、IDC机房远程管理和登录限制:使用PPTP+freeRadius+mysql实现VPN,限制指定网段或IP进行拨号认证登录IDC机房,并编写脚本检查非法用户登录IDC机房服务器情况; 3、内网VLAN划分:利于安全管理、IP分流和带宽限制; 4、内网监控:使用N…

    Linux干货 2016-08-22