一、脚本

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

#!/bin/bash
echo '显示当前系统信息'
echo "主机名:"
hostname
echo "ip地址:"
ifconfig |sed -n "2p" |tr -s " " |cut -d " " -f3
echo "操作系统版本:"
cat /etc/centos-release
echo "内核版本:"
cat /proc/version |cut -d"(" -f1
echo "CPU型号:"
lscpu |sed -n "13p" |tr -s " "|cut -d : -f2
echo "内存大小:"
 free -h |sed -n '2p' |tr -s " " |cut -d " " -f2
echo "硬盘大小:"
fdisk -l |sed -n "2p" |cut -d "," -f1 |cut -d: -f2

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

#!/bin/bash
#每日将/etc/目录备份到/root/etcYYY-mm-dd中
cp -rp /etc/. /root/etc`date +%F`

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

#!/bin/bash
#author:zhang
echo "显示硬盘分区中空间利用率最大的值"
df |grep "/dev/sd" |cut -c46-48 |sort -rn |head -1

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

#!/bin/bash
echo "the links are:"
netstat -nt |tr -s ' '  |cut -d ' ' -f5 |cut -d: -f1 |grep [0-9]|sort -rn |uniq -c

         

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

#!/bin/bash
id1=$(sed -n "10p" /etc/passwd |cut -d: -f3)
id2=$(sed -n "20p" /etc/passwd  |cut -d: -f3)
idsum=$((id1+id2))
echo idsum=$idsum

            

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

#!/bin/bash

#author:zhangx
#version:1.0
sp1=$(egrep "^[[:space:]]+$" $1 |wc -l)
sp2=$(egrep "^[[:space:]]+$" $2 |wc -l)
sumspace=$[sp1+sp2]
echo "the line of space is $sumspace"

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

#!/bin/bash
file1=$(ls -d /etc/* |wc -l)
file2=$(ls -d /etc/* |wc -l)
file3=$(ls -d /etc/* |wc -l)
sumfile=$[file1+file2+file3]
echo "the total is $sumfile"

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

#!/bin/bash
[ $# -lt 1 ] && echo "argnum less than 1" || egrep -c '^[[:space:]]+$' $1

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

#!/bin/bash
ping -c1 -W1 $1 &> /dev/null && echo "ip可以访问" || echo "ip不可以访问"

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

#!/bin/bash
disk=`df |grep "/dev/sda" |cut -c44-46 |sort -rn |head -1`
inode=`df -i |grep "/dev/sda" |cut -c43-44 |sort -rn |head -1`
[ "$disk" -gt 80 -o "$inode" -gt 80 ] &&echo "磁盘已满" | mail -s "磁盘报警" root &&exit

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

#!/bin/bash
read -p "please input filename:" file
[ ! -f $file ] &&echo "该文件不存在" && exit 0
[[ $file =~ .*.sh$ ]] &&chmod +x $file &&echo "执行权限添加成功" ||echo "该文件不匹配"

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

#!/bin/bash
read -p "请输入IP地址:" ip 
echo $ip |egrep "\b(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b" &>/dev/null &&echo "地址合法" ||echo "地址不合法"
13、计算1+2+3+...+100
#!/bin/bash
echo "计算1+2+3+...+100的值:$(echo {1..100} |tr " " "+" |bc)"

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

#!/bin/bash
read -p "the first number:" a
read -p "the secnod number:" b
[ $a -lt $b ] &&echo "the addnumber is :$(seq -s + $a $b |bc)"&&exit 0 || [ $a -gt $b ] &&echo "the addnumb is :$(seq -s + $b $a |bc)"