工具
在云边听雨
这个作者很懒,什么都没留下…
展开
-
《Linux Shell 脚本攻略》学习记录之四
根据扩展名切分文件名URL="www.google.com"echo ${URL%.*} #移除.*所匹配的最右边的内容www.googleecho ${URL%%.*} #将从右边开始一直匹配到最左边的*.移除(贪婪操作符)wwwecho ${URL#*.} #移除*.所匹配的最左边的内容google.comecho ${URL##*.} #将从左边原创 2016-02-29 11:06:22 · 387 阅读 · 0 评论 -
SourceInsight一些使用技巧
SourceInsight的实用技巧2007年4月19日若干年前曾写个一篇关于source insight宏的使用文章,放到这里后就一直没有理会。过了很久之后,偶然的一次查找,才知道已经有不少地方引用那篇文章,想来文章还是有一定用处的。前段时间刚好有空闲时间,于是又写一篇关于source insight的文章,这次侧重于实用技巧的介绍,希望对大家有帮助。我常常这转载 2015-11-26 11:55:55 · 261 阅读 · 0 评论 -
Linux下Socket相关头文件总结
一 三种类型的套接字:1.流式套接字(SOCKET_STREAM) 提供面向连接的可靠的数据传输服务。数据被看作是字节流,无长度限制。例如FTP协议就采用这种。2.数据报式套接字(SOCKET_DGRAM) 提供无连接的数据传输服务,不保证可靠性。3.原始式套接字(SOCKET_RAW) 该接口允许对较低层次协议,如IP,ICMP直接访问。二 基本转载 2015-12-12 12:37:08 · 350 阅读 · 0 评论 -
libubox - uloop runqueue ustream
事件处理循环(uloop.c/h)接口说明主框架/** * 初始化事件循环 */int uloop_init(void)/** * 事件循环主处理入口 */void uloop_run(void)/** * 销毁事件循环 */void uloop_done(void)描述符事件/** * 注册一个新描述符到事件处理循环 */int转载 2015-11-25 10:56:29 · 2892 阅读 · 0 评论 -
(十六)洞悉linux下的Netfilter&iptables:开发自己的hook函数【实战】(下)
从用户空间来操作内核中Netfilter框架里自定义的HOOK函数 本文承上一篇博客。主要是和大家探讨一下如何从用户空间操作我已经注册到Netfilter中的自定义hook函数。有些童鞋可能就纳闷,难道iptables不能操作到么?如果我们需要让iptables操作我们在Netfilter框架中做过的扩展,那么最有效最直接的办法就是开发一个match或者target。但我们现在转载 2015-11-25 09:25:54 · 263 阅读 · 0 评论 -
(十五)洞悉linux下的Netfilter&iptables:开发自己的hook函数【实战】(上)
向Netfilter中注册自己的hook函数 数据包在协议栈中传递时会经过不同的HOOK点,而每个HOOK点上又被Netfilter预先注册了一系列hook回调函数,当每个清纯的数据包到达这些点后会被这些可恶hook函数轮番调戏一番。有时候我们就在想,只让系统自带的这些恶棍来快活,我自己能不能也make一个hook出来和它们同流合污呢?答案是肯定的。 我们来回顾一转载 2015-11-25 09:14:33 · 283 阅读 · 0 评论 -
(十二)洞悉linux下的Netfilter&iptables:iptables命令行工具源码解析【下】
iptables用户空间和内核空间的交互iptables目前已经支持IPv4和IPv6两个版本了,因此它在实现上也需要同时兼容这两个版本。iptables-1.4.0在这方面做了很好的设计,主要是由libiptc库来实现。libiptc是iptables control library的简称,是Netfilter的一个编程接口,通常被用来显示、操作(查询、修改、添加和删除)netfilter的转载 2015-11-24 12:43:13 · 288 阅读 · 0 评论 -
Linux网络编程必看书籍推荐
首先要说讲述TCP/IP的书很多,其中有3泰书很全。分别是《TCP/IP详解》三卷本,《用TCP/IP进行网际互连》三卷本,《TCP/IP指南》+《IPv6》四卷本其中TCP/IP详解的作者还写了另外2本经典著作,《Unix环境高级编程》,《Unix网络编程》作者W.Richard Stevens个人网站 http://www.kohala.com/大师作品部部经转载 2015-12-14 12:17:00 · 477 阅读 · 0 评论 -
do{...}while(0)的意义和用法
linux内核和其他一些开源的代码中,经常会遇到这样的代码:do{ ...}while(0)这样的代码一看就不是一个循环,do..while表面上在这里一点意义都没有,那么为什么要这么用呢?实际上,do{...}while(0)的作用远大于美化你的代码。查了些资料,总结起来这样写主要有以下几点好处:1、辅助定义复杂的宏,避免引转载 2015-12-16 15:48:21 · 226 阅读 · 0 评论 -
Openwrt QOS
OpenWRT QoSBlog LogoAndrew Hobden on 06 Dec 2014 , in OpenWRT , CSC467 .Using the setup from my last two posts, let's play with some QoS parameters and observe the results.原创 2015-12-31 15:01:38 · 1981 阅读 · 1 评论 -
IP限速
#!/bin/shrmmod ifbinsmod ifb numifbs=4insmod sch_fq_codelinsmod sch_hfscinsmod sch_ingressinsmod cls_u32insmod em_u32insmod act_connmarkinsmod act_mirredinsmod cls_fw############转载 2016-03-07 10:26:39 · 868 阅读 · 2 评论 -
wan0口限速
#!/bin/sh###使用 ./car-test-wan0.sh 10 1024 10 1024 ###$1为上行保证带宽,$2为上行最大带宽 单位kib 1024kbit = 1024bps = 1Mb###S3为下行保证带宽,$4为下行最大带宽 ##############################关闭QOS############################/e转载 2016-03-07 10:18:57 · 901 阅读 · 0 评论 -
《Linux Shell 脚本攻略》学习记录之三
CATcat本身表示concatenate(拼接)cat file1 file2 file3 ...将标准输入与另外一个文件数据结合在一起echo 'Text through stdin' | cat - file.txt摆脱多余的空白行cat -s file.txt将制表符显示为^| cat -t file.txt显示行号,如果要跳过空白行使用原创 2016-02-02 11:26:21 · 410 阅读 · 0 评论 -
《Linux Shell 脚本攻略》学习记录之二
时间查看日期date "+%d %B %Y"设置日期和时间date -s "格式化的日期字符串"获取脚本执行时间#!/bin/bash#文件名: time_take.shstart=${date +%s}commands;statements;end=$(date +%s)difference=$(( end - start ))ec原创 2016-01-21 18:24:14 · 419 阅读 · 0 评论 -
《Linux Shell 脚本攻略》学习记录之一
#打印printf "%s " abcd cat 1.txt | tr 'a' 'A'tr替换字符获取字符串的长度var=123456789echo ${#var}-------------------------------------------------------超级用户UID=0$UID 环境变量超级用户root的UID是0-----原创 2015-12-17 19:06:11 · 341 阅读 · 0 评论 -
网桥防火墙中Ebtables可以做的事
以太网协议过滤。MAC地址过滤。简单的IP报头过滤。ARP头过滤。802.1 q VLAN过滤。在/接口过滤(逻辑和物理设备)。MAC地址nat。日志记录。帧计数器。可以添加、删除和插入规则;冲洗链;零计数器。路由器设备。能够自动加载一个完整的表包含的规则,到内核。查看手册页和示例一节。支持用户定义的链。支持和匹配标记帧标记帧。原创 2015-12-17 15:47:44 · 887 阅读 · 0 评论 -
Ebtables使用手册
SYNOPSISebtables [-t table ] -[ACDI] chain rule specification [match extensions] [watcher extensions] targetebtables [-t table ] -P chain ACCEPT | DROP | RETURNebtables [-t table ] -F [c转载 2015-12-17 15:21:56 · 1659 阅读 · 0 评论 -
(五)洞悉linux下的Netfilter&iptables:如何理解连接跟踪机制?【上】
如何理解Netfilter中的连接跟踪机制? 本篇我打算以一个问句开头,因为在知识探索的道路上只有多问然后充分调动起思考的机器才能让自己走得更远。连接跟踪定义很简单:用来记录和跟踪连接的状态。问:为什么又需要连接跟踪功能呢?答:因为它是状态防火墙和NAT的实现基础。OK,算是明白了。Neftiler为了实现基于数据连接状态侦测的状态防火墙功能和NAT地址转换功能才开发出了连接转载 2015-11-24 12:33:13 · 548 阅读 · 0 评论 -
(六)洞悉linux下的Netfilter&iptables:如何理解连接跟踪机制?【中】
Netfilter连接跟踪的详细流程 上一篇我们了解了连接跟踪的基本框架和大概流程,本篇我们着重分析一下,数据包在连接跟踪系统里的旅程,以达到对连接跟踪运行原理深入理解的目的。 连接跟踪机制在Netfilter框架里所注册的hook函数一共就五个:ip_conntrack_defrag()、ip_conntrack_in()、ip_conntrack_local()、ip_co转载 2015-11-24 12:34:08 · 357 阅读 · 0 评论 -
(十四)洞悉linux下的Netfilter&iptables:开发一个match模块【实战】
自己开发一个match模块 今天我们来写一个很简单的match来和大家分享如何为iptables开发扩展功能模块。这个模块是根据IP报文中有效载荷字段的长度来对其进行匹配,支持固定包大小,也支持一个区间范围的的数据包,在用户空间的用法是: iptables -A FORWARD -m pktsize --size XX[:YY] -j DROP转载 2015-11-24 12:50:59 · 302 阅读 · 0 评论 -
GDB拾忆之三
GDB高级应用1>产生core文件有的系统不生成core文件,可以执行如下命令允许生成core文件:ulimit -c unlimited如果要带着一个核心文件启动gdb,可以通过shell使用命令gdb 程序 core或者gdb 程序 -c core,使gdb载入核心文件.这时可以使用info locals,print,info args和list等命令查看由于除0导致的值。原创 2015-08-05 13:36:39 · 363 阅读 · 0 评论 -
GDB拾忆之二
1>查看运行时数据利用print命令可以检查各个变量的值。print/p 在gdb中,可以随时查看全局变量(所有文件可见的),静态全局变量(当前文件可见的),和局部变量(当前Scope可见的)这3种变量的值。如果局部变量和全局变量发生冲突,一般情况下是局部变量会隐藏全局变量。如果一个全局变量和一个函数中的局部变量同名时,且当前停止点在函数中,用print显示出的变量的值会是原创 2015-08-05 10:24:34 · 380 阅读 · 0 评论 -
通过圆上点计算圆心与半径
因为工作中,用到了所以找了下,挺不错,分享一下。就是解三元二次方程组! X,Y,R为未知数,x1,y1,x2,y2,x3,y3为常数 (x1-X)²-(y1-Y)²=R² (1)式(x2-X)²-(y2-Y)²=R² (2)式(x3-X)²-(y3-Y)²=R² (3)式(1)-(2),就是左边减左边,右边减右边,得到x1²-2原创 2015-08-04 16:33:30 · 1609 阅读 · 0 评论 -
如何分析Linux日志
日志中有大量的信息需要你处理,尽管有时候想要提取并非想象中的容易。在这篇文章中我们会介绍一些你现在就能做的基本日志分析例子(只需要搜索即可)。我们还将涉及一些更高级的分析,但这些需要你前期努力做出适当的设置,后期就能节省很多时间。对数据进行高级分析的例子包括生成汇总计数、对有效值进行过滤,等等。我们首先会向你展示如何在命令行中使用多个不同的工具,然后展示了一个日志管理工具如何能自动完成大部转载 2015-08-04 16:40:55 · 516 阅读 · 0 评论 -
10 个迅速提升你 Git 水平的提示
1. Git自动补全假使你使用命令行工具运行Git命令,那么每次手动输入各种命令是一件很令人厌烦的事情。为了解决这个问题,你可以启用Git的自动补全功能,完成这项工作仅需要几分钟。为了得到这个脚本,在Unix系统下运行以下命令:?12cd ~curl https://raw.github.com/g转载 2015-08-27 16:00:24 · 331 阅读 · 0 评论 -
Linux源代码分析工具链
前言看源代码是一个程序员必须经历的事情,也是可以提升能力的一个捷径。个人认为: 要完全掌握一个软件的方法只有阅读源码。在Windows下有sourceinsight这个源码阅读软件(虽然我没用过,但是网上评价还不错),由于我是个Linuxer,并不喜欢用Windows,所以自然是选择在Linux下阅读源码的工具了。下面我将逐一介绍在Linux下阅读源码的工具。转载 2015-08-28 10:58:00 · 288 阅读 · 0 评论 -
GDB拾忆之一
编译 gcc -g XXXX.c -o XXXX加载gdb 目标程序列出代码 list list 行数 list 区间 list 1,6运行程序 run加参数运行 run arg1 arg2显示参数 show args设置运行参数 set args chg1 chg2设置代码断点 break/b line-number原创 2015-07-06 16:51:05 · 319 阅读 · 0 评论 -
25个Git进阶技巧
我已经使用git差不多18个月了,觉得自己对它应该已经非常了解。然后来自GitHub的Scott Chacon过来给LVS做培训(LVS是一个赌博软件供应商和开发商,从2013年开始的合同),而我在第一天里就学到了很多。作为一个对git感觉良好的人,我觉得分享从社区里掌握的一些有价值的信息,也许能帮某人解决问题而不用做太深入研究。基本技巧1. 安装后的第一步转载 2015-05-25 15:31:01 · 322 阅读 · 0 评论 -
VIM快捷键
VI +/模式字符串 文件名例如: vi +/main test.c打开到main函数位置VI +行号 文件名 打开到第几行u命令一步步撤销U命令一次性撤销,再一次U命令恢复撤销的操作。重复命令:在命令模式下按入"."键。例如,打印了一行,重复打印就可以使用.H命令:H命令将光标移至当前屏幕的第1行,而不是整个文件的第1行。若在H命令之前加上数字原创 2015-09-09 14:58:50 · 343 阅读 · 0 评论 -
git reset, git checkout, git revert 区别
团队中大多数成员使用 sourceTree 和 github 两款 git 工具,然而大家对于图形化工具提供的 reset,checkout,revert 功能点并不是很了解,甚至于混淆,然后凭借猜测去使用。功夫不负有心人,在尝试过多次冲突处理或分支开发的坑后,终于形成了自己的一套使用方式,可喜可 贺。然而问题的解决方案的并不是效率最高的,内部的执行过程我们也不清楚,这对于一个自律的程序艺术家是无转载 2015-08-20 11:43:21 · 482 阅读 · 0 评论 -
Makefile文件
指定makefile文件,make -f make.admin。使用include关键字可以包含其他makefile。include /home/admin/make.mk *.mk 当前路径下所有.mk文件。用户指定目录寻找需要包含的makefile文件。make --include-dir /home/admin/make用户可以忽略make工作产生的出错信息,原创 2015-09-18 16:37:06 · 327 阅读 · 0 评论 -
(十三)洞悉linux下的Netfilter&iptables:为防火墙增添功能模块【实战】
为netfilter/iptables增添新功能模块:ipp2p 一个防火墙功能模块包含两部分:内核空间的ko模块和用户空间的so模块。如下: 而且文件的命令都非常有讲究。例如我们有个模块名叫AAA,那么内核中该模块的文件名一般为ipt_AAA.c和ipt_AAA.h;对应的用户空间模块叫libipt_AAA.c。今天我通过简单的向防火墙添加ipp2p扩展功能模块的例子,向转载 2015-11-24 12:49:28 · 227 阅读 · 0 评论 -
(十一)洞悉linux下的Netfilter&iptables:iptables命令行工具源码解析【上】
预备知识:part1: 初见getopt_long() 在分析iptables源码时,作为命令解析的核心函数getopt_long()不得不提。随便百度或google搜索关于该函数的介绍有很多例子和解释,这里我只举一例,目的是让大家了解传递给iptables命令的每个参数是如何被正确识别并处理的。getopt_long(int argc,char * const argv[],co转载 2015-11-24 12:40:37 · 368 阅读 · 0 评论 -
(十)洞悉linux下的Netfilter&iptables:网络地址转换原理之SNAT
源地址转换:SNAT SNAT主要应用于下列场景: 这种情况下,我们只有一个公网地址A,而又有三台主机需要同时上网,这时就需要SNAT了。它的主要作用是将那些由私网发来的数据包skb的源地址改成防火墙的公网地址A,这是因为目的主机在响应源地址为私网地址的数据包时,私网地址不能在网络上路由的缘故。 SNAT仅可以在LOCAL_OUT和POSTROUTING点转载 2015-11-24 12:38:34 · 293 阅读 · 0 评论 -
(九)洞悉linux下的Netfilter&iptables:网络地址转换原理之DNAT
网络地址转换:NAT Netfitler为NAT在内核中维护了一张名为nat的表,用来处理所有和地址映射相关的操作。诸如filter、nat、mangle抑或raw这些在用户空间所认为的“表”的概念,在内核中有的是以模块的形式存在,如filter;有的是以子系统方式存在的,如nat,但它们都具有“表”的性质。因此,内核在处理它们时有很大一部操作都是相同的,例如表的初始化数据、表的注册、转载 2015-11-24 12:37:46 · 390 阅读 · 0 评论 -
(四)洞悉linux下的Netfilter&iptables:包过滤子系统iptable_filter
今天我们讨论一下防火墙的数据包过滤模块iptable_filter的设计原理及其实现方式。 内核中将filter模块被组织成了一个独立的模块,每个这样独立的模块中都有个类似的init()初始化函数。编写完该函数后,用module_init()宏调用初始化函数;同样当模块被卸载时调用module_exit()宏将该模块卸载掉,该宏主要调用模块的“析构”函数。这当中就牵扯到内核ko模块的一些转载 2015-11-17 17:04:32 · 624 阅读 · 17 评论 -
(二)洞悉linux下的Netfilter&iptables:内核中的ip_tables小觑
Netfilter框架为内核模块参与IP层数据包处理提供了很大的方便,内核的防火墙模块(ip_tables)正是通过把自己所编写的一些钩子函数注册到Netfilter所监控的五个关键点(NF_IP_PRE_ROUTING,NF_IP_LOCAL_IN,NF_IP_FORWARD,NF_IP_LOCAL_OUT,NF_IP_POST_ROUTING)这种方式介入到对数据包的处理。这些钩子函数功能转载 2015-11-17 10:15:29 · 392 阅读 · 0 评论 -
(三)洞悉linux下的Netfilter&iptables:内核中的rule,match和target
作为ipchains的后继者,iptables具有更加优越的特性,良好的可扩展功能、更高的安全性以及更加紧凑、工整、规范的代码风格。 在2.6的内核中默认维护了三张表(其实是四张,还有一个名为raw的表很少被用到,这里不对其进行分析介绍了):filter过滤表,nat地址转换表和mangle数据包修改表,每张表各司其职。我们对这三张表做一下简要说明: 1)、filt转载 2015-11-17 10:27:00 · 436 阅读 · 0 评论 -
(一)洞悉linux下的Netfilter&iptables:什么是Netfilter?
本人研究linux的防火墙系统也有一段时间了,由于近来涉及到的工作比较纷杂,久而久之怕生熟了。趁有时间,好好把这方面的东西总结一番。一来是给自己做个沉淀,二来也欢迎这方面比较牛的前辈给小弟予以指点,共同学习,共同进步。 这里说明一下:本系列博文主要侧重于分析Netfilter的实现机制,原理和设计思想层面的东西,同时从用户态的iptables到内核态的Netfilter其交互过程和通信手转载 2015-11-17 10:07:32 · 314 阅读 · 0 评论 -
关于Git的撤销命令:如何在Git中撤销一切
任何一个版本控制系统中,最有用的特性之一莫过于 “撤销(undo)”操作。在Git中,“撤销”有很多种含义。当你完成了一次新的提交(commit),Git会及时存储当前时刻仓库(repository)的快照(snapshot);你能够使用Git将项目回退到任何之前的版本。下文中,我将列举几个常见的、需要“撤销”的场景,并且展示如何使用Git来完成这些操作。一、撤销一个公共修转载 2015-06-25 11:13:45 · 820 阅读 · 0 评论