一、脚本
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)"