码迷,mamicode.com
首页 > 系统相关 > 详细

Linux基本功杂记——[007]——8月10日课后作业

时间:2016-08-10 22:38:26      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:

/*答案不止一个,仅列出自认为最优雅的存在*/

作业要求:编写BASH脚本实现题目要求的内容。

一、显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小

1 #!/usr/bin/bash
2 printf 3 " Hostname: $(hostname)\n \
4 IPv4: $(ip addr | grep -oP (\d+\.){3}\d+/\d+ | awk BEGIN{ORS=" "}{print})\n 5 OS_version: $(cat /etc/gentoo-release)\n 6 Kernel_version: $(uname -r)\n 7 Cpu: $(uname -p)\n 8 TotalMem(kiB): $(cat /proc/meminfo | grep -oP  (?<=MemTotal:)\s*\d+ | sed s/ \+//g)\n 9 TotalDisksize(kiB): $(cat /sys/block/sd*/size | gawk ‘BEGIN{printf "(";ORS=" + "}{print}END{printf "0) / 2\n"}‘ | bc)\n"
f@z ~/bash_script $ bash systeminfo.sh 
 Hostname: z
 IPv4: 127.0.0.1/8 172.18.16.4/24 
 OS_version: Funtoo Linux - baselayout 2.2.1
 Kernel_version: 4.4.16
 Cpu: Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz
 TotalMem(kiB): 16437364
 TotalDisksize(kiB): 1211193648

二、计算/etc/passwd文件中的第10个用户和第20用户的ID之和

#!/bin/bash
sed -n 10p;20p /etc/passwd | gawk -F: BEGIN{ORS=" + ";printf "("}{print $3}END{printf "0)" "\n"} | bc
f@z ~/bash_script $ bash sumid.sh 
1010

三、传递两个文件路径作为参数给脚本,计算这两个文件中所有空白行之和

f@z ~/bash_script $ cat sum_blanklines.sh 
#!/bin/bash
read -p "请输入一个文件路径: " file1
read -p "请再输入一个文件路径: " file2
printf "这两个文件中的空白行数合计: $(grep -P ‘^\s*$‘ $file1 $file2 | wc -l)\n"
f@z ~/bash_script $ bash sum_blanklines.sh 
请输入一个文件路径: passwd
请再输入一个文件路径: passwd1
这两个文件中的空白行数合计: 6

四、统计/etc, /var, /usr目录中共有多少个一级子目录和文件

#!/bin/bash
find /etc /var /usr -maxdepth 1 | wc -l

五、接受一个文件路径作为参数;若参数个数小于1,则提示“不能为空”,并再次提示输入;若参数个数不小于1,则显示第一个参数所指向的文件中的空白行数

f@z ~/bash_script $ cat args_num.sh 
#!/bin/bash
path() {
    printf "请输入一个文件路径: "
}
path
read Path
until [[ $Path != "" ]]
do 
    printf "不能为空!\n"
    path
    read Path
done
    grep -P ^\s*$ $Path | wc -l

六、接受一个主机的IPv4地址做为参数,测试是否可连通,若能ping通,则提示用户“该IP可访问”;若不通,则提示用户“ 该IP不可访问”

#!/bin/bash
read -p "请输入一个IPv4地址: " IPv4
ping -w 1 -c 1 $IPv4 > /dev/null
if [[ $? == "0" ]]
then
    printf "该IP可访问\n"
else
    printf "该IP不可访问\n"
fi

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

#!/bin/bash
InodeUsed=$(df -i | gawk {if ($5 ~ /[8-9][0-9]%/) print $1 " " $5})
SpaceUsed=$(df | gawk {if ($5 ~ /[8-9][0-9]%/) print $1 " " $5})
if [[ $InodeUsed != "" || $SpaceUsed != "" ]]
then
    printf "如下分区空间使用率已超过80%:\n${SpaceUsed}\n如下分区Inode使用率已超过80%:\n${InodeUsed}\n" | mail -s Disk_Space_Warning root 
fi

八、计算1到100之间整数的和

#!/bin/bash
echo {1..100} | tr   + | bc

九、判断输入的IP是否为合法IP(粗略判断,重点在于脚本中正则的应用)

#!/bin/bash
if [[ $1 =~ ([0-9]+\.){3}[0-9]+ ]]
then
    printf "IP合法\n"
else
    printf "IP不合法\n"
fi

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

f@z ~/bash_script $ cat sum100diy.sh 
#!/bin/bash
read -p "请输入两个正整数: " goal1 goal2
sum=0
if [[ goal1 -gt goal2 ]]
then
    g1=goal1
    g2=goal2
else
    g1=goal2
    g2=goal1
fi

until [[ $g1 -le $g2 ]]
do
    sum=$(($sum + $g1))
    g1=$(($g1 - 1))
done
sum=$(($sum + $g2))
printf "$sum\n"

Linux基本功杂记——[007]——8月10日课后作业

标签:

原文地址:http://www.cnblogs.com/hadex/p/5758965.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!