加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

shell练习

发布时间:2020-12-15 09:14:05 所属栏目:安全 来源:网络整理
导读:1、编写脚本 /root/bin/systeminfo.sh, 显示当前主机系统信 息,包括主机名, IPv4 地址,操作系统版本,内核版本, CPU 型号,内存大小,硬盘大

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

[root@zab ~]# mkdir bin vim 只能创建脚本文件,root下需手动创建bin目录

[root@zab ~]# vim /root/bin/systeminfo.sh 创建脚本

#!/bin/bash bash shell类型

#file-name:systeminfo.sh #表示注释 文件名

echo "`hostname`" 命令需要反引号解析

echo "`uname -r`"

echo "`cat /etc/centos-release`"

echo "cpu:`lscpu |egrep "Intel"|tail -n1|tr -s ' '|cut -d: -f2`"

echo "free-mem:`free|egrep "Mem"|tr -s ':' ' '|cut -d' ' -f4`"

echo "sda:`df -h|egrep sda`"

~

[root@zab ~]# bash systeminfo.sh

zab.123

2.6.32-696.el6.x86_64

CentOS release 6.9 (Final)

cpu: Intel(R) Core(TM) i5-4200M CPU @ 2.50GHz

free-mem:830740

sda:/dev/sda2 48G 3.7G 42G 8% /

/dev/sda3 9.5G 22M 9.0G 1% /app

/dev/sda1 976M 40M 886M 5% /boot

[root@zab ~]# bash systeminfo.sh bash执行不需要路径

zab.123

2.6.32-696.el6.x86_64

CentOS release 6.9 (Final)

cpu: Intel(R) Core(TM) i5-4200M CPU @ 2.50GHz

free-mem:831584

sda:/dev/sda2 48G 3.7G 42G 8% /

/dev/sda3 9.5G 22M 9.0G 1% /app

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

#!/bin/bash

cp -av /etc/ /root/etc`date +%F`

或者

#!/bin/bash

DATE=`date +%F`

cp -av /etc/ /root/etc${DATE}

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

#!/bin/bash

df -h|egrep "sda"|egrep -o "&;[0-9]{1,}%"|head -n1

~

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

#!/bin/bash

num1=`cat /etc/passwd |head -10|tail -1|cut -d":" -f3`

num2=`cat /etc/passwd |head -20|tail -1|cut -d":" -f3`

let sum=num1+num2

echo $sum

180

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

#!/bin/bash

a=`cat $1|egrep "^[[:sapce:]]*$"|wc -l`

b=`cat $2|egrep "^[[:sapce:]]*$"|wc -l`

let sum=a+b

echo $(sum)

~

bash a.sh f1 f2

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

#!/bin/bash

a=`ll /etc |egrep "^d"|sort -nr|wc -l`

b=`ll /var |egrep "^d"|sort -nr|wc -l`

c=`ll /usr |egrep "^d"|sort -nr|wc -l`

let d=a+b+c

echo $d

aa=`ll /etc |egrep "^-"|sort -nr|wc -l`

bb=`ll /var |egrep "^-"|sort -nr|wc -l`

cc=`ll /usr |egrep "^-"|sort -nr|wc -l`

let dd=aa+bb+cc

echo $(dd)

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

#!/bin/bash

[ $# -lt 1 ] && echo "least one arg" && exit

[ $# -lt 1 ] || cat $1|egrep "^[[:space:]]*$"|wc -l

~

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

#!/bin/bash

ping -w 4 $1 &>/dev/null && echo "ip can access"|| echo "ip can not access"

~

9.编写脚本/root/bin/checkdisk.sh,检查磁盘分区空间和 inode使用率,如果超过80%,就发广播警告空间将满

#!/bin/bash

a=`df |egrep "/dev/sd"|egrep -o "&;[0-9]{1,}%"|sort -nr|head -1|tr -d "%"`

[ $a -gt 80 ] && echo -e"awarning" || echo "normal"

10、编写脚本/bin/per.sh,判断当前用户对指定的参数文件, 是否不可读并且不可写 v

#!/bin/bash

[ ! -r $1 -o -w $1 ] && echo "`whoami` can not read and write "

#!/bin/bash

[ -r $1 ] || [ -w $1 ] || echo "`whoami` can not read and write"

~

11、编写脚本/root/bin/excute.sh ,判断参数文件是否为sh 后缀的普通文件,如果是,添加所有人可执行权限,否则提 示用户非脚本文件 v

#!/bin/bash

[[ `basename $1` =~ .*.sh ]] && [ -f $1 ] && chmod a+x $1 || echo "$1 is not bash file"

12.复制/etc/profile/tmp/目录,用查找替换命令删除 /tmp/profile文件中的行首的空白字符 v

扩展模式下:%s@^[[:space:]]+@@g

13复制/etc/rc.d/init.d/functions文件至/tmp目录,用查 找替换命令为/tmp/functions的每行开头为空白字符的行的 行首添加一个#

:%s@^ @# @g 行首为空格加# 意思是空格替换为#加空格 将行首空格字符替换为#空格字符

14复制/etc/rc.d/init.d/functions文件至/tmp目录,替换 /tmp/functions文件中的/etc/sysconfig/init/var/log

:%s@/etc/sysconfig/init@/var/log@g

15.删除/tmp/functions文件中所有以#开头,且#后面至少 有一个空白字符的行的行首的#

:%s@^# @ @g

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读