8月10号课后练习

课后练习

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

#!/bin/bash
echo Hostname: `hostname`
echo IP address: `ifconfig|egrep -o "[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}"|head -n1`
echo System version: `cat /etc/system-release`
echo kernel version: `uname -r`
echo CPU type : `lscpu |grep ‘Model name‘|sed ‘s/.*://‘|sed ‘s/^[[:space:]]\+//‘`
echo Disk size :`fdisk -l|grep "sda:"|sed ‘s/.*://‘|sed ‘s/,.*//‘|sed ‘s/^[[:space:]]\+//‘`
echo Memory size : `free -m|grep "Mem"|tr -s [[:space:]]|cut -d" " -f2` MB

运行结果

[[email protected] ~]# bash systeminfo.sh
Hostname: shao
IP address: 10.1.53.2
System version: CentOS Linux release 7.2.1511 (Core)
kernel version: 3.10.0-327.el7.x86_64
CPU type : Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz
Disk size :214.7 GB
Memory size : 1824 MB

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

#!/bin/bash
cp -arv /etc /root/etc`date +%F`

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

#!/bin/bash
echo "The max using rate is:`df |grep "/dev/sd"| cut -c 44-46 | sort -nr | head -1`%"

运行结果

[[email protected] ~]# bash disk.sh
The max using rate is: 74%

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

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

运行结果

[[email protected] ~]# bash links.sh
the links number is:
      2 10.1.53.3

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

#!/bin/bash
echo ‘The sum is‘
id1=`cat /etc/passwd | sed -n ‘10p‘ | cut -d: -f3`
id2=`cat /etc/passwd | sed -n ‘20p‘ | cut -d: -f3`
let idsum=$id1+$id2
echo "The sum is:$idsum"
unset idsum

运行结果

[[email protected] bin]# bash sumid.sh
The sum is:70

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

#!/bin/bash
file1_blank=`grep "^[[:space:]]*$" $1 | wc -l`
file2_blank=`grep "^[[:space:]]*$" $2 | wc -l`
sumspace=$[$file1_blank+$file2_blank]
echo "The tatal blank line:$sumspace"

运行结果

[[email protected] ~]# bash sumspace.sh /etc/passwd /etc/fstab 
The tatal blank line:1

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

#!/bin/bash
etcnum=`ls -d /etc/*|wc -l`
varnum=`ls -d /var/*|wc -l`
usrnum=`ls -d /usr/*|wc -l`
echo "the totalfile is $[etcnum+varnum+usrnum]"

运行结果

[[email protected] bin]# bash sumfile.sh
the totalfile is 298

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

#!/bin/bash
read -p "Enter a filename:" file
[ -z "$file" ] && echo "please enter a file name" && exit 2
echo -n "The  blank line number is:"
echo `grep -c  ‘^[[:space:]]*$‘  $file`

运行结果

[[email protected] ~]# bash sumspace.sh
Enter a filename:
please enter a file name
[[email protected] ~]# bash sumspace.sh
Enter a filename:/etc/fstab
The  blank line number is:1

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

#!/bin/bash
[ $# -ne 1 ] && echo "please input one ipaddr" && exit 2
ping -c1 -w1 $1 &> /dev/null && echo "ping successful" || echo "ping failed"

运行结果

[[email protected] bin]# bash hostping.sh
please input one ipaddr
[[email protected] bin]# bash hostping.sh 10.1.254.254
ping successful

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

#!/bin/bash
mount=$((df;df -i) | grep "/dev/sd" | tr -s ‘ ‘ | cut -d‘ ‘ -f5 | grep -o "[[:digit:]]\+" | sort | tail -1)
[ "$mount" -ge 80 ] && echo "disk almost full" | mail -s "dangerous" root || exit 3

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

#!/bin/bash
read -p "please input a test file: " FILENAME
[ ! -e $FILENAME -o !  -f $FILENAME ] && echo "please input a real file" && exit 100
echo $FILENAME | grep -q ‘.*\.sh$‘  && (chmod +x $FILENAME ; echo "Add x right for the file successfully") || echo "this is not a .sh file"

运行结果

[[email protected] bin]# ls
excute.sh  hostping.sh  per.sh  sumfile.sh
[[email protected] bin]# bash excute.sh
please input a test file: hostping.sh
Add x right for the file successfully

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

#!/bin/bash
read -p "please input one useful ip:" ip_addr
echo $ip_addr | grep -E "^(\<([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])\>$" &> /dev/null  && echo "this is a useful ip" || echo "this is not a useful ip"

运行结果

[[email protected] bin]# bash checkip.sh
please input one useful ip:10.1.534.1
this is not a useful ip
[[email protected] bin]# bash checkip.sh
please input one useful ip:10.1.53.1
this is a useful ip

13、计算1+2+3+...+100

#!/bin/bash
#!/bin/bash
echo -e "\033[34m1-100 all positive integer‘s sum\033[0m : `echo {1..100} | tr " " "+" | bc`"

运行结果

[[email protected] bin]# bash 100sum.sh
1-100 all positive integer‘s sum : 5050

方法二:seq -s + 1 100 | bc

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

#!/bin/bash
read -p "first number:" a
read -p "second number:" b
[ $a -ge $b ] && echo "sum is `seq -s+ $b $a | bc`" || echo "sum is `seq -s+ $a $b | bc`"

运行结果

[[email protected] bin]# bash sumAB.sh
first number:4
second number:8
sum is 30
[[email protected] bin]# bash sumAB.sh
first number:100
second number:1
sum is 5050

15、chmod -rw /tmp/file1,编写脚本/root/bin/per.sh,判断当前用户对/tmp/file1文件 是否不可读且不可写

#!/bin/bash
[ -r /tmp/file1 -o  -w /tmp/file1 ] && echo "`whoami` can read or write /tmp/file1" || echo  "`whoami` can not read and can not write /tmp/file1"

运行结果

[[email protected] bin]# bash per.sh
root can read or write /tmp/file1

16、编写脚本/root/bin/nologin.sh和login.sh,实现禁止和充许普通用户登录系统。

禁止

#!/bin/bash
[ -e /etc/nologin ] && echo "the normal user can not login already" ; exit || touch /etc/nologin
echo "disable normal user login "

允许

#!/bin/bash
[ -e /etc/nologin ] && rm -f /etc/nologin 
echo "enable user login "

17、写一个脚本/root/bin/createuser.sh,实现如下功能: 使用一个用户名做为参数,如果指定参数的用户存在,就显 示其存在,否则添加之;显示添加的用户的id号等信息

#!/bin/bash
read -p "please input you name:" name
if cat /etc/passwd | cut -d: -f1 | grep -q "^$name$";then
    echo "the username already exits"
else
    useradd $name
    cat /etc/passwd | grep "^$name\b"
fi

运行结果

[[email protected] bin]# bash createuser.sh
please input you name:shao
the username already exits
[[email protected] bin]# bash createuser.sh
please input you name:liu
liu:x:1014:1019::/home/liu:/bin/bash

18、写一个脚本/root/bin/yesorno.sh,提示用户输入yes或 no,并判断用户输入的是yes还是no,或是其它信息

#!/bin/bash
[ $# -ne 1 ] && echo "please input an arg" && exit
ans=`echo $1 | tr ‘A-Z‘ ‘a-z‘`
if [ $ans = yes -o $ans = y ]
then
    echo "yes"
elif [ $ans = n -o $ans = no ]
then
    echo "no"
else
    echo "error"
fi

运行结果

[[email protected] bin]# bash yesorno.sh y
yes
[[email protected] bin]# bash yesorno.sh 
please input an arg
[[email protected] bin]# bash yesorno.sh No
no
[[email protected] bin]# bash yesorno.sh YES
yes

19、写一个脚本/root/bin/filetype.sh,判断用户输入文件路 径,显示其文件类型(普通,目录,链接,其它文件类型)

#!/bin/bash
read -p "please input a filename:" filename
! [ -e $filename ] && echo "The filename do not exist" && exit
if  [ -h $filename ] ;then
    echo "filetype is  syslink file"
elif [ -d $filename ] ;then
    echo "filetype is dirction"
elif [ -f $filename ] ;then
    echo "filetype is common file"
else
    echo "filetype is other"
fi

运行结果

[[email protected] bin]# bash filetype.sh
please input a filename:/etc
filetype is dirction
[[email protected] bin]# bash filetype.sh
please input a filename:/etc/redhhat-release
The filename do not exist
[[email protected] bin]# bash filetype.sh
please input a filename:/etc/redhat-release
filetype is  syslink file
[[email protected] bin]# bash filetype.sh
please input a filename:/etc/issue
filetype is common file

20、写一个脚本/root/bin/checkint.sh,判断用户输入的参数是否为正整数

#!/bin/bash
[ $# -ne 1 ] && echo "Please input a number" && exit
if [[ $1 =~ ^0*[1-9][0-9]*$ ]]
then
    echo "int"
else
    echo "not int"
fi

运行结果

[[email protected] bin]# bash  checkint.sh
Please input a number
[[email protected] bin]# bash  checkint.sh 0
not int
[[email protected] bin]# bash  checkint.sh 12
int
[[email protected] bin]# bash  checkint.sh 1.1
not int
时间: 2024-10-08 06:15:00

8月10号课后练习的相关文章

10月10号就准备进公司

10月10号 进入公司. 月薪是8K 技术水平:初级程序员. 技术目前为止:JAVASE. JAVAEE.SSH.SSM.AJAX.JQUERY.JS.MYSQL.ORACLE.LUCENE.pdsgell各种插件 都在入门级别. 一般功能可以做出来.. 现在又回到了JAVASE.准备研究开始研究底层原理. 一切从最基础开始研究. 研究源码. 现在是第二遍研究底层.. 10号开始..我会将每一天的成长进到微博.连续记载999天. 希望在我成长的999天里. 回过头来看今天日记.. 希望成长的99

8月10号=》376页-385页

14.7 传统的DHTML模型 在DHTML对象模型中,window对象时整个对象模型的顶层对象,该对象包含一个document属性,该属性代表窗口内的HTML文档, 如果该窗口内有多个Frame,则可使用frames[]方法依次访问该窗口的每个Frame. document对象代表HTML文档本身,document对象又包含了一系列的属性:forms.anchors.links.images·····这些属性的 返回值以关联数组的形式存在,为了访问文档内的指定控件,访问这些属性数组的指定元素即

北京1月10号 《微营销超前思维模式》将颠覆整个世界,开创新时代!

北京1月10号 <微营销超前思维模式>将颠覆整个世界,开创新时代! 0 如果你接触了微信营销一段时间一定听过下面这些案例:1.7天连锁酒店利用微信在一个月内会员从30万快速倍增到100万. 2.凯迪拉克通过30天的推广吸引37万精准粉丝,轻松省去传统的1千万的推广费.3."90后"的学生通过微信卖水果,没店铺,没店员,实现月入8万的奇迹.4.金凤成祥微信会员卡上线97天,累计开卡数163276张.5.2013年9月,陈坤微信门事件,陈坤公开微信平台一天净收入就高达700万元

2020.2月10号-2月16任务完成情况

2月10号-2月16任务完成情况: 1. java并发复习了一遍,但是还没总结完 2. go入门,看到第5章 3. 剑指offer每天一题 4. 剑指offer书看了20道题 2月17-23任务: 1. 看完go语言 2. 看完剑指offer书 3. 每天一题 原文地址:https://www.cnblogs.com/Stephanie-boke/p/12355451.html

3月10号周二课堂练习:四则运算二

一.题目新的要求 1.题目避免重复: 2.可定制(数量/打印方式): 3.可以控制下列参数: 是否有乘除法.是否有括号. 数值范围.加减有无负数.除法有无余数.否支持分数 (真分数, 假分数, …).是否支持小数 (精确到多少位).打印中每行的间隔可调整: 二.设计思想(将自己上次上课时的设计思想进行稍微的修改) 1.判断两次随机数是否相同    使用函数srand()保证两个随机数不同 2.多加入一个变量,来控制题目数量 3.在每一个switch选择的语句,进行选择判断  3.1选择是否有乘除

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

/*答案不止一个,仅列出自认为最优雅的存在*/ 作业要求:编写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

作业8月10号

文斗新闻 重庆市开县人民发来电报 重庆市开县人民发来电报 重庆市开县人民发来电报 重庆市开县人民发来电报 重庆市开县人民发来电报 将进酒 作者:李白 君不见,黄河之水天上来,奔流到海不复回. 君不见,高堂明镜悲白发,朝如青丝暮成雪. 人生得意须尽欢,莫使金樽空对月. 天生我材必有用,千金散尽还复来. 烹羊宰牛且为乐,会须一饮三百杯. 岑夫子,丹丘生,将进酒,杯莫停. 与君歌一曲,请君为我倾耳听. 钟鼓馔玉不足贵,但愿长醉不复醒. 古来圣贤皆寂寞,惟有饮者留其名. 陈王昔时宴平乐,斗酒十千恣欢谑.

2019年11月10号 王腾飞 spss

个数据文件包含下列数据,5个家庭没有汽车(编码为0),20个家庭有一辆汽车(编码唯1),10个家庭拥有两辆汽车(编码为2)指出下列哪种统计量适用于描述该数据并计算出统计量的值.(A) A拥有汽车数的众数    B.拥有汽车数的中位数 C.拥有汽车数的方差    D.变异系数 2.为了生成某个给定变量的总和.应该选用哪一个汇总统计量?(B) A.mean    B.sum C.median    D.mode 3.假如有数据如图3/45所示,如果需要求出ABC这三个变量的均值,并且希望在有缺失值的

今年股票注定有一波行情(重申6月10号的观点)

今年股票注定有一波行情 分类: 股海浮沉2014-06-10 14:02 281人阅读 评论(2) 收藏 编辑 删除 如今的股市感觉起来是鸡肋,丢之可惜,食之无味,在一遍遍,一次次被它消磨着,在2000点上上下下几次,坚强的人不为所懂,躁动的人经常从一个坑,跳进另外一个更大的坑.资金越变越少!这个时候,是考验一个人意志的时候,看你是否会坚持自己的推断.坚持自己的看法.越多人受不了,你就会越成功.度过了这一个难熬的时刻,非常快就是大的黎明.2000点横的时间越长,大盘的机会越大.这个时候须要你做的