良玉的博客 点点滴滴,积水成河_良玉的博客_页游、手游linux运维工程师之路

debian7.8下make报错/lib/modules/3.2.0-4-amd64/build: No such file or directory. Stop.

$ make
make -C /lib/modules/3.2.0-4-amd64/build M=/home/erhannis/Downloads/vhba-module-20130607 modules
make: *** /lib/modules/3.2.0-4-amd64/build: No such file or directory.  Stop.
make: *** [modules] Error 2

解决:

apt-get install linux-headers-$(uname -r)


阅读全文...

nginx配置多个域名,server_names_hash_bucket_size 问题

配置多个 server 虚拟主机,必须要在配置文档中 http { 里头加上 server_names_hash_bucket_size 64; 这么一句

http {

server_names_hash_bucket_size 64;

include mime.types;
default_type application/octet-stream;
………….省略

}

不然不但 nginx 启动不了,而且 nginx -t 测试配置文档的时候会提示

could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32
2016/05/20 09:54:27 [emerg] 11372#0: the configuration file /opt/nginx/conf/nginx.conf test failed

  下面是在中文wiki上摘抄的一段说明
  保存服务器名字的hash表是由指令 server_names_hash_max_size 和 server_names_hash_bucket_size所控制的。参数hash bucket size总是等于hash表的大小,并且是一路处理器缓存大小的倍数。在减少了在内存中的存取次数后,使在处理器中加速查找hash表键值成为可能。如果 hash bucket size等于一路处理器缓存的大小,那么在查找键的时候,最坏的情况下在内存中查找的次数为2。第一次是确定存储单元的地址,第二次是在存储单元中查找键 值。因此,如果Nginx给出需要增大 hash max size 或 hash bucket size的提示,那么首要的是增大前一个参数的大小.


阅读全文...

解决shell当while read line 遇到exit 只退出循环,不退出脚本

 #!/bin/bash
while read line
do
        if [ "$line" == "do" ];then
                exit 2
        fi
        echo $line
done<<<"$(cat 1)"
echo aaa

<<<是bash的扩展,叫做here-string
加上双引号就能一次读一行结果

阅读全文...

php来实现telnet的连接、传递命令、获取返回值等功能

<?php
error_reporting(-1);
class Telnet {
var $sock = NULL;
 
function telnet($host,$port) {
 $this->sock = fsockopen($host,$port);
 socket_set_timeout($this->sock,1,0);
}
function close() {
 if ($this->sock)  fclose($this->sock);
 $this->sock = NULL;
}
 
function write($buffer) {
 $buffer = str_replace(chr(255),chr(255).chr(255),$buffer);
 fwrite($this->sock,$buffer);
}
function getc() {
 return fgetc($this->sock);
}
function read_till($what) {
 $buf = '';
 while (1) {
  $IAC = chr(255);
   
  $DONT = chr(254);
  $DO = chr(253);
   
  $WONT = chr(252);
  $WILL = chr(251);
   
  $theNULL = chr(0);
 
  $c = $this->getc();
   
  if ($c === false) return $buf;
  if ($c == $theNULL) {
   continue;
  }
 
  if ($c == "1") {
   continue;
  }
  if ($c != $IAC) {
   $buf .= $c;
  
   if ($what == (substr($buf,strlen($buf)-strlen($what)))) {
    return $buf;
   }
   else {
    continue;
   }
  }
  $c = $this->getc();
   
  if ($c == $IAC) {
   $buf .= $c;
  }
  else if (($c == $DO) || ($c == $DONT)) {
   $opt = $this->getc();
    //echo "we wont ".ord($opt)."\n";
   fwrite($this->sock,$IAC.$WONT.$opt);
  }
  elseif (($c == $WILL) || ($c == $WONT)) {
   $opt = $this->getc();
    //echo "we dont ".ord($opt)."\n";
   fwrite($this->sock,$IAC.$DONT.$opt);
  }
  else {
    //echo "where are we? c=".ord($c)."\n";
  }
 }
}
}
$telnet = new telnet("192.168.0.1",'8080');
#echo $telnet->read_till("password: ");
#$telnet->write("KONGXX\r\n");
#echo $telnet->read_till(":> ");
#$telnet->write("ls\r\n");
#echo $telnet->read_till(":> ");
echo $telnet->close();


阅读全文...

ImageMagick被爆高危漏洞(CVE-2016-3714),测试及解决方案

 1、前言

ImageMagick是一套功能强大、稳定而且开源的工具集和开发包,可以用来读、写和处理超过89种基本格式的图片文件,包括流行的TIFF、JPEG、GIF、PNG、PDF以及PhotoCD等格式。众多的网站平台都是用他渲染处理图片。可惜在3号时被公开了一些列漏洞,其中一个漏洞可导致远程执行代码(RCE),如果你处理用户提交的图片。该漏洞是针对在野外使用此漏洞。许多图像处理插件依赖于ImageMagick

阅读全文...

sendEmail发送邮件

sendEmail是一个轻量级,命令行的SMTP邮件客户端。如果你需要使用命令行发送邮件,那么sendEmail是非常完美的选择:使用简单并且功能强大.这个被设计用在php、bashperl和web站点使用。以上是sendEmail的简单介绍,千万不要和sendmail搞混掉了。用了sendEmail你将不在喜欢sendmail了.下载安装sendEmail1234sendEmail下载地址:http://caspian.dotconf.net/menu/Software/SendEmail/#

阅读全文...

nginx解决flash沙箱冲突

nginx配置:

server {
        listen 843;
        server_name localhost;

        location / {
                rewrite ^(.*)$ /crossdomain.xml;
              }
         
        error_page 400 /crossdomain.xml;
 
        location = /crossdomain.xml {
        root /var/www/html/;
      }

}


crossdomain.xml 放在web根目录下:

<?xml version="1.0" ?> 
<cross-domain-policy>
<site-control permitted-cross-domain-policies="all" />
<allow-access-from domain="*" to-ports="*" />
</cross-domain-policy>


然后perl去检测

# perl -e 'printf "<policy-file-request/>%c",0' | nc 127.0.0.1 843
<?xml version="1.0" ?> 
<cross-domain-policy>
<allow-access-from domain="*" /> 
</cross-domain-policy>


阅读全文...

MySQL Binlog三种格式介绍及分析

一.Mysql Binlog格式介绍

Mysql binlog日志有三种格式,分别为Statement,MiXED,以及ROW!


1.Statement:每一条会修改数据的sql都会记录在binlog中。

优点:不需要记录每一行的变化,减少了binlog日志量,节约了IO,提高性能。(相比row能节约多少性能与日志量,这个取决于应用的SQL情况,正常同一条记录修改或者插入row格式所产生的日志量还小于Statement产生的日志量

阅读全文...

mysq​l[Warning]Unsafe statement written to the binary log using statement format since BINLOG_FORMAT

[Warning] Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. INSERT... SELECT... ON DUPLICATE KEY UPDATE is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are updated. This order cannot be predicted and may differ on master and the slave. Statement:INSERT INTO tab_name


查了下原因,tab_name 这个表上有2个唯一键。则使用INSERT … ON DUPLICATE KEY UPDATE ,且当前数据库binlog_format是statement格式,这种sql语句就会报unsafe。


阅读全文...

mysql解决Table ‘./xxx/xxxxxx’ is marked as crashed and should be repaired 错误

然后进入 MySQL 数据库发现 Table ‘./xxx/xxxxxx’ is marked as crashed and should be repaired 错误,因为 xxxxxx表被损坏了,所以 WordPress 的文章都显示不出来:

# mysql -u root -p
Enter password:

mysql> use xxx;
Reading table i

阅读全文...