windows server 2008打开防火墙ping规则

新的服务器安装了windows server 2008 r2,发现出于安全因素考虑不允许从外部对其执行 Ping 指令的,如果要配置允许被 Ping 通过以往的设置步骤会发现并不能从 Windows firewall 里找到 ICMP 的相关配置项,而该规则的操作现在必须通过“高级安全 Windows 防火墙” 进行配置。步骤如下:

  1. 打开管理工具中的“高级安全 Windows 防火墙”;
  2. 在左侧导航窗体中定位到“入站规则”,之后在入站规则中找到配置文件类型为“公共”的“文件和打印共享(回显请求 – ICMPv4-In)”规则,设置为允许。
    adv_winfirewall

注:我们可以根据需要选择在何种网络环境中(域、专用或公共)允许该规则,如果网络使用了IPv6,则同时要允许 ICMPv6-In 的规则。

此外,我们还可以通过命令行方式来执行入站 Ping 的规则是启用还是禁用,命令行如下:

netsh firewall set icmpsetting 8
netsh firewall set icmpsetting 8 disable

netsh_icmpsetting_8

发表在 服务器 | 标签为 | 留下评论

mysql查找数据表中重复记录并更新

查找重复:select test,count(*) as count from table group by test having count>1;

更新重复:update table set test=1 where rid in(SELECT test FROM table GROUP BY test HAVING COUNT( * ) >1)//这样是不行的 会报错You can’t specify target table

只能间接创建临时表的方式,执行后,删除掉。

create table tmp as SELECT test FROM table GROUP BY test HAVING COUNT( * ) >1;
update table set test=1 where test in( SELECT test FROM tmp)
drop table tmp;

发表在 数据库 | 标签为 | 留下评论

MySql创建/删除函数和存储过程

切记创建函数或过程的时候不要用phpmyadmin,不然有可能出错!
一、查看创建函数的功能是否开启:
mysql> show variables like ‘%func%’;
+—————————————–+——-+
| Variable_name | Value |
+—————————————–+——-+
| log_bin_trust_function_creators | ON |
+—————————————–+——-+
1 row in set (0.02 sec)
二、如果Value处值为OFF,则需将其开启。
mysql> set global log_bin_trust_function_creators=1;
三、创建函数时,先选择数据库,
mysql> use xxx;
Database changed
delimiter $$是设置 $$为命令终止符号,代替分号,因为分号在begin…end中会用到;
mysql> delimiter $$
CREATE FUNCTION first_func(param1 varchar(5),parmam2 varchar(5),param3 varchar(10))
RETURNS TINYINT
BEGIN
RETURN 1;
END
$$ //函数创建成功后需恢复分号为命令终止符号。
mysql> delimiter ;
四、测试:
mysql> select first_func(‘aaa’,’bbb’,’ccc’);
+——————————-+
| first_func(‘aaa’,’bbb’,’ccc’) |
+——————————-+
| 1 |
+——————————-+
1 row in set (0.47 sec)
五、删除函数:
mysql> drop function first_func ;
Query OK, 0 rows affected (0.11 sec)
六、查看函数
1) show function status
显示数据库中所有函数的基本信息
2)查看某个具体函数
mysql>show create function function;
创建存储过程
1.进入mysql命令行
mysql>
2.用delimiter命令来把语句定界符从 ;变为//。这样就允许在程序体用;定界符传递到服务器,而不是被mysql自己来解释。
mysql> delimiter //
3.创建存储过程
mysql> delimiter //
mysql> CREATE PROCEDURE simpleproc (OUT param1 INT)
-> BEGIN
-> SELECT COUNT(*) INTO param1 FROM t;
-> END
-> //
Query OK, 0 rows affected (0.00 sec)mysql> delimiter ;
mysql> CALL simpleproc(@a);
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @a;
+——+
| @a |
+——+
| 3 |
+——+
1 row in set (0.00 sec)
删除存储过程num_from_employee的代码如下:
DROP  PROCEDURE  num_from_employee ;
删除存储函数name_from_employee的代码如下:
DROP  FUNCTION  name_from_employee ;
附带生成随机数函数:
delimiter //
drop function if exists rand_strings;
create function rand_strings(str_length tinyint unsigned , str_type tinyint unsigned)
returns varchar(255)
begin
declare counter int unsigned default 0;
declare const_chars varchar(64) default ‘0123456789’;
declare result varchar(255) default ”;

if str_type = 1 then
set const_chars = ‘0123456789’;
elseif str_type = 2 then
set const_chars = ‘abcdefghijklmnopqrstuvwxyz’;
elseif str_type = 3 then
set const_chars = ‘ABCDEFGHIJKLMNOPQRSTUVWXYZ’;
elseif str_type = 4 then
set const_chars = ‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ’;
elseif str_type = 5 then
set const_chars = ‘0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ’;
elseif str_type = 6 then
set const_chars = ‘0123456789abcdefghijklmnopqrstuvwxyz’;
elseif str_type = 7 then
set const_chars = ‘0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ’;
else
set const_chars = ‘0123456789’;
end if;

while counter < str_length do
set result = concat(result,substr(const_chars,ceil(rand()*(length(const_chars)-1)),1));
set counter = counter + 1;
end while;

return result;
end
//
DELIMITER ;

发表在 数据库 | 标签为 | 留下评论

linux系统查看用户通过ssh登录日志

linux下登录日志在下面的目录里:cd /var/log

各种日志文件类型

access-log 纪录HTTP/web的传输

acct/pacct 纪录用户命令

aculog 纪录MODEM的活动

btmp 纪录失败的纪录

lastlog 纪录最近几次成功登录的事件和最后一次不成功的登录

messages 从syslog中记录信息(有的链接到syslog文件)

sudolog 纪录使用sudo发出的命令

sulog 纪录使用su命令的使用

syslog 从syslog中记录信息(通常链接到messages文件)

utmp 纪录当前登录的每个用户

wtmp 一个用户每次登录进入和退出时间的永久纪录

xferlog 纪录FTP会话

utmp、 wtmp和lastlog日志文件是多数重用UNIX日志子系统的关键–保持用户登录进入和退出的纪录。有关当前登录用户的信息记录在文件utmp中;登录进入和退出纪录在文件wtmp中;最后一次登录文件可以用lastlog命令察看。数据交换、关机和重起也记录在wtmp文件中。所有的纪录都包含时间戳。这些文件(lastlog通常不大)在具有大量用户的系统中增长十分迅速。例如wtmp文件可以无限增长,除非定期截取。许多系统以一天或者一周为单位把wtmp配置成循环使用。它通常由cron运行的脚本来修改。这些脚本重新命名并循环使用wtmp文件。通常,wtmp在第一天结束后命名为 wtmp.1;第二天后wtmp.1变为wtmp.2等等,直到wtmp. 7。

每次有一个用户登录时,login程序在文件 lastlog中察看用户的UID。如果找到了,则把用户上次登录、退出时间和主机名写到标准输出中,然后login程序在lastlog中纪录新的登录时间。在新的lastlog纪录写入后,utmp文件打开并插入用户的utmp纪录。该纪录一直用到用户登录退出时删除。utmp文件被各种命令文件使用,包括who、w、users和finger。

下一步,login程序打开文件wtmp附加用户的utmp纪录。当用户登录退出时,具有更新时间戳的同一utmp纪录附加到文件中。wtmp文件被程序last和ac使用。

2. 具体命令

wtmp和utmp文件都是二进制文件,他们不能被诸如tail命令剪贴或合并(使用cat命令)。用户需要使用who、w、users、last和ac来使用这两个文件包含的信息。

who:who命令查询utmp文件并报告当前登录的每个用户。Who的缺省输出包括用户名、终端类型、登录日期及远程主机。

linux查看日志:

# cd /var/log

# less secure

或者

# less messages

CentOS的用户登录记录存放在/var/log下,分别是:

1.登录成功的记录(Last Logged In Users),位置:/var/log/wtmp
通过命令last可以查看记录列表
[root@vps ~]# last

2.登录失败的记录(Bad Login Attemps Log),位置:/var/log/btmp
通过命令lastb可以查看记录列表
[root@vps ~]# lastb

清空登录历史记录:
[root@vps ~]# > /var/log/wtmp

发表在 服务器 | 标签为 , , | 留下评论

google浏览器安装CRX扩展插件的方法

google因为被屏蔽后连安装扩展插件都不行了,只能自己搜索下载CRX文件自行安装,可是因为同时也安装了Opera,每次点击自动打开Opera安装,换成google打开发现也不行,最后原来是:进入浏览器的设置-扩展程序页面,再把下载好的插件拖放进去就可以安装了.

发表在 软件 | 标签为 | 留下评论

codeigniter(ci)在nginx下的url规则导致404错误

最近配置codeigniter(ci)在nginx上运行,刚刚接触url模式很是烦人,搜索下以下解决方案,试了还不错

  • 对于/index.php/abc这种url,Apachelighttpd会按”index.php?abc”来解释,而nginx会认为是请求名字是“index.php”的目录下的abc文件的内容。所以CI在nginx下不配置rewrite是无法运行的,而在Apache和lighttpd则正常。
  • nginx里rewrite ^/(.*)$ /index.php?$1 last;来rewrite请求时,对于:/abc.abc这类请求,会rewrite成“index.php/abc_abc”,即会把“点”变成“下划线”,不清楚是为了什么。
  • nginx配置文件里的rewrite规则不是只执行一次就完事的,是“执行一遍,假如没有碰到break,就按rewrite后的新路径再执行一遍,直到不再变化或者遇到break或者执行满10次报500错误退出”,所以单纯的用小知识二里的重写规则是不行的,需要在后面加上一句break,这样重写一遍后就不再执行了。

所以 进入nginx的配置文件

加上一句(本来就有这句,只需要修改一下就行了

location /
{
index index.php;
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?$1 last;
break;
}
}

发表在 开源代码 | 标签为 , , | 留下评论

jquery页面加载完成后执行3种方法区别

jquery加载页面的方法(页面加载完成就执行),建议大家看下windows.onload与$(document).ready之间的区别。
1、$(function(){
$(“#a”).click(function(){
//adding your code here
});
});
2、$(document).ready(function(){
$(“#a”).click(function(){
//adding your code here
});
});
3、window.onload = function(){
$(“#a”).click(function(){
//adding your code here
});

一般的加载页面时调用js方法如下:

window.onload = function() {
$(“#sel”).select();$(“#sel”).val(1).change();这个是jquery代码
};

这段代码会在整个页面的document全部加载完成以后执行。不幸的这种方式不仅要求页面的DOM tree全部加载完成,而且要求所有的外部图片和资源全部加载完成。更不幸的是,如果外部资源,例如图片需要很长时间来加载,那么这个js效果就会让用户感觉失效了。

但是用jquery的方法:

$(document).ready(function() {

// 任何需要执行的js特效
$(“#sel”).select();$(“#sel”).val(1).change();这个是jquery代码
});

就仅仅只需要加载所有的DOM结构,在浏览器把所有的HTML放入DOM tree之前就执行js效果。包括在加载外部图片和资源之前。

还有一种简写的方式:

$(function() {

// 任何需要执行的js特效
$(“#sel”).select();$(“#sel”).val(1).change();这个是jquery代码
});

发表在 开源代码 | 标签为 | 留下评论

Jquery1.6后版本checkbox选择checked的不同调整

jquery1.6之前的版本,我们会这样写我们的代码:
<input type=’checkbox’ id=’cb’/>
<script>
//获取是否选中
var isChecked = $(‘#cb’).attr(‘checked’);

//设置选中
$(‘#cb’).attr(‘checked’,true);
</script>

样写在JQ1.6之前完全没问题,可是当我们升级JQ1.6到更高的版本时,问题就来了,此时我们会发现:
$(‘#cb’).attr(‘checked’); 返回的是checked或者是undefined,不是原来的true和false了。
并且checked属性在页面初始化的时候已经初始化好了,不会随着状态的改变而改变。所以如果checkbox一开始是选中的,那么返回的是checked,如果一开始没被选中,则返回的是undefined。

解决方法:
<input type=’checkbox’ id=’cb’/>
<script>
//获取是否选中
var isChecked = $(‘#cb’).prop(‘checked’);
//或
var isChecked = $(‘#cb’).is(“:checked”);
//设置选中
$(‘#cb’).prop(‘checked’,true);
</script>

分析了其中的原因,可以这样理解:

它将“属性”与“特性”做了区别,属性指的是“name,id”等等,特性指的是“selectedIndex, tagName, nodeName”等等。
JQ1.6之后,可以通过attr方法去获得属性,通过prop方法去获得特性

$(“#cb”).attr(“tagName”); //undefined
$(“#cb”).prop(“tagName”); //INPUT

在jquery 1.8.x中的版本,对于checkbox的选中与不选中操作如下:

判断是否选中

$(‘#checkbox’).prop(‘checked’)

设置选中与不选中状态:

$(‘#checkbox’).attr(‘checked’,true)

$(‘#checkbox’).attr(‘checked’,false)

 

但此方法在jquery1.9.1中,有些处理不一样

IE10,Chrome,FF中,对于选中状态,第一次$(‘#checkbox’).attr(‘checked’,true)可以实现

但是当通过代码清除选中,下次再通过代码 $(‘#checkbox’).attr(‘checked’,true) 去选中时

虽然代码中有checked=’checked’,但是画面表现都没有打勾。

IE8,IE6下无此问题。

后来调查了相关的资料,发现现在attr(‘checked’,true)都换成prop(‘checked’,true)

发表在 开源代码 | 标签为 | 留下评论

centos如何安装Rar解压缩软件的方法

这里的系统环境是Centos 5.10/32位的

首先到http://www.rarlab.com/download.htm下载一个安装文件

wget http://www.rarlab.com/rar/rarlinux-5.1.0.tar.gz

tar -xvf rarlinux-5.1.0.tar.gz

直接安装make

看见下面这些信息就是安装成功了
mkdir -p /usr/local/bin
mkdir -p /usr/local/lib
cp rar unrar /usr/local/bin
cp rarfiles.lst /etc
cp default.sfx /usr/local/lib

但是我在运行命令rar时,出现下面这个问题,

unrar: /lib/libc.so.6: version `GLIBC_2.7' not found (required by unrar)

Google下,解决办法是

cp rar_static /usr/local/bin/unrar

两个命令我测试了下都是用rar_static文件,就看你习惯用那个命令名字而已。

发表在 开源代码 | 标签为 , | 留下评论

升级切换不同mysql版本有时候需要mysql_upgrade更新下

今天把整个服务器系统重新安装下,把mysql5.6退回5.5,反正就一个512m单核的,5.6根本无法发挥新特性,换回来后MySQL 的日志中见到“[ERROR] Missing system table mysql.proxies_priv; please run mysql_upgrade to create it”之类的错误。提示需要修复 MySQL 数据库结构错。

/usr/local/mysql/bin/mysql_upgrade -uroot -p
输入密码自动执行更新
然后再restart下mysql
看看日志应该没有错误了

发表在 数据库 | 标签为 | 留下评论