脚本练习

脚本练习:

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

#!/bin/bash
#功能:编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小
Zhujixinxi=`hostname`
Ipv4=`ifconfig | sed -n '2p'|sed -r 's@.*addr:(.*) .*B.*@\1@'`
Banben=`cat /etc/redhat-release`
Neihe=`uname -r`
Cpu=`lscpu | sed -n '/^Model name.*/p'|sed -r 's@.*[[:space:]]{3}+(.*$)@\1@'`
Neicun=`free -h |tr -s " "|cut -d " " -f2 | sed -n '2p'`
Yingpan=`fdisk -l |sed -n '2p'| sed -r 's@.* (.*) GB.*@\1@'`
echo 'hostname :' $Zhujixinxi
echo 'IPv4:' $Ipv4
echo 'OS version :' $Banben
echo 'Kernel version :' $Neihe
echo 'CPU :' $Cpu
echo 'memory:' $Neicun
echo "harddisk: $Yingpan"
[root@qzx bin]# vim systeminfo.sh
[root@qzx bin]# ./systeminfo.sh
hostname : qzx.centos6.8
IPv4: 10.1.253.75
OS version : CentOS release 6.8 (Final)
Kernel version : 2.6.32-642.el6.x86_64
CPU : Intel(R) Core(TM) i5-4200M CPU @ 2.50GHz
memory: 1.8G

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

#!/bin/bash
#实现每日将/etc/目录备份到/root/etcYYYY-mm-dd中
echo '开始备份/etc。。。。。。。'
cp -a /etc /root/${date +%F}
echo '备份结束'
[root@qzx bin]# bash backup.sh
开始备份/etc。。。。。。。
备份结束
[root@qzx bin]# ls /root/
2016-08-11       Desktop    hehe                Pictures   user.txt

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

#!/bin/bash
#显示当前硬盘分区中空间利用率最大的值
max=`df |tr -s ' ' '%'|cut -d '%' -f5|sort -n |tail -1`
echo "当前硬盘分区中空间利用率最大的值为:$max"
[root@qzx bin]# ./disk.sh 
当前硬盘分区中空间利用率最大的值为:52
#!/bin/bash
#显示正连接本主机的每个远程主机的IPv4地址和连接数,并按连接数从大到小排序
links=`netstat -nt |tr -s ' ' |tail -n +3 | cut -d " " -f5 | sed -r 's@(.*):.*@\1@'|sort |uniq -c`
echo "$links"
[root@qzx bin]# bash link.sh
      2 10.1.250.28

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

#!/bin/bash
#/etc/passwd文件中的第10个用户和第20用户的ID之和
sumid=`sed -n '10p;20p' /etc/passwd|cut -d : -f 3 |tr '\n' '+' | sed -r 's@(.*)\+@\1\n@'| bc`
echo "/etc/passwd文件中的第10个用户和第20用户的ID之和:$sumid"
[root@qzx bin]# bash sumid.sh
/etc/passwd文件中的第10个用户和第20用户的ID之和:80

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

##!/bin/bash
#传递两个文件路径作为参数给脚本,计算这两个文件中所有空白行之和
space1=`grep '^$' $1 | wc -l`
space2=`grep '^$' $2 | wc -l`
let Sumspace=$space1+$space2
echo "两个文件中所有空白行之和: $Sumspace"
[root@qzx bin]# bash  sumspace.sh /etc/rc.d/init.d/functions ../.bash_profile 
两个文件中所有空白行之和: 109

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

#!/bin/bash
#统计/etc, /var, /usr目录中共有多少个一级子目录和文件
etcnum=`ls -A -1 /etc/ |wc -l`
varnum=`ls -A -1 /var/ |wc -l`
usernum=`ls -A -1 /usr/ |wc -l`
let sum=$etcnum+$varnum+$usernum
echo "/etc, /var, /usr目录中共有多少个一级子目录和文件:$sum"
[root@qzx bin]# bash sumfile.sh
/etc, /var, /usr目录中共有多少个一级子目录和文件:299

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

#!/bin/bash
#接受一个文件路径作为参数;如果参数个数小于1,则提示用户“至少应该给一个参数”,并立即退出;如果参数个数不小>于1,则显示第一个参数所指向的文件中的空白行数
[[ $# -lt 1 ]] && echo "至少应该输入一个参数" || (grep '^$' $1 | wc -l)
[root@qzx bin]# bash argsnum.sh /etc/rc.d/init.d/functions 
105
[root@qzx bin]# bash argsnum.sh 
至少应该输入一个参数

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

#!/bin/bash
#接受一个主机的IPv4地址做为参数,测试是否可连通。如果能ping通,则提示用户“该IP地址可访问”;如果不可ping通,
则提示用户“该IP地址不可访问”
ping -w1 -c1 "$1" &>/dev/null
Pingchenggong=`echo $?`
[[ $Pingchenggong -eq  0 ]] && (echo "该IP地址可访问") || (echo "该IP地址不可访问")
 [root@qzx bin]# bash hostping.sh 10.1.253.1
 该IP地址可访问
 [root@qzx bin]# bash hostping.sh 10.1.253.155
 该IP地址不可访问

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

#!/bin/bash
#判断当前用户对/tmp/fiile1文件是否不可读且不可写
(([ ! -r /tmp/flie1 ])  && ([ ! -w /tmp/file1 ])) && (echo "此用户对/tmp/file1文件不可读写" )
 [qzx@qzx bin]$ /tmp/per.sh 
 此用户对/tmp/file1文件不可读写
 [qzx@qzx bin]$ ll /tmp/file1 
 -rw-rw----. 1 root root 5 Aug 12 10:57 /tmp/file1

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

#!/bin/bash
#实现禁止和允许普通用户登录系统。
[ -f /etc/nologin ] && (echo "普通用户已不能登录")|| (touch /etc/nologin)

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

#!/bin/bash
#接受一个主机的IPv4地址做为参数,先判断是否合格IP,否,提示IP格式不合法并退出,是,测试是否可连通。如果能ping通,则提示>用户“该IP地址可访问”;如果不可ping通,则提示用户“该IP地址不可访问”
echo $1 | egrep -o '([0-9]|([1-9][0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\.([0-9]|([1-9][0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\.([0-9]|([1-9][0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\.([0-9]|([1-9][0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\>'&>/dev/null
[ $? -ne  0 ] && echo "这是个不合格的IP" && exit 213
ping -w1 -c1 "$1" &>/dev/null &&  (echo "该IP地址可访问") || (echo "该IP无法访问")
 [root@qzx bin]# bash  pinghost.sh 10.1.0.755
 这是个不合格的IP
 [root@qzx bin]# bash  pinghost.sh 10.1.0.255
 该IP无法访问
 [root@qzx bin]# bash  pinghost.sh 10.1.0.2
 该IP无法访问
 [root@qzx bin]# bash  pinghost.sh 10.1.0.1
 该IP地址可访问

12、计算1+2+3+…+100的值

[root@qzx ~]# seq 1 100 |tr '\n' '+' | egrep -o '.*[^+]' |bc
5050

13、计算从脚本第一参数A开始,到第二个参数B的所有数字的总和,判断B是否大于A,否提示错误并退出,是则计算之

#!/bin/bash
#计算从脚本第一参数A开始,到第二个参数B的所有数字的总和,判断B是否大于A,否提示错误并退出,是则计算之
[ $2 -gt $1 ] && (seq $1 $2 |tr '\n' '+' | egrep -o '.*[^+]' |bc) || (echo "输入的数字不正确")
 [root@qzx bin]# bash  numA_B.sh  100 1
 输入的数字不正确
 [root@qzx bin]# bash  numA_B.sh 1  100
 5050

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

(1)
qzxqzx
上一篇 2016-08-12 16:06
下一篇 2016-08-12 16:06

相关推荐

  • Linux的程序包管理,RPM,yum及编译安装简介

    Linux的程序包管理,RPM,yum及编译安装简介   Linux的程序包,指的是ELF格式的二进制应用程序文件所组成的软件包。它一般由二进制文件、库文件、软件配置文件及帮助文件等组成。而对这些包进行管理的工具,主流分为两种,在debian上,用的是apt-get管理deb包;在redhat上,主要用rpm作为软件包管理工具。在这里,我简单的介绍…

    Linux干货 2016-05-29
  • 文本全屏编辑器 vim

             vim在Linux中站着很重要的位置,是每一个学习Linux人员的必须掌握的技能之一,因为vim功能很强大为我们编辑文件和脚本带来了很大的方便。接下来我们来一起了解vim的功能。   文本编辑种类:     行编…

    Linux干货 2016-08-15
  • 第五周:grep和find的使用练习

    1、显示当前系统上root、fedora或user1用户的默认shell; grep -E "^(root|fedora|user1)" /etc/passwd | cut -d: -f7 grep -E "^root|fedora|use…

    Linux干货 2016-10-25
  • N22-北京-追求极境之人-RSYNC差分编码同步原理

    1客户端发送自己的filelist,filelist包含文件hashindexid(alert32)和关联的文件chunkChecksum(MD5)和hashindexID以便进行快速查找,chunksize根据文件大小进行等分,不足均值部分直接发送不进行MD5校验值生成 发送进程一次从生成器读取一个文件索引号和关联的块校验集合 2对于生成器发送的每个文件I…

    Linux干货 2016-08-22
  • ☞LAMP

    LAMP lamp环境简介 php –> httpd Module形式安装php FastCGI方式安装php httpd-2.2配置fcgi php-xcache MySQL 安装与配置 php –> MySQL 快速部署LAMP php网站程序安装 phpMyadmin wordpress DiscuzX 脚本安装wordpress、disc…

    Linux干货 2016-10-12
  • 软件包管理–rpm、yum

    rpm软件包管理,rpm命令的使用。yum命令使用,yum源的搭建,网络yum源的搭建方法。编译安装http

    Linux干货 2017-12-03

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-15 16:52

    作业完成的很好,但是总结没写,这是需要改进的地方