centos防火墙的启用与停止

CentOS7这个版本的防火墙默认使用的是firewall,与之前的版本使用iptables不一样。
1、关闭防火墙:
sudo systemctl stop firewalld.service
2、关闭开机启动:
sudo systemctl disable firewalld.service
CentOS6
1 关闭防火墙—–
service iptables stop
2 启动防火墙—–
service iptables start
3 重启防火墙—–
service iptables restart
4 查看防火墙状态–
service iptables status
5 永久关闭防火墙–
chkconfig iptables off
6 永久关闭后启用–
chkconfig iptables on

CentOS7 防火墙(firewall)的操作命令

安装:yum install firewalld

 

1、firewalld的基本使用

启动: systemctl start firewalld
查看状态: systemctl status firewalld
禁用,禁止开机启动: systemctl disable firewalld
停止运行: systemctl stop firewalld

 

2.配置firewalld-cmd

查看版本: firewall-cmd –version
查看帮助: firewall-cmd –help
显示状态: firewall-cmd –state
查看所有打开的端口: firewall-cmd –zone=public?–list-ports
更新防火墙规则: firewall-cmd –reload
更新防火墙规则,重启服务: firewall-cmd –completely-reload
查看已激活的Zone信息: ?firewall-cmd –get-active-zones
查看指定接口所属区域: firewall-cmd –get-zone-of-interface=eth0
拒绝所有包:firewall-cmd –panic-on
取消拒绝状态: firewall-cmd –panic-off
查看是否拒绝: firewall-cmd –query-panic

3.信任级别,通过Zone的值指定

drop: 丢弃所有进入的包,而不给出任何响应
block: 拒绝所有外部发起的连接,允许内部发起的连接
public: 允许指定的进入连接
external: 同上,对伪装的进入连接,一般用于路由转发
dmz: 允许受限制的进入连接
work: 允许受信任的计算机被限制的进入连接,类似 workgroup
home: 同上,类似 homegroup
internal: 同上,范围针对所有互联网用户
trusted: 信任所有连接

4.firewall开启和关闭端口

以下都是指在public的zone下的操作,不同的Zone只要改变Zone后面的值就可以
添加:
firewall-cmd?–zone=public?–add-port=80/tcp?–permanent ? ?(–permanent永久生效,没有此参数重启后失效)
重新载入:
firewall-cmd?–reload
查看:
firewall-cmd?–zone=public?–query-port=80/tcp
删除:
firewall-cmd?–zone=public?–remove-port=80/tcp?–permanent

5.管理服务

以smtp服务为例,?添加到work zone
添加:
firewall-cmd?–zone=work –add-service=smtp
查看:
firewall-cmd?–zone=work?–query-service=smtp
删除:
firewall-cmd?–zone=work?–remove-service=smtp

5.配置 IP?地址伪装

查看:
firewall-cmd?–zone=external?–query-masquerade
打开:
firewall-cmd?–zone=external –add-masquerade
关闭:
firewall-cmd?–zone=external –remove-masquerade

6.端口转发

打开端口转发,首先需要打开IP地址伪装
  firewall-cmd?–zone=external –add-masquerade
转发 tcp 22?端口至 3753:
firewall-cmd?–zone=external –add-forward-port=22:porto=tcp:toport=3753
转发端口数据至另一个IP的相同端口:
firewall-cmd?–zone=external –add-forward-port=22:porto=tcp:toaddr=192.168.1.112
转发端口数据至另一个IP的 3753 端口:
firewall-cmd?–zone=external –add-forward-port=22:porto=tcp::toport=3753:toaddr=192.168.1.112

6.systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。

启动一个服务:systemctl start firewalld.service
关闭一个服务:systemctl stop firewalld.service
重启一个服务:systemctl restart firewalld.service
显示一个服务的状态:systemctl status firewalld.service
在开机时启用一个服务:systemctl enable firewalld.service
在开机时禁用一个服务:systemctl disable firewalld.service
查看服务是否开机启动:systemctl is-enabled firewalld.service
查看已启动的服务列表:systemctl list-unit-files|grep enabled
查看启动失败的服务列表:systemctl –failed

发表在 待分类 | centos防火墙的启用与停止已关闭评论

linux 的实用命令

lsof -t -i:9000

列出所有使用了端口号为9000的进程号

chmod +x /etc/rc.d/rc.local

增加执行权限

网络重启,网卡在重新配置后需要重启才能生效。

service network stop??? #关闭网络服务
service network start?? #启动网络服务
service network restart #重启网络服务

发表在 待分类 | linux 的实用命令已关闭评论

freeswitch安装与应用

购买了阿里云服务器想用来做个跳转到企业内线的sip服务器,可是在阿里云上无论怎么安装都是同一个问题,能打通但是没有声音。网上也找不到解决的方法。用其它服务器都是没问题的,用腾讯云也能用。后来测试阿里云的debian8系统,安装因为网络的原因会进行不下去,编译安装的话安装成功了,但根本没有运行起来。气愤!

自己搭建了虚拟机,安装完成后,默认带了一些号码直接就可以用,为了和企业的企业网关对接,需要一条路由。

编辑 /etc/freeswitch/dialplan/default.xml

增加一条路由

<extension name=”DID”>
<condition field=”destination_number” expression=”^(.*)$”>
<action application=”bridge” data=”sofia/external/$1@your IP”/>
</condition>
</extension>

这条正则表达式^(.*)$表示任意号码,其实我想写任意8开头的号码,但是不会,测试不成功。

<extension name=”DID”>
<condition field=”destination_number” expression=”^8[0-6][0-9][0-9]$”>
<action application=”bridge” data=”sofia/external/${destination_number}@IP”/>
</condition>
</extension>
注:这是后来测试成功的,8开头的4位号码的拨号方案

^8(.*)$的话,表示开头是8的号码,但是会把8去掉后再传出给sip。这样就是需要在要拨打的号码前加一个8了。也不方便。

$1表示正则表达式匹配括号内的内容。$0在一些表达式中也是会遇到的。

在语音网关中需要做的路由为

FXO 1x ROUTE IP freeswitch ip:5080
IP CPN1001 ROUTE FXO 1
IP CPN1002 ROUTE FXO 2

在中继线功能中设置线路绑定的号码,这样内外就能直拨电话了。

特殊功能号码:

9664 保持音乐
9191 注册ClueCon
9195 echo,回音测试,延迟5秒
9196 echo,回音测试,无延迟
9197 milliwatte extension,铃音生成
9198 TGML铃音生成示例
9180 铃音测试,使用远端生成的回铃音
9181 铃音测试,产生英式铃音
9182 铃音测试,使用音乐当铃音,彩铃
9183 先应答,然后发送英式铃音
9184 先应答,然后发送音乐铃音
9178 收传真
9179 发传真
5000 IVR演示
4000 语音信箱演示
33xx 电话会议,48kHz
32xx 电话会议,32kHz
31xx 电话会议,16kHz
30xx 电话会议,8kHz
2000~2002 呼叫组
1000~1019 默认分机号

发表在 待分类 | freeswitch安装与应用已关闭评论

如何执行文本里的函数

在一些情况下,给定了计算公式,但是这是一个字符串,怎么应用这个计算呢?

在PHP里,有eval函数:

$a=3;
$b=12;
$str=’2*($a+$b)’;
$result=eval(“return $str;”);
echo $result;

在lua里,有loadstring函数:

jisuan1=”function jisuan1(x) return x+5 end”
if jisuan1~=nil then
loadstring(jisuan1)()
–assert(loadstring(jisuan1))() –检查返回是否为空,最后的括号表示执行。
print(jisuan1(6))
end

这样就可以适合与在数据库中存储了计算公式,到需要得到结果的时候调用计算,得到最终结果。

 

lua代码应用,jisuan数组保存了计算公式,i可以用于计算公式的偏移量。根据i的值就可以计算不同的公式。并且,jisuan公式里只写x的直接关系即可。

a=2
jisuan={“x+5″,nil,”x*3”}
i=1
if jisuan[i] ~= nil then
loadstring(“function jisuan(x) return “..jisuan[i]..” end”)()
–assert(loadstring(jisuan))()
print(jisuan(a))
else
print(a)
end

发表在 待分类 | 如何执行文本里的函数已关闭评论

最简单的安装重装系统方式

这个方法的前提是你的系统还可以正常进入。遇到反应慢,中毒等问题时恢复或重装系统。

GHOST硬盘安装

首先将需要系统ghost镜像存放到本地磁盘的非系统盘,比如D/E/F盘。运行软件,选择恢复系统,确定就可以了。最简单方便。

但是也可能会在重装系统后缺少某些驱动等事情。所以,除了在重装系统前备份你的重要文件外,备份一下驱动也是有必要的。当然在有网络的情况下,可以只备份一个网卡的驱动,系统重装好了再使用驱动精灵之类的软件联网更新驱动也是不错的。

发表在 待分类 | 最简单的安装重装系统方式已关闭评论

OpenCV的学习

1、opencv版本选择1.0。编译环境为vc6.0绿色版。
2、下载OpenCV安装程序(1.0版本)。假如要将opencv安装到C:\Program Files\OpenCV。在安装时选择”将?? \OpenCV\bin加入系统变量”。或安装完成后手动添加环境变量“C:\Program Files\OpenCV\bin”。安装完成后重启才能使得环境变量生效。
3、VC6.0配置

启动VC++6.0,菜单Tools->Options->Directories:先设置lib路径,选择Library files,在下方填入路径:????????? C:\Program Files\OpenCV\lib

然后选择include files,在下方填入路径:

C:\Program Files\OpenCV\cxcore\include
C:\Program Files\OpenCV\cv\include
C:\Program Files\OpenCV\cvaux\include
C:\Program Files\OpenCV\ml\include
C:\Program Files\OpenCV\otherlibs\highgui
C:\Program Files\OpenCV\otherlibs\cvcam\include

4.每创建一个将要使用OpenCV的VC Project,都需要给它指定需要的lib。菜单:Project->Settings,然后将Setting for选为All Configurations,然后选择右边的link标签,在Object/library modules附加上:

cxcore.lib cv.lib ml.lib cvaux.lib highgui.lib cvcam.lib

如果不需要这么多lib,你可以只添加你需要的lib。

?5.例子
// PictureSelectToSave.cpp : Defines the entry point for the console application.
//

//#include "stdafx.h"
//#include <iostream.h>
#include <cv.h>
#include <highgui.h>
#include <math.h>
#include <stdio.h>
#include <cxcore.h>

IplImage* img=0;
CvRect selection;
CvPoint origin;
int select_object = 0;
int track_object = 0;

//////鼠标事件函数
void on_mouse( int event, int x, int y, int flags, void* param )
{
if( !img )
return;
if( img->origin )
y = img->height - y;
if( select_object )
{
selection.x = MIN(x,origin.x);
selection.y = MIN(y,origin.y);


selection.width = selection.x + CV_IABS(x - origin.x);
selection.height = selection.y + CV_IABS(y - origin.y);

selection.x = MAX( selection.x, 0 );
selection.y = MAX( selection.y, 0 );
selection.width = MIN( selection.width, img->width );
selection.height = MIN( selection.height, img->height );
selection.width -= selection.x;
selection.height -= selection.y;
}
switch( event )
{
case CV_EVENT_LBUTTONDOWN:
origin = cvPoint(x,y);
selection = cvRect(x,y,0,0);
select_object = 1;
break;
case CV_EVENT_LBUTTONUP:
select_object = 0;
if( selection.width > 0 && selection.height > 0 )
track_object = -1;
break;
}
if( track_object <0 )
{
CvPoint point1 = { selection.x,selection.y};
CvPoint point2 = { selection.x+selection.width+1, selection.y+selection.height+1 };
//////画面上画框并显示
if(selection.width>0 && selection.height>0)
cvRectangle(img,point1,point2,CV_RGB(0,255,0),1,8,0);
cvShowImage( "PictureShow", img);
/////获得框中图片区域

///方法一:可获得与原图像大小一样的图片///
/*
IplImage* img2 = cvCreateImage(cvGetSize(img), 8, 1 );
cvSet(img2,CV_RGB(0,0,0),NULL);//背景设为白色
cvRectangle(img2,point1,point2, CV_RGB(255,255,255),-1,8,0);//框区域设为黑色
cvAnd(img,img2,img2);//逻辑与运算
cvShowImage("output", img2);
cvSaveImage(".\\output\\SelectedAera.jpg",img2);
*/

///方法二:仅仅将获取图片保存为实际区域的大小///
IplImage* img2 = cvCreateImage(cvSize(selection.width+1,selection.height+1), 8,1 );
CvRect rect = cvRect(selection.x, selection.y, selection.width+1,selection.height+1);
cvSetImageROI(img, rect);
cvCopy(img,img2);//复制对象区域
cvShowImage("output", img2);
cvResetImageROI(img);
cvSaveImage(".\\a2.bmp",img2);

}
}

int main()
{
img=cvLoadImage("C:\\a1.bmp",0 );
//cvCanny(img,img, 120, 120, 3);
cvNamedWindow( "PictureShow", CV_WINDOW_AUTOSIZE );
cvNamedWindow( "output",1 );
//////鼠标事件回调函数
cvSetMouseCallback( "PictureShow",on_mouse,0);
cvShowImage( "PictureShow", img);
cvWaitKey(0);

cvDestroyWindow( "PictureShow" );//销毁窗口
cvDestroyWindow( "output" );
cvReleaseImage( &img ); //释放图像
// cvReleaseImage( &img2 );
return 0;
}

 

发表在 待分类 | OpenCV的学习已关闭评论

某公司三层交换机配置

3层交换机配置

可作为参考

发表在 待分类 | 某公司三层交换机配置已关闭评论

arduino pid风扇调速


#define spd 2 //外部中断0,速度信号,引脚2
int count = 0; //脉冲计数值
int rpm = 0;

int error,integral,out;
unsigned long timenew = 0, old_time = 0; // 时间标记
unsigned long time = 0; // 时间标记
void setup() {
Serial.begin(9600); // 启动串口通信,波特率为9600b/s
pinMode(spd,INPUT);//cesuxinhao
pinMode( 9 , OUTPUT);
setPwmFrequency(9, 1);
attachInterrupt(0, Code1, FALLING);//脉冲中断函数
}

void loop() {
timenew = millis();//以毫秒为单位,计算当前时间
//计算出每一秒钟编码器码盘计得的脉冲数
if(abs(timenew - old_time) >= 1000) // 如果计时时间已达1秒
{
detachInterrupt(0); // 关闭外部中断0
//把每一秒钟编码器码盘计得的脉冲数,换算为当前转速值
//转速单位是每分钟多少转,即r/min。
rpm =(float)count;
//设定值为50
error = 50-rpm;//误差
integral += error;//积分
//P=0.5 I=0.05 PI算法
out = out + 0.5 * error + 0.05 * integral;//输出值
if (out>255)out=255;
if (out<0)out=0;
Serial.print(out);
Serial.print(",");
analogWrite(9 , out);
Serial.println(rpm);
//恢复测速的初始状态
count = 0; //把脉冲计数值清零,以便计算下一秒的脉冲计数
old_time= millis(); // 记录每秒测速时的时间节点
attachInterrupt(0, Code1,FALLING); // 重新开放外部中断0
}
}
// 左侧车轮电机的编码器码盘计数中断子程序
void Code1()
{
//为了不计入噪音干扰脉冲,
//当2次中断之间的时间大于5ms时,计一次有效计数
if((millis()-time)>5)
//当编码器码盘的OUTA脉冲信号下跳沿每中断一次,
count += 1; // 编码器码盘计数加一
time==millis();
}

// Note that the base frequency for pins 3, 9, 10, and 11 is 31250 Hz
// Note that the base frequency for pins 5 and 6 is 62500 Hz
// Set pin 9's PWM frequency to 3906 Hz (31250/8 = 3906)
// Set pin 6's PWM frequency to 62500 Hz (62500/1 = 62500)
void setPwmFrequency(int pin, int divisor) {
byte mode;
if(pin == 5 || pin == 6 || pin == 9 || pin == 10) {
switch(divisor) {
case 1: mode = 0x01; break;
case 8: mode = 0x02; break;
case 64: mode = 0x03; break;
case 256: mode = 0x04; break;
case 1024: mode = 0x05; break;
default: return;
}
if(pin == 5 || pin == 6) {
TCCR0B = TCCR0B & 0b11111000 | mode;
} else {
TCCR1B = TCCR1B & 0b11111000 | mode;
}
} else if(pin == 3 || pin == 11) {
switch(divisor) {
case 1: mode = 0x01; break;
case 8: mode = 0x02; break;
case 32: mode = 0x03; break;
case 64: mode = 0x04; break;
case 128: mode = 0x05; break;
case 256: mode = 0x06; break;
case 1024: mode = 0x7; break;
default: return;
}
TCCR2B = TCCR2B & 0b11111000 | mode;
}
}

发表在 待分类 | arduino pid风扇调速已关闭评论

SVG编辑器

SVG图片格式是一种矢量的,符合xml规范的格式,这种格式的图片可以像html的对象一样的操作图片的内容。

网页制作svg的工具

svg

发表在 待分类 | SVG编辑器已关闭评论

geojson地图格式

这个地图格式可以用于echars里的地图扩展,这是一个json标准的,描述地图的标准。这个网页版工具可以制作这个格式的文件。

geojson

发表在 待分类 | geojson地图格式已关闭评论