2016-08-10作业

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

#!/bin/bash

echo "hostname is `hostname`"

echo "IPv4 is `ifconfig | sed -n '2p'| sed 's/^[[:space:]]\+inet[[:space:]]\+//' | sed 's/[[:space:]]\+net.*//'`"

echo "OS version is `cat /etc/centos-release`"

echo "OS kernel is `uname -r`"

echo "CPU NO is `uname -m`"

echo "`cat /proc/meminfo | sed -n '1p'`"

echo "sda size is `lsblk | sed -n '2p' | tr -s ' ' '%' | cut -d % -f 4`"

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

#!/bin/bash

cp -r /etc/ /root/etc`date +%F`

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

#!/bin/bash

echo "disk used biggest is `df | grep '^\/dev\/sd.*' | tr -s ' ' ':' | cut -d : -f 5 | sort -nr | sed -n '1p'`"

 

4、编写脚本/root/bin/links.sh,显示正连接本主机的每个远程主机的IPv4

#!/bin/bash

netstat -nt | grep '[0-9]\.' | tr -s ' ' ':' | cut -d: -f6 | sort | uniq -c | sort –nr

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

#!/bin/bash

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

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

echo "sum is $[uid_10+uid_20]"


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

#!/bin/bash

count1="`grep '^$' $1 | wc -l`"

count2="`grep '^$' $2 | wc -l`"

echo "sum count is $[count1+count2]"

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

#!/bin/bash

etc_count="`ls -d /etc/* | wc -l`"

var_count="`ls -d /var/* | wc -l`"

usr_count="`ls -d /usr/* | wc -l`"

 

echo "/etc count is $etc_count"

echo "/var count is $var_count"

echo "/etc count is $usr_count"

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

参数所指向的文件中的空白行数

#!/bin/bash

[ $# -lt 1 ] && echo "one arg at least" || echo "`grep -c '^$' $1`"

 

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

IP地址不可访问”

#!/bin/bash

read -p "please input IPv4:" ip

#echo "$ip"

ping -c1 -w1 $ip &> /dev/null && echo "$ip can access" || echo "$ip can not access"


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

#!/bin/bash

 

for i in $(df | grep '\/dev\/sd.*' | tr -s ' ' ':' | cut -d: -f1,5 | sed 's/%//'); do

#  echo "this is $i"

  sd_name=`echo $i | cut -d: -f1`

  sd_use=`echo $i | cut -d: -f2`

  [ $sd_use -gt 70 ] && echo "$sd_name disk space used $sd_use%, mail to system admin" || echo "$sd_name disk space used $sd_use%,ok"

done

 

echo "#####################################################"

 

for i in $(df -i | grep '\/dev\/sd.*' | tr -s ' ' ':' | cut -d: -f1,5 | sed 's/%//'); do

#  echo "this is $i"

  sd_name=`echo $i | cut -d: -f1`

  sd_use=`echo $i | cut -d: -f2`

  [ $sd_use -gt 70 ] && echo "$sd_name disk inode used $sd_use%, mail to system admin" || echo "$sd_name disk inode used $sd_use%,ok"

done

 

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

#!/bin/bash

read -p "please input file name:" file_name

 

if [ ! -e $file_name ]; then

  echo "$file_name is not exist"

  exit

fi

 

if [[ $file_name =~ .sh ]]; then

  echo "suffix is .sh"

  if [ ! -x $file_name ]; then

    echo "$file_name add x"

    chmod +x $file_name

  else

    echo "$file_name have x already"

  fi

else

  echo "suffix is not .sh"

fi

 

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

#!/bin/bash

 

read -p "please input ip:" ip

 

ip=`echo $ip | sed 's/^[[:space:]]\+//' | sed 's/[[:space:]]\+$//'`

#echo $ip

 

echo $ip | egrep -o "(\<([1-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 "ip is ok" || echo "ip is not ok"

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

[root@localhost bin]# seq -s '+' 1 100 | bc

5050

 

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

#!/bin/bash

read -p "please input A:" a

if [[ ! $a =~ [1-9][0-9]* ]]; then

  echo "A please input Integer"

  exit

fi

 

read -p "please input B:" b

if [[ ! $b =~ [1-9][0-9]* ]]; then

  echo "B please input Integer"

  exit

fi

 

if [[ $a < $b ]]; then

  echo "`seq -s '+' $a $b | bc`"

else

  echo "sorry, B bigger than A"

fi

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

(0)
songzizhesongzizhe
上一篇 2016-08-15 14:31
下一篇 2016-08-15 14:31

相关推荐

  • 第六周作业

    第六周作业 1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; cp /etc/rc.d/rc.sysinit /tmp vim /tmp/rc.sysinit :进入末行模式 % s/^[[:space:]]/#&…

    Linux干货 2016-10-09
  • bash编程初体验(一)

    bash编程初体验(一) 认识bash编程 变量与赋值 算术与逻辑运算 条件测试与退出状态 认识bash编程 Bash(GNU Bourne-Again Shell)是许多Linux发行版的默认Shell,我们要认识的bash中,就是在bash的环境下的一种编程。 众所周知,程序=指令+数据,由此也决定了两种不同的编程风格,过程过与对象式; 过程式:以指令为…

    Linux干货 2016-08-15
  • 如何在 Linux 下大量屏蔽恶意 IP 地址

    很多情况下,你可能需要在Linux下屏蔽IP地址。比如,作为一个终端用户,你可能想要免受间谍软件或者IP追踪的困扰。或者当你在运行P2P软件时。你可能想要过滤反P2P活动的网络链接。如果你是一名系统管理员,你可能想要禁止垃圾IP地址访问你们的公司邮件服务器。或者你因一些原因想要禁止某些国家访问你的web服务。在许多情况下,然而,你的IP地址屏蔽列表可能会很快…

    Linux干货 2015-02-26
  • N22-第八周作业

    第八周 1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。      集线器的主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。它工作于OSI(开放系统互联参考模型)参考模型第一层,即“物理层”。    &n…

    Linux干货 2016-10-09
  • 一起学DNS系列(十四)DNS查询工具之DIG的使用(1)

      这几节主要讲2个常用的DNS的命令行诊断工具,分别是linux下的DIG和windows下的NSLOOKUP,我们首先来说DIG工具。 DIG,全称Domain Information Groper。原本是Linux平台上BIND服务器诊断的工具(已上传至附件),现在已经有了windows的版本,这节就是利用此工具在windows环境下来做一些…

    2015-03-17
  • grub.config文件加密

    作用 在开机启动临时进入1模式的时候,系统先调用/etc/grub.conf。 /etc/grub.conf其实是/boot/grub/grub.conf的软连接。 加密改文件就有效的防止其他用户直接绕过口令登陆1模式,从而进入到root中做一些破坏。 我们可以看一下如何进入1模式。   我们可以看一下临时进入init1模式的窗口 这里的内容与gr…

    2017-07-22