bash小脚本

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

[root@centos6 scripts]# cat systeminfo.sh
#!/bin/bash
HostName=`uname -n`
Ipv4=`ifconfig |sed -nr '2s#.*addr:(.*)  Bca.*$#\1#gp'`
Cpu=`lscpu|sed -n '13p'|tr -s ' '`
Mem=`free -hm |grep "Mem"|tr -s ' ' ':'|cut -d: -f2`
Disk=`fdisk -l |grep '/dev/sda:'|sed -r 's#.*: (.*),.*$#\1#g'`
 
 
 
echo the hostname is: $HostName
echo the server_ip is: $Ipv4
echo the opeartion system is: $(cat /etc/redhat-release)
echo the kernel verison is: $(uname -r)
echo the cpuinfo is: $Cpu
echo the memery size is: $Mem
echo the Hardisk size is: $Disk
[root@centos6 scripts]# sh systeminfo.sh
the hostname is: centos6.localdomain
the server_ip is: 10.1.249.94
the opeartion system is: CentOS release 6.8 (Final)
the kernel verison is: 2.6.32-642.el6.x86_64
the cpuinfo is: Model name: AMD A8-4500M APU with Radeon(tm) HD Graphics
the memery size is: 980M
the Hardisk size is: 128.8 GB
[root@centos6 scripts]#

 

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

[root@centos6 scripts]# cat backup.sh
#!/bin/bash
backup_dir="/tmp/etc-$(date +%F)"
cp -aR /etc/ $backup_dir && echo "the $backup_dir is backup successfull"
[root@centos6 scripts]# sh backup.sh
the /tmp/etc-2016-08-11 is backup successfull
[root@centos6 scripts]# ll /tmp/
总用量 40
drwxr-xr-x. 122 root root 12288 8月  11 19:03 etc-2016-08-11
 [root@centos6 scripts]#

 

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

[root@centos6 scripts]# cat disk.sh
#!/bin/bash
MaxUse=`df |grep "/dev/sda"|sed -r 's#.* ([0-9]+%).*#\1#g'|sort -nr|head -1`
echo "当前硬盘分区中空间利用率最大的值为:$MaxUse"
[root@centos6 scripts]# sh disk.sh
当前硬盘分区中空间利用率最大的值为:22%
[root@centos6 scripts]#

 

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

[root@centos6 scripts]# cat links.sh
#!/bin/bash
Links=`netstat -tn |grep tcp |tr -s ' ' ':'|cut -d: -f6|sort -nr|uniq -c`
echo -e "主机的每个远程主机的IPv4连接数和地址为:$Links"
[root@centos6 scripts]# sh links.sh
主机的每个远程主机的IPv4连接数和地址为:      2 10.1.250.79
[root@centos6 scripts]#

 

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

[root@centos6 scripts]# cat sumid.sh
#!/bin/bash
uuid1=`cat /etc/passwd|sed -n '10p'|cut -d: -f3`
uuid2=`cat /etc/passwd|sed -n '20p'|cut -d: -f3`
sum=$(($uuid1+$uuid2))
echo "第10个用户和第20用户的ID之和为:$sum"
[root@centos6 scripts]# sh sumid.sh
第10个用户和第20用户的ID之和为:180
[root@centos6 scripts]#

 

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

[root@centos6 scripts]# cat sumspace.sh
#!/bin/bash
[ $# -lt 2 ] && echo "please input two path:" && exit 1
 
Args1=`grep "^$" $1 |wc -l`
Args2=`grep "^$" $2 |wc -l`
 
let sumspace=$Args1+$Args2
 
echo "这两个文件中所有空白行之和为:$sumspace"
[root@centos6 scripts]# sh sumspace.sh  /etc/issue /etc/issue
这两个文件中所有空白行之和为:2
[root@centos6 scripts]# sh sumspace.sh
please input two path:
[root@centos6 scripts]#

 

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

[root@centos6 scripts]# sh sumfile.sh
please input at least three dir:
[root@centos6 scripts]# sh sumfile.sh /etc /var /usr
/etc,/var,/usr共有一级子目录和文件292个
[root@centos6 scripts]# cat  sumfile.sh
#!/bin/bash
[ $# -lt 3 ] && echo "please input at least three dir:" && exit 1
 
total1=`ls -A $1 |wc -l`
total2=`ls -A $2 |wc -l`
total3=`ls -A $3 |wc -l`
 
sumfile=$(($total1+$total2+$total3))
echo "$1,$2,$3共有一级子目录和文件$sumfile个"
[root@centos6 scripts]#

 

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

[root@centos6 scripts]# sh argsum.sh
at least input one args:
[root@centos6 scripts]# sh argsum.sh /etc/issue
the args you input has 1  lines space
[root@centos6 scripts]# cat argsum.sh
#!/bin/bash
 
[ $# -lt 1 ] && echo "at least input one args:" && exit 1 || echo "the args you input has `grep "^$" $1|wc -l`  lines space"
[root@centos6 scripts]#

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

[root@centos6 scripts]# sh hostping.sh
please input one ip address:
[root@centos6 scripts]# sh hostping.sh  10.1.249.94
you can access the website!
[root@centos6 scripts]# sh hostping.sh  10.1.249.93
the ip is not unreachable
[root@centos6 scripts]# cat hostping.sh
#!/bin/bash
[ $# -lt 1 ] && echo "please input one ip address:" && exit 1
ping -c1 -W1 $1 &>/dev/null  && echo "you can access the website!" || echo "the ip is not unreachable"
 
[root@centos6 scripts]#

本章总结blog地址:http://purify.blog.51cto.com/10572011/1836818

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

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

相关推荐

  • 8.10作业

    1、编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小。 echo  "your host is `hostname` " echo  "ip address is `ifconfig | sed -n…

    Linux干货 2016-08-15
  • linux文件管理类命令汇总及几个通配的查找事例

    linux文件管理类命令汇总 1.文本文件查看类命令:cat,tac,more,less,tail,head cat(tac): 正向(反向)显示 cat [OPTION]… [FILE]…                -E:显示行结束符$ -n:对显示出的每一行进行编…

    Linux干货 2016-09-24
  • 过滤语句和复制,权限的一些事例

    1.复制/etc/skel 目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限 ~]# cp -r /etc/skel/ /home/tuser1/ ~]# chmod go= /home/tuser1/ 2.编辑/etc/group文件,添加组hadoop ~]# echo "hadoop:…

    Linux干货 2016-10-14
  • 第二周作业

    一、Linux文件管理类命令     1、文件的复制、移动和删除     1 2 3 4 5 6 7 8 9 10 11 12 13 14 15    A、cp  文件的复制        &nbsp…

    Linux干货 2016-12-13
  • mysql主从复制及zabbix监控从服务器

    Mysql备份: 备份系统的构建,要注意的要点: 第一:能容忍最多丢失多少数据; 第二:恢复数据需要在多长时间内完成; 第三:需要恢复哪些数据:备份时要考虑备份完整; (1)必须做还原测试,用于测试备份的可用性; (2)还原演练;不是一个人能够完成的; 备份类型: 完全备份:就是备份整个数据集,是从时间轴上划分的,完整数据集;; 部分备份:只备份数据子集; …

    Linux干货 2016-12-05
  • CentoS 6.8 安装(小白请进)

    先说点题外话,我现在还是一个小白,刚接触‘高大上’的linux不久,随着深入的学习了解,兴趣越来越浓,这个东西很有意思的,不像学windows那样枯燥无味,真的,不信?欢迎加入马哥大家庭。 废话不多说,注意了:前方高能!!! 首先呢,先下载一个VMware Workstation这个虚拟机软件,它的作用很强大,可以使你在一台机器上同时运行一个甚至多个linu…

    2017-02-17