脚本基础练习题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了脚本基础练习题相关的知识,希望对你有一定的参考价值。
1.编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,cpu型号,内存大小,硬盘大小。#!/bin/bash
显示电脑硬件信息
echo "主机名: $(hostname)"
echo "IPv4地址: $(ifconfig | head -n2 |tail -n1 |tr -s " " ":"| cut -d":" -f3)"
echo "操作系统版本:$(cat /etc/redhat-release)"
echo "内核版本: $(uname -r)"
echo "CPU型号: $(cat /proc/cpuinfo|grep "model name"|uniq -c|cut -d":" -f2)"
echo "内存大小: $(free -m | head -n2 |tail -n1|tr -s " " ":"|cut -d":" -f2)"
echo "硬盘大小: $(fdisk -l | grep "GB"|cut -d":" -f2|cut -d"," -f1)"
2.编写脚本/root/bin/backup.sh,可实现每日将/etc/目录备份到/root/etcYYYY-mm-dd中
#!/bin/bash
cp -r /etc/ /root/etc"$(date +%F)"
3.编写脚本/root/bin/disk.h,显示当前硬盘分区中空间利用率最大的值
#!/bin/bash
max=$(df |tr -s " " ":"|cut -d ":" -f5|egrep -o "[[:digit:]]*"|sort -nr|head -n1)
echo "当前硬盘分区中空间利用率最大的值为: $max"
4.编写脚本/root/bin/links.sh,显示正连接本主机的每个远程主机的IPv4地址和连接数,并按连接数从大到小排序
#!/bin/bash
links=$(netstat -tan| grep "^[t]|[u]"|tr -s " " ":"|cut -d":" -f6|uniq -c|sort -nr|egrep "<(([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])"|tail -n1)
echo "连接数和IP地址分别为:$links"
exit 0
5.编写脚本/root/bin/sumid.sh,计算etc/passwd文件中的第十个用户个第二十个用户的ID之和
#!/bin/bash
usera=$(cat -n /etc/passwd | head |tail -n1|cut -d":" -f3)
echo "id为10的uid:$usera"
userb=$(cat -n /etc/passwd | head -n20|tail -n1|cut -d":" -f3)
echo "id为20的uid:$userb"
userall=$usera+$userb
let usera=$usera+$userb
echo "id和为: $usera"
exit 0
6.编写脚本/root/bin/sumspace.sh,传递两个文件路径作为参数给脚本,计算这两个文件中所有空白行之和。
#!/bin/bash
a=$(cat $1|grep "^[[:space:]]$"|wc -l)
b=$(cat $2|grep "^[[:space:]]$"|wc -l)
#let a=$a+$b
let c=$a+$b
echo "$1,$2两个文件的空白行之和为$c"
exit 0
7.编写脚本/root/bin/sumfile.sh,统计/etc,./var,/usr目录中共有多少个一级子目录和文件
#!/bin/bash
ef=$(ls /etc/ | grep ".[:]$"|wc -l)
ed=$(ls /etc/ | grep -v ".[:]$"| grep -v "^[[:space:]]$"|wc -l)
vf=$(ls /var/ | grep ".[:]$"|wc -l)
vd=$(ls /var/ | grep -v ".[:]$"| grep -v "^[[:space:]]$"|wc -l)
uf=$(ls /usr/ | grep ".[:]$"|wc -l)
ud=$(ls /usr/ | grep -v ".[:]$"| grep -v "^[[:space:]]*$"|wc -l)
echo "/etc目录中一共有$ef个一级子目录,$ed个文件"
echo "/var目录中一共有$vf个一级子目录,$vd个文件"
echo "/usr目录中一共有$uf个一级子目录,$ud个文件"
8.写一个生成脚本的脚本,/root/bin/createsh.sh当执行如/root/bin/createsh.sh test .sh时,会自动在/root/bin下新建一个名为test.sh的新文件,该文件会自动给上执行权限,同时自动在文件头上加上#!及注释信息。注释信息如下:
#!/bin/bash
------------------------------------------
# Filename: test.sh(此处会根据文件名自动更换)
# Revision: 1.0
# Date: 2017-01-22(此处会自动变换为当前日期)
# Author: Nanyibo
# Email: nanyibo@gmail.com
# ------------------------------------------
# Copyright: 2017 nanyibo
# License: GPL
之后,自动使用vim打开,等待用户开始编写脚本正文
#!/bin/bash
touch /root/bin/$1
chmod +x /root/bin/$1
echo "#!/bin/bash
------------------------------------------
# Filename: $1(此处会根据文件名自动更换)
# Revision: 1.0
# Date: $(date +%F)(此处会自动变换为当前日期)
# Author: xiaoyu
# Email: 851812316@qq.com
# ------------------------------------------
# Copyright: 2018 xiaoyu
# License: GPL" > /root/bin/$1
vim /root/bin/$1
以上是关于脚本基础练习题的主要内容,如果未能解决你的问题,请参考以下文章