Linux常用命令-awk
awk命令形式
1 | awk [-F|-f|-v] ‘BEGIN{} //{command1; command2} END{}’ file |
参数名 | 描述 | ||
---|---|---|---|
[-F\ | -f\ | -v] | 大参数,-F指定分隔符,-f调用脚本,-v定义变量 var=value |
‘ ‘ | 引用代码块 | ||
BEGIN | 初始化代码块,在对每一行进行处理之前,初始化代码,主要是引用全局变量,设置FS分隔符 | ||
// | 匹配代码块,可以是字符串或正则表达式 | ||
{} | 命令代码块,包含一条或多条命令 | ||
; | 多条命令使用分号分隔 | ||
END | 结尾代码块,在对每一行进行处理之后再执行的代码块,主要是进行最终计算或输出结尾摘要信息 |
常用 awk 内置变量
变量名 | 描述 |
---|---|
$0 | 当前记录 |
$1-$n | 当前记录的第n个字段 |
FS | 输入字段分隔符,默认是空格 |
RS | 输入记录分隔符,默认是换行符 |
NF | 当前记录中的字段个数 |
NR | 已经读出的记录数 |
OFS | 输出字段分隔符,默认是空格 |
ORS | 输出的记录分隔符,默认是换行符 |
BEGIN设置
1 | awk 'BEGIN{FS=":"}{print $1","$2","$3}' hello.txt |
正则应用
规则表达式
awk '/REG/{action} ' file
,/REG/为正则表达式,可以将$0 中,满足条件的记录送入到:action 进行处理
1 | awk '/root/{print $0}' passwd |
布尔表达式
awk '布尔表达式{action}' file
仅当对前面的布尔表达式求值为真时, awk 才执行代码块。
1 | awk -F: '$1=="root"{print $0}' passwd |
WSSH
WSSH
wssh 是一个 SSH 到 WebSockets 的桥,可以让你通过 HTTP 调用远程服务器的 SHELL 命令。
wssh 可以让我们通过 HTTP 来调用远程的一个 shell,也就是说我们可以用浏览器来访问某个 Linux 服务器/虚拟机的终端(只要这个服务器上运行了 wsshd 服务器端)。
安装
操作系统:CentOS 7
python:2.7
1 | yum install gcc python-devel openssl-devel |
下载jquery-1.12.3.js和term.js到本地
修改/wssh-0.1.0/wssh/templates/index.html
修改前:1
2
3
4<script type="application/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js">
</script>
<script type="application/javascript" src="https://raw.github.com/chjj/tty.js/36717df8e96f35f4e2bd3fd585e9361f1439fc7e/static/term.js">
</script>
修改后:1
2
3
4<script type="application/javascript" src="{{url_for('static', filename='jquery-1.12.3.js')}}">
</script>
<script type="application/javascript" src="{{url_for('static', filename='term.js')}}">
</script>
python setup.py install
启动wsshd
wsshd
FAQ
报错:
/usr/lib/python2.7/site-packages/wssh-0.1.0-py2.7.egg/EGG-INFO/scripts
修改前:1
from geventwebsocket import WebSocketHandler
修改为:1
from geventwebsocket.handler import WebSocketHandler
FLV格式解析
FLV文件由FLV Header和FLV Body组成
1 FLV Header
字段 | 类型 | 备注 |
---|---|---|
标签 | UI8,1字节 | F,0x46 |
标签 | UI8,1字节 | L,0x4C |
标签 | UI8,1字节 | V,0x56 |
版本号 | UI8,1字节 | 文件版本(目前版本是1) |
预留标记 | UB[5],5bit | 必须是0 |
音频标记 | UB[1],1bit | 是否存在音频 |
预留标记 | UB[1],1bit | 必须是0 |
视频标记 | UB[1],1bit | 是否存在视频 |
数据偏移 | UI32,4字节 | 从文件开始到文件body的偏移(文件头的大小) |
2 FLV Body
字段 | 类型 | 备注 |
---|---|---|
PreviousTagSize0 | UI32,4字节 | 0 |
Tag1 | FLVTAG | 第1个tag |
PreviousTagSize1 | UI32,4字节 | 第1个tag大小(tag header+tag body) |
Tag2 | FLVTAG | 第2个tag |
… | ||
PreviousTagSizeN-1 | UI32,4字节 | 第N-1个tag大小 |
TagN | FLVTAG | 第N个tag |
PreviousTagSizeN | UI32,4字节 | 第N个tag大小 |
3 FLV Tags
字段 | 类型 | 备注 |
---|---|---|
tag类型 | UI8 | 8:音频 9:视频 18:脚本数据 其他为保留 |
数据大小 | UI24 | 数据区大小 |
时间戳 | UI24 | 毫秒为单位,第一个tag为0 |
扩展时间戳 | UI8 | 放在高8位,前面的时间戳在低24位 |
StreamID | UI24 | 一直是0 |
数据 | tag 类型 == 8,AUDIODATA TAG TYPE ==9,VIDEODATA TAG TYPE ==18 SCRIPTDATAOBJECT | tag body |
OpenVPN
1 | docker run --cap-add NET_ADMIN -p 2294:2294 -d centos:7 /bin/bash -lc "tail -f /dev/null" |
1 | # line 32: change if need (listening port of OpenVPN) |
1 | docker pull python:3.8.2 |
1 | cp /etc/openvpn/server/ca.crt ./ |
1 | remote 192.168.0.1 1194 |
OPNsense
1 软路由
软路由是指利用台式机或服务器配合软件形成路由解决方案,主要靠软件的设置,达成路由器的功能;而硬路由则是以特用的硬设备,包括处理器、电源供应、嵌入式软件,提供设定的路由器功能。
2 OPNsense
OPNsense 是一个开源易用,而且易于构建的基于 FreeBSD 的防火墙和路由平台。包括大多数商业防火墙的特性。提供功能完整却易用的 GUI 管理界面。
3 安装步骤
3.1 新建虚拟机
- 操作系统
选择"其他"-"FreeBSD"
- 网络连接
选择“使用桥接网络”
- 自定义硬件
选择"添加"-“网络适配器”-"桥接模式"
- 其他保持默认
- CD/DVD中装入ISO文件
3.2 启动虚拟机
默认安装后,重新启动
3.3 配置OPNsense
账号:root
密码:opnsense
Solr整合mmseg4j搭建全文搜索引擎
下载
solr:http://lucene.apache.org/solr/
mmseg4j:https://code.google.com/p/mmseg4j/
oracle
tomcat-7.0.39:http://tomcat.apache.org/
简介
Solr
Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。
Solr是一个高性能,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。
mmseg4j
mmseg4j用Chih-Hao Tsai 的MMSeg算法实现的中文分词器,并实现lucene的analyzer和solr的TokenizerFactory以方便在Lucene和Solr中使用。 MMSeg 算法有两种分词方法:Simple和Complex,都是基于正向最大匹配。Complex加了四个规则过虑。官方说:词语的正确识别率达到了 98.41%。mmseg4j已经实现了这两种分词算法。
zookeeper
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。
配置
将solr-4.5.0.zip解压开后,复制/example/webapps/solr.war复制到tomcat/webapp目录下
配置solr/home
/conf/Catalina/localhost/solr.xml1
2
3<Context docBase="../solr/solr.war" debug="0" crossContext="true">
<Environment name="solr/home" type="java.lang.String" value="../solr" override="true"/>
</Context>配置数据库信息
/solr/collection1/conf/solrconfig.xml1
2
3
4
5
6<lib dir="../../../../dist/" regex="solr-dataimporthandler-.*\.jar" />
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">db-data-config.xml</str>
</lst>
</requestHandler>
增加业务数据库相应信息
/solr/collection1/conf/db-data-config.xml
配置分词信息
/solr/collection1/conf/schema.xml1
2
3
4
5
6
7
8
9
10<field name="SUMMARY" type="text_cn" indexed="true" stored="true"/>
<!-- Chinese -->
<fieldType name="text_cn" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="dic"/>
</analyzer>
<analyzer type="query">
<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="dic"/>
</analyzer>
</fieldType>配置solr cloud信息
/tomcat/solr/solr.xml1
2
3
4
5
6
7<solrcloud>
<str name="host">127.0.0.1</str>
<int name="hostPort">5080</int>
<str name="hostContext">${hostContext:solr}</str>
<int name="zkClientTimeout">${zkClientTimeout:15000}</int>
<bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
</solrcloud>
到/tomcat/bin目录下。编辑catalina.bat文件。在文件最开始增加:1
set JAVA_OPTS=-Dbootstrap_confdir=../solr/collection1/conf -Dcollection.configName=clusterconf -DzkRun=127.0.0.1:9001 -DzkHost=127.0.0.1:9001,127.0.0.1:9002,127.0.0.1:9003 -DnumShards=1
1 | set JAVA_OPTS=-Dbootstrap_confdir=../solr/collection1/conf -Dcollection.configName=clusterconf -DzkRun=127.0.0.1:9002 -DzkHost=127.0.0.1:9001,127.0.0.1:9002,127.0.0.1:9003 -DnumShards=1 |
1 | set JAVA_OPTS=-Dbootstrap_confdir=../solr/collection1/conf -Dcollection.configName=clusterconf -DzkRun=127.0.0.1:9003 -DzkHost=127.0.0.1:9001,127.0.0.1:9002,127.0.0.1:9003 -DnumShards=1 |
- 配置zookeeper信息
/tomcat/solr/zoo.cfg
修改zoo.cfg文件,增加如下内容:1
2
3
4
5
6# the port at which the clients will connect
clientPort=9001
# NOTE: Solr sets this based on zkRun / zkHost params
server.1=127.0.0.1:2888:2889
server.2=127.0.0.1:3888:3889
server.3=127.0.0.1:4888:4889
tomcat 5080设为9001
tomcat 6080设为9002
tomcat 7080设为9003
- 新建myid
/tomcat/solr/oo_data目录下,新建文件myid
tomcat 5080设内容为1
tomcat 6080设内容为2
tomcat 7080设内容为3
Elasticsearch-介绍
Elasticsearch是一个基于Lucene构建的开源、分布式、RESTful的搜索引擎。
索引词
文本
分析
集群
节点
路由
分片
主分片
副本分片
复制
索引
类型
文档