Linux脚本刷新屏幕显示输出,像top命令一下刷新屏幕

6 篇文章 0 订阅
4 篇文章 0 订阅

Linux脚本刷新屏幕显示输出,像top命令一下刷新屏幕


我自己准备在服务器上写一个监听IP:端口流量统计的一个脚本,但是每次都去手动执行脚本很麻烦,一直执行控制台输出又贼长,所以我就准备写一个像top命令一样的刷新脚本,说一下我的心得,文章结尾是我整理的资料以免大家再到处去找,已声明转载出处!如有问题请作者联系我。

首先说一下怎么监听端口流量

# 监听端口出站流量
iptables -A OUTPUT -p tcp --sport 9001
# 监听端口入站流浪
iptables -A INPUT -p tcp --dport 9001
# 查看监听统计信息  重启会清空,-x是以字节显示统计,不要-x就是以MB为单位显示
iptables -L -v -n -x

只要在iptables中添加完监听信息,之后(在重启服务器之前)直接运行查看统计信息就行了

刷新屏幕脚本

先贴一下我的最终版脚本,慢慢说明

#!/bin/bash
# 当Ctrl+c 清空屏幕再退出,见引用3
trap "clear;exit" 2
# 翻一个新屏幕
clear
# 每秒刷新输出屏幕的端口统计结果
while [ true ]
do
    # 需要执行的功能命令,各写各的业务
    report=`iptables -L -n -v`
    # echo输出特殊处理,见引用2
    echo -ne "$report"
    # 使用ASCI码控制光标定位回到第一行第一列,见引用1
    echo -ne "\033[1;1H"
    # 进程睡眠1秒
    sleep 1
done
  • trap 后面一定要跟"",双引号内写要执行的命令,否则无效,然后再接要拦截的操作标识符
  • clear实质上是输出一个换页符,将屏幕下移一页,并没有清空输出,还可以使用滚轮向上滑动
  • echo -ne “$report” 一定要使用双引号,如果双引号内要写命令就用``(这不是单引号,是英文输入状态下的Tab上方的键),$report这里是引用变量所以不用

引用1

转自:https://blog.csdn.net/shenwansangz/article/details/46865513
echo进行颜色输出的时候,要使用参数-e 格式:
echo -e “\033[字背景颜色;字体颜色m” 如:echo -e “\033[32;40m”
在上面命令中,”\033[32;40m”表示定义后面文本的颜色,“\033”表示启动一个转义序列,“[”定义开始颜色定义,“0”定义默认的字体颜色,其它部分稍后定义。“32”定义文本的前景色,这里32表示绿色;“40”定义文本的背景色,40表示黑色。
我们一共有8种字体颜色可供选择:
它们分别是30 (黑色)、31 (红色)、32 (绿色)、33 (黄色)、34 (蓝色)、35 (紫红色)、36 (青色)和37 (白色)。
对于底色也有8种颜色可供选择,只需要将字体颜色的3修改为4即可,例如40、41、42、43、44、45、46、47。
另外,我们还可以用echo进行光标定位
如:echo -e “\033[10;5H\033[31;46mthis is a test”,表示,将光标移到第10行第5列,并输出this is a test字样,该字样前景色为红色,背景色为青色
更多echo输出的控制,具体的摘抄一些如下:
\033[0m 关闭所有属性
\033[1m 设置高亮度
\033[4m 下划线
\033[5m 闪烁
\033[7m 反显
\033[8m 消隐
\033[30m — \033[37m 设置前景色
\033[40m — \033[47m 设置背景色
\033[nA 光标上移n行
\033[nB 光标下移n行
\033[nC 光标右移n行
\033[nD 光标左移n行
\033[y;xH设置光标位置
\033[2J 清屏
\033[K 清除从光标到行尾的内容
\033[s 保存光标位置
\033[u 恢复光标位置
\033[?25l 隐藏光标
\033[?25h 显示光标

引用2

转载地址:http://blog.csdn.net/panpan639944806/article/details/19940127
echo -n 不换行输出 $echo -n “123” $echo “456”
最终输出
123456
而不是
123
456
echo -e
处理特殊字符若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
\a 发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\v 与\f相同;
\ 插入\字符;

引用3

转自:https://zhidao.baidu.com/question/111701847.html
linux中有trap命令可以拦截到ctrl+c信号并忽略它:
使用命令kill -l可以列出系统的信号名称
通常我们需要忽略的信号有四个,即:HUP, INT, QUIT, TSTP,也就是信号1, 2, 3, 24; QUIT即信号3就是表示操作CTRL+C;

trap的使用格式为: trap 操作 信号名称 例如: trap “echo iuioooo” 3
表示捕获到信号3(ctrl+c)时并不会退出而是会 执行命令echo iuioooo;
同样可以trap “” 3 表示什么也不操作。
使用 trap 3 来使其恢复默认设置。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值