熟悉学习shell编程
来源:互联网 发布:实况2017拉什福德数据 编辑:程序博客网 时间:2024/05/22 17:25
这是我来公司所做的第一件和编程直接相关的事情,要求使用shell命令,其实感觉linux下面的shell和windows下面的dos批处理是相同的。
题目:
1.使用shell语言流程控结合ifconfig、grep、cut、echo、sed等命令从接口上获取
IP地址、子网掩码及以太网硬件地址程序showif.sh。
要求 ①以showif.sh <parameter>的形式调用程序。
②输出<parameter>对应的结果。
③如输入参数有误,打印出help信息。
④执行及输出如下:
#./showif.sh IPv4
#192.168.0.172
2. 使用shell语言流程控结合ifconfig、grep、cut、echo、sed等命令实时统计接口流量 程序speed.sh 。 要求: ①统计间隔3秒。 ②以speed.sh <if name>的形式调用程序。 ③如输入参数有误,打印出help信息。 ④执行及输出如下: #./speed.sh eth0 #eth0: Recive-> 128.36K Transmit-> 48.75K #eth0: Recive-> 268.20K Transmit-> 78.00K 一下是我自己花了一天半的时间做的具体实现: 1.这里功能是基本实现了,但在使用正则表达式方面还不是很正确,使用的查找方法比较简单。 #!/bin/bash 2.使用的过滤方式(正则表达式)不好,而且过滤错误的参数输入方面没有完成(参数n已定义): #!/bin/bash
#filename:showif
if test $# = 0; then
echo "参数个数不能为0,清输入正确的参数[IPv4 | SubMask | Mac]"
else if test $1 = "IPv4";then
echo "输出IPv4地址:"
/sbin/ifconfig | awk '{if ( $1 == "inet" && $3 ~ /^Bcast/) print $2}' | cut -f2 -d ":"
else if test $1 = "SubMask";then
echo "输出SubMask子网掩码:"
echo `/sbin/ifconfig | awk -F "Mask" '/Mask/ {print $2}'`|cut -f2 -d ":"
echo `/sbin/ifconfig | awk -F "Mask" '/Mask/ {print $2}'`|cut -f3 -d ":"
echo `/sbin/ifconfig | awk -F "Mask" '/Mask/ {print $2}'`|cut -f4 -d ":"
echo `/sbin/ifconfig | awk -F "Mask" '/Mask/ {print $2}'`|cut -f5 -d ":"
else if test $1 = "Mac";then
echo "输出Mac物理地址:"
echo `/sbin/ifconfig | awk -F "HWaddr" '/HWaddr/ {print $2}'`|cut -f1 -d " "
echo `/sbin/ifconfig | awk -F "HWaddr" '/HWaddr/ {print $2}'`|cut -f2 -d " "
echo `/sbin/ifconfig | awk -F "HWaddr" '/HWaddr/ {print $2}'`|cut -f3 -d " "
else
echo "清输入正确的参数[IPv4 | SubMask | Mac]"
fi
fi
fi
fi
#filename:speed
delay=1
#这里n的作用是做输入参数的错误检测的,但实现时没有具体实现
n=1
now_get=`/sbin/ifconfig $1 | awk -F "RX bytes:" '/RX/ {print $2}' |cut -f1 -d " "`
now_up=`/sbin/ifconfig $1 | awk -F "TX bytes:" '/TX/ {print $2}' |cut -f1 -d " "`
while(test $n -ne 0)
do
have_get=$now_get
have_up=$now_up
now_get=`/sbin/ifconfig $1 | awk -F "RX bytes:" '/RX/ {print $2}' |cut -f1 -d " "`
now_up=`/sbin/ifconfig $1 | awk -F "TX bytes:" '/TX/ {print $2}' |cut -f1 -d " "`
recv_bytes=`expr $now_get - $have_get`
recv_bytes=`echo " scale=0; $recv_bytes / $delay" | bc`
# recv_bytes=`echo " scale=0;$recv_bytes / delay" | bc`
recv_kb=`echo " scale=3; $recv_bytes / 1024" | bc`
tran_bytes=`expr $now_up - $have_up`
tran_bytes=`echo " scale=0; $tran_bytes / $delay" | bc`
# tran_bytes=`echo " scale=0;$tran_bytes / delay" | bc`
tran_kb=`echo " scale=3; $tran_bytes / 1024" | bc`
# echo "下载:"$recv_bytes "b/s 上传:"$tran_bytes "b/s"
echo "下载:"$recv_kb "kb/s 上传: "$tran_kb "kb/s"
sleep $delay
done
- 熟悉学习shell编程
- shell脚本学习之简单熟悉
- 快速熟悉shell
- shell编程学习
- 开始学习Shell编程
- 学习Shell编程基础
- shell 编程学习---续
- Linux Shell编程学习
- shell编程学习笔记
- Linux Shell编程学习
- Shell 编程-学习笔记
- Linux Shell编程学习
- shell编程学习笔记
- shell 编程 学习笔记
- Shell 编程学习资料
- Shell编程学习进度
- shell 编程:tr学习
- shell编程:sed学习
- 实践人生,一个普通IT人的十年回顾
- C++编译文件
- 动态SQL语句基本语法
- 二手车置换将成为各汽车厂家争夺的香饽饽
- Jbpm4.4+hibernate3.5.4+spring3.0.4+struts2.1.8整合例子(附完整的请假流程例子,jbpm基础,常见问题解决)
- 熟悉学习shell编程
- 写文章的几大技巧
- 网站无法访问http错误种类及原因
- sharepoint 中添加计时器作业TimerJob
- Hibernate 映射
- C++ 虚函数的作用
- 【转帖】源的添加管理和Cydia使用教程
- 关于旁路电容和耦合电容精讲
- 面向对象常见的4种开发方法