8.10作业

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

echo  "your host is `hostname` "

echo  "ip address is `ifconfig | sed -n -r "2s@inet(.*)netmask(.*)@\1@p"`"  

echo  "`uname -r`"

echo  "`uname -m`"        

echo  "`lscpu`"

echo  "`free  -m -h`"

echo  "您的硬盘大小为 `df -h |  sed -n  '/sda/p' | tr -s " " | cut -d" " -f2  `"

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

read -p "please input backup directory: " backdir

read -p "please input destination directory: " desdir

[ -d $desdir ] && \cp  -r  $backdir $desdir/backup`date +%F ` || mkdir  -p   $/root/etc/

echo "backup successful!"

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

disk_use=`df |grep sd|tr -s " "|cut -d " " -f5|sed -n 's/%//p'|sort -rn|head -n 1`

echo $disk_use

unset disk_use

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

netstat -nt |tr -s ' '|cut -d ' ' -f5 |cut -d: -f1 |grep [0-9]|sort |uniq -c|sort -nr

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

numbera=`sed -n '10p' /etc/passwd |cut -d: -f3`

numberb=`sed -n '20p' /etc/passwd |cut -d: -f3`

let suma_b=numbera+numberb

echo "user1 uig is $numbera"

echo "user2 uid is $numberb"

echo "two users id sum is $suma_b"

unset numberb  suma_b numbera


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

read -p "Input first path of files: " first_path

read -p "Input second path of files:" second_path

a=`cat $first_path |grep -e "^$" -e "[[:space:]]\+$" |wc -l`

b=`cat $second_path |grep -e "^$" -e "[[:space:]]\+$" |wc -l`

let sum=a+b

echo "The total blank lines is: $sum"

unset a b sum


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

a=`ls -A /etc/|wc -l`
b=`ls -A 
8.10作业ar/|wc -l`
c=`ls -A /usr/|wc -l`
let sumfile=a+b+c
echo "three directory have $sumfile files and directorys"
unset a b c sumfile


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

[ $# -lt 1  ] && echo "At least one file" || echo "文件的空行数为 `grep  "^$" $1 |wc -l` "

  

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

[ ping $1 ] && echo "该IP地址可访问" || echo “该IP地址不可访问”


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

 [`df | grep  "sda" | tr -s " "| cut -d " " -f5 | sed -n "s@%@@p" |head -n1` -gt 80  ] &&  echo "满了"|mail -s "磁盘已满" root

 [`df -i | grep  "sda" | tr -s " "| cut -d " " -f5 | sed -n "s@%@@p" |head -n1` -gt 80  ] &&  echo "满了"|mail -s "磁盘已满" root

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

  read -p "请输入文件file"

 grep " .*\.sh"  $file && chmod +x $file || exit 1



判断输入的ip是否为合法ip

两种方法:

1.

read -p "请输入您的ip" ip

echo '$ip' | grep -E -o '{((\<([1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.){3}\.\<([0-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>) -o (0.0.0.0)}' &&  echo "该地址合格。" ||  echo "该地址不合格。"

2.

read -p "请输入ip" ip

  a=`echo "$ip" |sed -n -r "s@^([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)@\1@p" `

  b=`echo "$ip" |sed -n -r "s@^([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)@\2@p" `

  c=`echo "$ip" |sed -n -r "s@^([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)@\3@p" `

  d=`echo "$ip" |sed -n -r "s@^([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)@\4@p" `

 if  [ $a -le 255 ] && [  $b -le 255  ] && [  $c -le 255  ] && [  $d -le 255  ] ; then

    echo "该地址合格。" 

    else

    echo "该地址不合格。"

      

 fi


计算 1~100的值

本脚本计算1~A的值。

read -p 'what is A ' A

  let a=($A+1)*$A/2

  echo "$a"

输入A B的值计算 A+ (A+1)       …(B-1) +B 的总和判断

read -p '请输入数字A和B' A B

  if [ $A -lt $B ] ; then

  let  a=($B+1)*$B/2

  let  b=($A-1)*$A/2

  echo "和为"$(($a-$b))"."  

  else

  if [ $A -gt $B ] ;then

  let  c=($A+1)*$A/2

  let  d=($B-1)*$B/2

    echo  "和为"$(($c-$d))"."

    else

    echo  "和为$(($A*2))." 

    fi

  fi

方法2:

 read -p “请输入数字A和B” A B

  sum-=`seq   -s "+" A B|bc` 

 echo "和为$sum"


简单的计算器

echo $(($1$2$3))注意无提示,比较没有技术含量。


三个简单的课后作业,已完成,日后会上传更多自己觉得有意义的脚本。

原创文章,作者:sjfbjs,如若转载,请注明出处:http://www.178linux.com/33198

(0)
sjfbjssjfbjs
上一篇 2016-08-15
下一篇 2016-08-15

相关推荐

  • find命令详解

    find命令是用来在给定的目录下查找符合给定条件的文件   find [OPTIONS] [查找起始路径] [查找条件] [处理动作]   一、OPTIONS参数     -P、-L、-H:控制软连接的对待方式,用的不多。不介绍了   二、查找路径     就是个目录路径,相对和绝对都可以。   三、查找条件     (一)、根据名称查找       -na…

    Linux干货 2016-09-19
  • 也许你根本不会用百度搜索

    搜索引擎可以帮助使用者在Internet上找到特定的信息,但它们同时也会返回大量无关的信息。但是如果多使用一些技巧,你将发现搜索引擎会花尽可能少的时间找到你需要的确切信息。 1.简单查询 这个就是最简单便捷的使用方式,其实也是我们大多数人平时使用百度或者其他搜索引擎的方式。比如你想查培训学校,那么你的第一反应肯定就是在百度里输入【挖掘机】【挖掘机学校】【蓝翔…

    2015-03-02
  • linux 磁盘管理与文件挂载

        磁盘对于linux来说是至关重要的而且与它 的中心思想相关联,一切皆文件,因此就把磁盘分为了好多类型, 如:块设备,字符设备。对于每类磁盘的使用,我们对它进行了分区与规划,这就用到我们的分区与查看工具 fdisk,理论上磁盘容量足够时,可以建立任意数量的分区。  一.磁盘的管理与工具 1.  fdisk 强大的…

    2017-06-17
  • 如何实现本地yum源的共享

    上一篇关于Linux yum客户端的配置的博客,介绍了如何通过修改本机yum配置文件来访问网络或者本地的yun sever, 本文就来介绍一下,如何把我们的本地RPM包像yum sever一样通过http或ftp网络方式共享出去。 一、准备好发行版光盘,包,元数据    CentOS-6.8-x86_64-bin-DVD1.iso二、准备…

    2017-06-17
  • Linux进程管理

    一、程序与进程           1、程序         程序是为了达到特定的目的,可以被计算机运行并且由命令代码组成的语句序列。       &…

    Linux干货 2015-05-14
  • 马哥教育网络班21期+第1周课程练习

    1.描述计算机的组成及其功能。   计算机主要由运算器,控制器,存储器,输入设备,输出设备组成   运算器用来做计算,用来做二进制运算(加法运算)和逻辑运算   控制器用来控制计算机各部件之间的协调,例如运算器想做运算从哪里读入加数和被加数,寄存在哪里   存储器分为内存储器和外存储器,用来存放数据 内存储器用于存放计…

    Linux干货 2016-07-12