运维部落

香港vps促销1G99元 点击购买 美国vps促销512M59元 点击购买 日本vps促销1G100元 点击购买

nginx配置limit_conn_zone来限制并发连接数以及下载带宽

2015年8月4日 没有评论

配置方法如下:

1、在nginx.conf里的http{}里加上如下代码:
#ip limit
limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn_zone $server_name zone=perserver:10m;

2、在需要限制并发数和下载带宽的网站配置server{}里加上如下代码:
limit_conn perip 2;
limit_conn perserver 20;
limit_rate 100k;

补充说明下参数:
$binary_remote_addr是限制同一客户端ip地址;
$server_name是限制同一server最大并发数;
limit_conn为限制并发连接数;
limit_rate为限制下载速度;

转另一篇文章:nginx 限速
注意:
nginx 1.1.8 之后的版本的语法改为limit_conn_zone $binary_remote_addr zone=NAME:10m;
NAME 就是 zone 的名字详情请看这里 http://nginx.org/en/docs/http/ngx_http_limit_conn_module.html

限制连接数:
要限制连接,必须先有一个容器对连接进行计数,在http段加入如下代码:
“zone=” 给它一个名字,可以随便叫,这个名字要跟下面的 limit_conn 一致
$binary_remote_addr = 用二进制来储存客户端的地址,1m 可以储存 32000 个并发会话

… 省掉 N 字
http
{
limit_conn_zone $binary_remote_addr zone=addr:10m;

接下来需要对server不同的位置(location段)进行限速,比如限制每个IP并发连接数为1,则
server
{
listen 80;
server_name 192.168.11.128;
index index.html index.htm index.php;
limit_conn addr 1; #是限制每个IP只能发起1个连接 (addr 要跟 limit_conn_zone 的变量对应)
limit_rate 100k; #限速为 100KB/秒
root html;

注意事项:
limit_rate 100k; //是对每个连接限速100k。这里是对连接限速,而不是对IP限速!如果一个IP允许两个并发连接,那么这个IP就是限速limit_rate * 2

nginx限制某个IP同一时间段的访问次数

2015年8月3日 没有评论

如何设置能限制某个IP某一时间段的访问次数是一个让人头疼的问题,特别面对恶意的ddos攻击的时候。其中CC攻击(Challenge Collapsar)是DDOS(分布式拒绝服务)的一种,也是一种常见的网站攻击方法,攻击者通过代理服务器或者肉鸡向向受害主机不停地发大量数据包,造成对方服务器资源耗尽,一直到宕机崩溃。

cc攻击一般就是使用有限的ip数对服务器频繁发送数据来达到攻击的目的,nginx可以通过HttpLimitReqModul和HttpLimitZoneModule配置来限制ip在同一时间段的访问次数来防cc攻击。

HttpLimitReqModul用来限制连单位时间内连接数的模块,使用limit_req_zone和limit_req指令配合使用来达到限制。一旦并发连接超过指定数量,就会返回503错误。

HttpLimitConnModul用来限制单个ip的并发连接数,使用limit_zone和limit_conn指令

这两个模块的区别前一个是对一段时间内的连接数限制,后者是对同一时刻的连接数限制。

1 HttpLimitReqModul 限制某一段时间内同一ip访问数实例
2 HttpLimitZoneModule 限制并发连接数实例
3 nginx白名单设置

HttpLimitReqModul 限制某一段时间内同一ip访问数实例
http{

#定义一个名为allips的limit_req_zone用来存储session,大小是10M内存,
#以$binary_remote_addr 为key,限制平均每秒的请求为20个,
#1M能存储16000个状态,rete的值必须为整数,
#如果限制两秒钟一个请求,可以设置成30r/m

limit_req_zone $binary_remote_addr zone=allips:10m rate=20r/s;

server{

location {

#限制每ip每秒不超过20个请求,漏桶数burst为5
#brust的意思就是,如果第1秒、2,3,4秒请求为19个,
#第5秒的请求为25个是被允许的。
#但是如果你第1秒就25个请求,第2秒超过20的请求返回503错误。
#nodelay,如果不设置该选项,严格使用平均速率限制请求数,
#第1秒25个请求时,5个请求放到第2秒执行,
#设置nodelay,25个请求将在第1秒执行。

limit_req zone=allips burst=5 nodelay;

}

}

}

HttpLimitZoneModule 限制并发连接数实例
limit_zone只能定义在http作用域,limit_conn可以定义在http server location作用域

http{

#定义一个名为one的limit_zone,大小10M内存来存储session,
#以$binary_remote_addr 为key
#nginx 1.18以后用limit_conn_zone替换了limit_conn
#且只能放在http作用域
limit_conn_zone one $binary_remote_addr 10m;

server{

location {

limit_conn one 20; #连接数限制

#带宽限制,对单个连接限数,如果一个ip两个连接,就是500x2k
limit_rate 500k;


}

}

}

nginx白名单设置
以上配置会对所有的ip都进行限制,有些时候我们不希望对搜索引擎的蜘蛛或者自己测试ip进行限制,
对于特定的白名单ip我们可以借助geo指令实现。
1.

http{
geo $limited{
default 1;
#google
64.233.160.0/19 0;
65.52.0.0/14 0;
66.102.0.0/20 0;
66.249.64.0/19 0;
72.14.192.0/18 0;
74.125.0.0/16 0;
209.85.128.0/17 0;
216.239.32.0/19 0;
#M$
64.4.0.0/18 0;
157.60.0.0/16 0;
157.54.0.0/15 0;
157.56.0.0/14 0;
207.46.0.0/16 0;
207.68.192.0/20 0;
207.68.128.0/18 0;
#yahoo
8.12.144.0/24 0;
66.196.64.0/18 0;
66.228.160.0/19 0;
67.195.0.0/16 0;
74.6.0.0/16 0;
68.142.192.0/18 0;
72.30.0.0/16 0;
209.191.64.0/18 0;
#My IPs
127.0.0.1/32 0;
123.456.0.0/28 0; #example for your server CIDR
}
geo指令定义了一个白名单$limited变量,默认值为1,如果客户端ip在上面的范围内,$limited的值为0

2.使用map指令映射搜索引擎客户端的ip为空串,如果不是搜索引擎就显示本身真是的ip,这样搜索引擎ip就不能存到limit_req_zone内存session中,所以不会限制搜索引擎的ip访问

map $limited $limit {
1 $binary_remote_addr;
0 “”;
}

3.设置limit_req_zone和limit_req
limit_req_zone $limit zone=foo:1m rate=10r/m;

limit_req zone=foo burst=5;

最后我们使用ab压php-fpm的方式,对上面的方法效果实际测试下

例1:限制只允许一分钟内只允许一个ip访问60次配置,也就是平均每秒1次
首先我们准备一个php脚本放在根目录下$document_root
test.php

nginx配置增加limit_req_zone 和 limit_req

http{

limit_req_zone $binary_remote_addr zone=allips:10m rate=60r/m;

server{

location {

limit_req zone=allips;

}

}

}
ab -n 5 -c 1 http://www.weizhang.org/test.php

118.144.94.193 – - [22/Dec/2012:06:27:06 +0000] “GET /test.php HTTP/1.0″ 200 11000 “-” “ApacheBench/2.3″
118.144.94.193 – - [22/Dec/2012:06:27:06 +0000] “GET /test.php HTTP/1.0″ 503 537 “-” “ApacheBench/2.3″
118.144.94.193 – - [22/Dec/2012:06:27:07 +0000] “GET /test.php HTTP/1.0″ 503 537 “-” “ApacheBench/2.3″
118.144.94.193 – - [22/Dec/2012:06:27:07 +0000] “GET /test.php HTTP/1.0″ 503 537 “-” “ApacheBench/2.3″
118.144.94.193 – - [22/Dec/2012:06:27:07 +0000] “GET /test.php HTTP/1.0″ 503 537 “-” “ApacheBench/2.3″

未设置brust和nodelay可以看到该配置只允许每秒访问1次,超出的请求返回503错误

http{

limit_req_zone $binary_remote_addr zone=allips:10m rate=60r/m;

server{

location {

limit_req zone=allips burst=1 nodelay;

}

}

}
ab -n 5 -c 1 http://www.weizhang.org/test.php

118.144.94.193 – - [22/Dec/2012:07:01:00 +0000] “GET /test.php HTTP/1.0″ 200 11000 “-” “ApacheBench/2.3″
118.144.94.193 – - [22/Dec/2012:07:01:00 +0000] “GET /test.php HTTP/1.0″ 200 11000 “-” “ApacheBench/2.3″
118.144.94.193 – - [22/Dec/2012:07:01:01 +0000] “GET /test.php HTTP/1.0″ 503 537 “-” “ApacheBench/2.3″
118.144.94.193 – - [22/Dec/2012:07:01:01 +0000] “GET /test.php HTTP/1.0″ 503 537 “-” “ApacheBench/2.3″
118.144.94.193 – - [22/Dec/2012:07:01:01 +0000] “GET /test.php HTTP/1.0″ 503 537 “-” “ApacheBench/2.3″

设置brust=1和nodelay后允许第1秒处理两个请求。

Nginx配置性能优化及参数说明(转)

2015年8月2日 没有评论

大多数的Nginx安装指南告诉你如下基础知识——通过apt-get安装,修改这里或那里的几行配置,好了,你已经有了一个Web服务器了。而且,在大多数情况下,一个常规安装的nginx对你的网站来说已经能很好地工作了。然而,如果你真的想挤压出Nginx的性能,你必须更深入一些。在本指南中,我将解释Nginx的那些设置可以微调,以优化处理大量客户端时的性能。需要注意一点,这不是一个全面的微调指南。这是一个简单的预览——那些可以通过微调来提高性能设置的概述。你的情况可能不同。

基本的 (优化过的)配置

我们将修改的唯一文件是nginx.conf,其中包含Nginx不同模块的所有设置。你应该能够在服务器的/etc/nginx目录中找到nginx.conf。首先,我们将谈论一些全局设置,然后按文件中的模块挨个来,谈一下哪些设置能够让你在大量客户端访问时拥有良好的性能,为什么它们会提高性能。本文的结尾有一个完整的配置文件。

高层的配置

nginx.conf文件中,Nginx中有少数的几个高级配置在模块部分之上。

  1. user www-data;
  2. pid /var/run/nginx.pid;
  3. worker_processes auto; 
  4. worker_rlimit_nofile 100000; 

user和pid应该按默认设置 – 我们不会更改这些内容,因为更改与否没有什么不同。

worker_processes 定义了nginx对外提供web服务时的worker进程数。最优值取决于许多因素,包括(但不限于)CPU核的数量、存储数据的硬盘数量及负载模式。不能确定的时候,将其设置为可用的CPU内核数将是一个好的开始(设置为“auto”将尝试自动检测它)。

worker_rlimit_nofile 更改worker进程的最大打开文件数限制。如果没设置的话,这个值为操作系统的限制。设置后你的操作系统和Nginx可以处理比“ulimit -a”更多的文件,所以把这个值设高,这样nginx就不会有“too many open files”问题了。

Events模块

events模块中包含nginx中所有处理连接的设置。

  1. events {
  2. worker_connections 2048; 
  3. multi_accept on;
  4. use epoll; 
  5. }

worker_connections 设置可由一个worker进程同时打开的最大连接数。如果设置了上面提到的worker_rlimit_nofile,我们可以将这个值设得很高。

记住,最大客户数也由系统的可用socket连接数限制(~ 64K),所以设置不切实际的高没什么好处。

multi_accept 告诉nginx收到一个新连接通知后接受尽可能多的连接。

use 设置用于复用客户端线程的轮询方法。如果你使用Linux 2.6+,你应该使用epoll。如果你使用*BSD,你应该使用kqueue。

(值得注意的是如果你不知道Nginx该使用哪种轮询方法的话,它会选择一个最适合你操作系统的)

HTTP 模块

HTTP模块控制着nginx http处理的所有核心特性。因为这里只有很少的配置,所以我们只节选配置的一小部分。所有这些设置都应该在http模块中,甚至你不会特别的注意到这段设置。

  1. http {
  2. server_tokens off;
  3. sendfile on;
  4. tcp_nopush on;
  5. tcp_nodelay on;
  6. }

server_tokens  并不会让nginx执行的速度更快,但它可以关闭在错误页面中的nginx版本数字,这样对于安全性是有好处的。

sendfile 可以让sendfile()发挥作用。sendfile()可以在磁盘和TCP socket之间互相拷贝数据(或任意两个文件描述符)。Pre-sendfile是传送数据之前在用户空间申请数据缓冲区。之后用read()将数据从文件拷贝到这个缓冲区,write()将缓冲区数据写入网络。sendfile()是立即将数据从磁盘读到OS缓存。因为这种拷贝是在内核完成的,sendfile()要比组合read()和write()以及打开关闭丢弃缓冲更加有效(更多有关于sendfile)。

tcp_nopush 告诉nginx在一个数据包里发送所有头文件,而不一个接一个的发送。

tcp_nodelay 告诉nginx不要缓存数据,而是一段一段的发送–当需要及时发送数据时,就应该给应用设置这个属性,这样发送一小块数据信息时就不能立即得到返回值。

  1. access_log off;
  2. error_log /var/log/nginx/error.log crit;

access_log 设置nginx是否将存储访问日志。关闭这个选项可以让读取磁盘IO操作更快(aka,YOLO)

error_log 告诉nginx只能记录严重的错误:

  1. keepalive_timeout 10;
  2. client_header_timeout 10;
  3. client_body_timeout 10;
  4. reset_timedout_connection on;
  5. send_timeout 10;

keepalive_timeout  给客户端分配keep-alive链接超时时间。服务器将在这个超时时间过后关闭链接。我们将它设置低些可以让ngnix持续工作的时间更长。

client_header_timeout 和client_body_timeout 设置请求头和请求体(各自)的超时时间。我们也可以把这个设置低些。

reset_timeout_connection 告诉nginx关闭不响应的客户端连接。这将会释放那个客户端所占有的内存空间。

send_timeout 指定客户端的响应超时时间。这个设置不会用于整个转发器,而是在两次客户端读取操作之间。如果在这段时间内,客户端没有读取任何数据,nginx就会关闭连接。

  1. limit_conn_zone $binary_remote_addr zone=addr:5m;
  2. limit_conn addr 100;

limit_conn_zone 设置用于保存各种key(比如当前连接数)的共享内存的参数。5m就是5兆字节,这个值应该被设置的足够大以存储(32K*5)32byte状态或者(16K*5)64byte状态。

limit_conn 为给定的key设置最大连接数。这里key是addr,我们设置的值是100,也就是说我们允许每一个IP地址最多同时打开有100个连接。

  1. include /etc/nginx/mime.types;
  2. default_type text/html;
  3. charset UTF-8;

include 只是一个在当前文件中包含另一个文件内容的指令。这里我们使用它来加载稍后会用到的一系列的MIME类型。

default_type 设置文件使用的默认的MIME-type。

charset 设置我们的头文件中的默认的字符集

  1. gzip on;
  2. gzip_disable ”msie6″;
  3. # gzip_static on;
  4. gzip_proxied any;
  5. gzip_min_length 1000;
  6. gzip_comp_level 4;
  7. gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

gzip 是告诉nginx采用gzip压缩的形式发送数据。这将会减少我们发送的数据量。

gzip_disable 为指定的客户端禁用gzip功能。我们设置成IE6或者更低版本以使我们的方案能够广泛兼容。

gzip_static 告诉nginx在压缩资源之前,先查找是否有预先gzip处理过的资源。这要求你预先压缩你的文件(在这个例子中被注释掉了),从而允许你使用最高压缩比,这样nginx就不用再压缩这些文件了(想要更详尽的gzip_static的信息,请点击这里)。

gzip_proxied 允许或者禁止压缩基于请求和响应的响应流。我们设置为any,意味着将会压缩所有的请求。

gzip_min_length 设置对数据启用压缩的最少字节数。如果一个请求小于1000字节,我们最好不要压缩它,因为压缩这些小的数据会降低处理此请求的所有进程的速度。

gzip_comp_level 设置数据的压缩等级。这个等级可以是1-9之间的任意数值,9是最慢但是压缩比最大的。我们设置为4,这是一个比较折中的设置。

gzip_type 设置需要压缩的数据格式。上面例子中已经有一些了,你也可以再添加更多的格式。

  1. # cache informations about file descriptors, frequently accessed files
  2. # can boost performance, but you need to test those values
  3. open_file_cache max=100000 inactive=20s;
  4. open_file_cache_valid 30s;
  5. open_file_cache_min_uses 2;
  6. open_file_cache_errors on;
  7. ##
  8. # Virtual Host Configs
  9. # aka our settings for specific servers
  10. ##
  11. include /etc/nginx/conf.d/*.conf;
  12. include /etc/nginx/sites-enabled/*;

open_file_cache 打开缓存的同时也指定了缓存最大数目,以及缓存的时间。我们可以设置一个相对高的最大时间,这样我们可以在它们不活动超过20秒后清除掉。

open_file_cache_valid 在open_file_cache中指定检测正确信息的间隔时间。

open_file_cache_min_uses 定义了open_file_cache中指令参数不活动时间期间里最小的文件数。

open_file_cache_errors 指定了当搜索一个文件时是否缓存错误信息,也包括再次给配置中添加文件。我们也包括了服务器模块,这些是在不同文件中定义的。如果你的服务器模块不在这些位置,你就得修改这一行来指定正确的位置。

一个完整的配置

  1. user www-data;
  2. pid /var/run/nginx.pid;
  3. worker_processes auto;
  4. worker_rlimit_nofile 100000;
  5. events {
  6. worker_connections 2048;
  7. multi_accept on;
  8. use epoll;
  9. }
  10. http {
  11. server_tokens off;
  12. sendfile on;
  13. tcp_nopush on;
  14. tcp_nodelay on;
  15. access_log off;
  16. error_log /var/log/nginx/error.log crit;
  17. keepalive_timeout 10;
  18. client_header_timeout 10;
  19. client_body_timeout 10;
  20. reset_timedout_connection on;
  21. send_timeout 10;
  22. limit_conn_zone $binary_remote_addr zone=addr:5m;
  23. limit_conn addr 100;
  24. include /etc/nginx/mime.types;
  25. default_type text/html;
  26. charset UTF-8;
  27. gzip on;
  28. gzip_disable ”msie6″;
  29. gzip_proxied any;
  30. gzip_min_length 1000;
  31. gzip_comp_level 6;
  32. gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
  33. open_file_cache max=100000 inactive=20s;
  34. open_file_cache_valid 30s;
  35. open_file_cache_min_uses 2;
  36. open_file_cache_errors on;
  37. include /etc/nginx/conf.d/*.conf;
  38. include /etc/nginx/sites-enabled/*;
  39. }

编辑完配置后,确认重启nginx使设置生效。

  1. sudo service nginx restart
分类: 软件使用 标签: , ,

routeos在winbox忘记密码

2015年7月24日 没有评论

用你登陆过winbox的那台机器 密码就在C:\Documents and Settings\你的用户名\Application Data\Mikrotik\Winbox\winbox.cfg文件里,你用记事本
打开,里面有类似下面的语句:
typeaddr host192.168.0.1 loginadmin note keep-pwd pwd12345 pwd后面就是密码.

大型BBS架构squid+nginx(测试过上几万人无优)

2015年7月20日 没有评论

写在前面,所有软件都需要跑在linux及相关操作系统下,千万不要用windows去跑。不然死的很难看。

设计这个架构基于Linux系统下squid、nginx和lvs等技术,从架构上对bbs进行全面优化和保护,其有如下几个特点:

1、高性能:所有的点击基本上全部由前端缓存负责,提供最快速的处理。

2、高保障度:不需考虑应用程序稳定与否、程序语言是何种、数据库是何种,都能从架构上保证稳定。

3、高可用性:对应用程序的修改达到最简化:在程序的某些地方加入清缓存的语句即可,当然还需要做页面静态化的工作和统计工作。

如图所示:

这个架构的特点和一些流程的说明:

1、主域名和图片域名分离

域名分离可以使流量分离,缓存策略分离等等,好处诸多。bbs初期一定要做好规划,将图片用另外的域名独立服务,即使没有足够机器,域名也要先分开。另外,图片服务器可以使用有别于主域名的另一个域名,一个好处是可以减少读取cookie对图片服务器的压力,另一个是提高安全性,避免cookie泄露。

2、使用LVS作为前端、二级代理和数据库的访问入口

使用LVS作为入口,比其他任何一种方式都来得更优质。首先LVS的负载能力很强,因为它工作在网络协议的第4层,使用虚拟ip技术,所以它本身并不担负任何流量的处理,仅仅是一个封包转发的功能;第二,LVS的配置相对简单而且稳定,一般去调整的几率比较低,也减少了因人为等因素而出现故障;第 三,LVS可以处理任何端口的负载均衡,所以它基本可以做所有服务的负载均衡和容错。在这个架构中,除了处理http的80端口之外,LVS也处理了数据库mysql的3306端口,在数据库这个应用中是采用的双机热备策略。

3、使用nginx+squid作为最前端的缓存组合

在这个架构中,是最能体现app_nginx_squid_nginx架构的优势的。在这个架构中的bbs运行在缓存上,用户每发布一张帖子,都需要使用purge指令清除该帖子的缓存,如果是squid在最前端,那么每次发布一张帖子,都需要在所有的squid中调用purge指令,这样在机器比较多的时候,purge将成为一个巨大的压力。

所以在这里将nginx放在最前端并使用手工url_hash的方式分流,将经常需要purge的帖子页面和列表页面按一个url对应一台squid的策略,分布到各台squid上,并提供了一台或一组backup的squid,个别squid出现异常时将自动使用backup的机器继续提供一段时间的服务直到其正常。在这样的架构下,purge就不再是关键问题,因为一个url只会对应到一台机器上,所以purge的时候,后端app_server找到 对应的机器就可以了。

可以看到在前端中还有一台nginx(purge)的机器,这台机器是专用于purge的,只要发送purge指令和需要清除的url到这台机器,就可以 找到相应的服务器并清除缓存了。另外,purge时还需要清理backup机器上的缓存,所以无论前端机器增加到多少,purge指令只会在2台机器上执 行,如果backup机器使用到2-3台,purge指令就会在3-4台机器上执行,仍然在可接受范围之内。

使用nginx作为前端,另有的好处:

1.使用nginx的日志统计点击量非常方便
2.nginx也可作为缓存,一般可以直接负责favicon.ico和logo等固定的小图片
3.基于nginx的中层代理

nginx中层代理的优势,在:

nginx和squid配合搭建的web服务器前端系统

这篇文章中有解释——

在这个架构中,假如后端的app_server上把帖子页和列表页直接生成了静态页面,那么使用中层代理再做一次url_hash,将可以解决后端 app_server的硬盘容量的压力,但是如果使用到url_hash的话,那做容错就相对麻烦了。所以建议不要采用生成静态页的方式,后端的压力一般 不会非常的大,所以没有必要生成静态页。假如前端squid的命中率实在太低下,造成大量穿透,可以考虑使用二级代理暂顶。

5、基于LVS的数据库双机热备

在这个架构中,因为大量的并发和访问量都由前端的缓存处理掉了,所以后端的mysql主要压力来自于数据的写入,所以压力并不是非常大,并且负载比较稳定,一般不会随着访问量上升而提高过快,估计目前一台64位的机器,加满内存并使用高速的硬盘,前端负载数亿访问量时数据库都不会出现性能问题。在数据库 这方面应主要考虑故障恢复,因为数据库崩溃的话,按照一般使用备份恢复的做法,耗时很长而且难免丢失数据,是很棘手的问题。使用双机热备的方案,出现故障时首先可由一台时刻同步着的备用数据库即刻充当主数据库,然后卸下的数据库可以有充分的时间对其进行维修,所以是个很安全有效的办法。

当然,数据库的优化还是要细心做的还有很多,不细说,有时间建议参考:

mysql性能的检查和调优方法,如细心地调一遍,性能会好更多。

6、图片的服务器

图片的服务器我们在此架构中没有特别详细的介绍,我们在访问压力很大的大型的bbs系统下,图片常常会出现容灾现象——图片数量严重超过了单台前端服务器容纳能力,导致前端服务器命中率急速下降。变的处理容灾问题也是非常棘手的,往后有机会我们会有更详细的介绍。

7、简单的点击量统计办法

1.使用js的script标签访问另一(台)组服务器的空文件,然后定期向数据库更新。
2.在前端的nginx上直接开启日志功能,按需要统计点击量的链接规则进行记录,然后定期更新数据库。

分类: 解决方案 标签: ,

如何破解光猫上海贝曼 HA1000_N

2015年7月18日 没有评论

近来,中国电信实现光纤入户,自己家里也弄了个。不过有点坑的就是花钱买的光路由器,只给了user权限,没天理了这个。看了些文章破解掉,拿到最高权限。这里分享一下。

获取超级用户telecomadmin的密码:

1、使用光猫背面的账号useradmin密码登录http://192.168.1.1,登录成功后在浏览器输入http://192.168.1.1/backupsettings.conf回车下载backupsettings.conf文件,然后使用记事本打开backupsettings.conf文件,使用查找功能查找telecomadmin,可以快速找到超级用户telecomadmin的密码是“telecomadmin+8位数字”

好了。这里可以用telecomadmin登陆了。

分类: 解决方案 标签: ,

在SQL2008里面怎么让显示全部行和编辑 全部而不是200和1000

2015年7月12日 没有评论

在sql server2008里面,可能微软考虑到数据量比较大,如果直接返回所有行,可能造成耗费时间过多。所有默认为”编辑前200行”和”返回前1000行”.这对于有些朋友来说不太方面,那么如何如何实现”编辑所有行”和”返回所有行”呢?

具体方法为:
Microsoft SQL Server Management Studio–工具–选项–SQL Server对象资源管理器–命令

把其中的”编辑前行命令的值”和”选择前行命令的值”都改为”0″,之后确定。
再打开表,就变成”编辑所有行”和”返回所有行”。

设置ssh登陆邮件提醒

2015年7月5日 没有评论

Centos
wget ftp://ftp.freebsd.org/pub/FreeBSD/ports/distfiles/mailx-12.4.tar.bz2
tar jxvf mailx-12.4.tar.bz2
cd mailx-12.4
make
make install UCBINSTALL=/usr/bin/install
Ubuntu
sudo apt-get install heirloom-mailx -y
配置mailx
cp /etc/nail.rc /etc/nail.rc.bak
cat > /etc/nail.rc< set from=发送邮箱地址
set smtp=smtp服务器地址
set smtp-auth-user=发送邮箱登陆账号
set smtp-auth-password=发送邮箱登陆密码
set smtp-auth=login
EOF
配置SSH
cp /etc/ssh/sshrc /etc/ssh/sshrc.bak
cat > /etc/ssh/sshrc< #!/bin/bash
ip=\${SSH_CLIENT%% *}
if [ \`last -2 | grep \$ip -c\` = '1' ]; then
echo \$USER@\`hostname\` login from \$ip | mailx -v -s “SSH alert” 接收邮箱地址
EOF
chmod +x /etc/ssh/sshrc

Windows平台下Oracle 自动备份详细步骤

2015年6月26日 没有评论

环境说明
背景:Oracle 11g 服务器,Oracle 11g 客户端,windowsXP 操作平台
要求:Oracle 数据库服务器对数据库 tsorcl 每天自动备份一次。备份格式:ts20140408.dmp 和 ts20140408.log
解决方案:利用任务计划、批处理文件和 Oracle 的 exp 导出功能,根据日期自动生成 Oracle 备份文件。

具体操作步骤如下
1、创建批处理文件 oracle_bakup.bat
oracle_bakup .bat 中详细内容如下

@echo off
echo 正在备份TS Oracle 数据库,请稍等……
exp ts/ts@tsorcl owner=ts INDEXES=y grants=N rows=y constraints=y compress=N
file=F:\autobackup\ts_%date:~0,4%%date:~5,2%%date:~8,2%.dmp log=F:\autobackup\ts_%date:~0,4%%date:~5,2%%date:~8,2%.log
echo 任务完成!

另外:%date%的值在不同的系统、语言版本下可能是不一样的,控制面板里面区域选项的设定也会改变%date%的值。请先在命令行中测试 echo %date% 的返回值。%date:~4,10% 是返回日期函数,~后的第一个参数是要截取的起始位置(从0开始),第二个参数是要截取的长度,如没有则是截取到最后,参数可酌情修改。 如需要准确的时间做为文件名,请用%time%函数,参数同上。

2、添加一个任务计划 TSPlan

开始 > 所有程序 > 附件 > 系统工具 > 任务计划 > 添加任务计划 > 下一步 > 在 浏览 中查找刚刚写好的oracle_bakup.bat 文件 > 任务名输入TSPlan,执行这个任务选择每天,下一步 > 起始时间下午12:00,起始日期2009-7-11,下一步 > 输入用户名及密码,用户名要求是管理员权限用户名,下一步 > 完成
点击”完成”之后,会在任务计划栏目下新增一个名为”TSPlan”的任务计划,表明已经配置完毕。

备注:有时点击”完成” 之后,系统警告
“已创建新任务,但可能不能运行,因为无法设置账户信息。
指定的错误是:
Ox80041315:任务计划程序服务没有运行”
这是因为电脑的任务计划程序服务没有启动起来。开始 > 所有程序 > 管理工具 > 服务,找到”Task Scheduler”服务,发现启动类型为”已禁用”,右键单击更改为”自动”,并把它启动起来,然后重新添加一次任务计划 TSPlan就可以了。

分类: Windows, 解决方案 标签: ,

Windows下Oracle文件的自动备份与ftp自动上传

2015年6月26日 没有评论

环境说明
操作系统:Windows平台
环境:Oracle11g
FTP: 192.168.148.121 用户:dell 密码:123
要求:上传当天备份的数据库文件到FTP服务器,并删除windows平台下前一天的数据库备份文件
解决方案:利用任务计划、批处理文件和 FTP功能,来实现 Windows下自动备份数据库文件到远程FTP服务器并删除指定日期前的备份

具体 操作步骤如下
1、完成 Windows平台下Oracle 自动备份详细步骤 (见上个文章)
2、创建批处理 windowbackuptoftp.bat 文件
windowbackuptoftp.bat 中详细内容如下

@echo off
color 0a
title FTP自动上传
mode con cols=120 lines=50
echo.
echo *************************************************
echo 说 明
echo 本脚本可以方便用户自动向FTP上传当天的文件到 (—大于当天getdate() 120的形式, –删除一天前的数据)
echo 指定远程路径,与计划任务配合使用来实现数据库备份
echo *************************************************
echo
echo 10秒后开始下载…
echo open 192.168.148.121>ftp.txt
echo dell>>ftp.txt
echo 123>>ftp.txt
forfiles /p F:\autobackup /s /m *.dmp /d +%date:~0,10% /c “cmd /c echo put @file>>ftp.txt”
echo bye>>ftp.txt
C:\Windows\System32\ftp.exe -i -s:ftp.txt
forfiles -p “F:\autobackup” -s -m *.dmp /D -1 /C “cmd /c del @path>>ftp.txt”
exit

说明:forfiles 从 F:\autobackup查找对应的文件。
echo %date:~0,10% 等于2014-04-08 大于当天日期的数据库备份文件
cmd /c 可以在引号里将多条命令(包括批处理里的语句)用’&&’连接起来,达到将多条命令化为一条命令的目的
-1 保留最新1天的备份,使用 Resource kit 里的命令 FORFILES 删除老备份文件
del 删除
put 上传
ftp -s:ftp.txt 意思是,读取fxp.txt里的参数,执行ftp命令,命令执行完后,对应的文件日志下载到对方计算机里了。

DOS批处理命令(forfiles) 详解

Forfiles
从文件夹或树中选择要进行批处理的文件。
语法
forfiles [/p Path] [/m SearchMask] [/s] [/c Command] [/d[{+ | -}] [{MM/DD/YYYY | DD}]]
参数
/p Path 指定Path,表明要从哪里开始搜索。默认的文件夹是当前工作目录,该目录通过键入句号(.) 指定。
/m SearchMask 按照SearchMask 搜索文件。默认的SearchMask 是[i].[/i]。
/s 指示forfiles 在子目录中搜索。
/c Command 在每个文件上运行指定的Command。带有空格的命令字符串必须用引号括起来。默认的Command 是”cmd /c echo @file”。
/d[{+ | -}] [{MM/DD/YYYY | DD}] 选择日期大于或等于(+)(或者小于或等于(-))指定日期的文件,其中MM/DD/YYYY 是指定的日期,DD 是当前日期减去DD 天。如果未指定+ 或-,则使用+。DD 的有效范围是0 – 32768。
/? 在命令提示符下显示帮助。
注释
•Forfiles 最常用于批处理文件中。
•Forfiles /s 与dir /s 类似。
•下表列出了可在/cCommand 命令字符串中使用的变量。
变量描述
@file 文件名
@fname 无扩展名的文件名
@ext 文件扩展名
@path 文件的完整路径
@relpath 文件的相对路径
@isdir 如果文件类型是目录,则计算值为TRUE,否则值为FALSE
@fsize 用字节表示的文件大小
@fdate 文件中上次修改的日期戳
@ftime 文件中上次修改的时间戳
•使用forfiles,可以在多个文件上运行命令或将参数传递给多个文件。例如,可以在树中带有[i].txt 扩展名的所有文件上运行TYPE 命令。或者,可以用文件名“Myinput.txt”作为第一个参数,在C:\ 驱动器上执行每个批处理文件([/i].bat)。
•通过使用forfiles,可以执行下列任何操作:使用/d 按照绝对或相对日期选择文件。
•使用诸如@fsize(文件大小)和@fdate(文件日期)这样的变量构建文件的存档树。
•使用@isdir 变量区分文件和目录。
•通过在命令行中包含特殊字符和使用十六进制代码0xHH 环绕字符来格式化输出内容。
•Forfiles 通过在旨在仅处理单个文件的工具上执行“循环子目录”标记来发挥作用

2、添加一个任务计划 TSFTPPlan

开始 > 所有程序 > 附件 > 系统工具 > 任务计划 > 添加任务计划 > 下一步 > 在 浏览 中查找刚刚写好的windowbackuptoftp.bat 文件 > 任务名输入TSFTPPlan,执行这个任务选择每天,下一步 > 起始时间下午12:00,起始日期2009-7-11,下一步 > 输入用户名及密码,用户名要求是管理员权限用户名,下一步 > 完成
点击”完成”之后,会在任务计划栏目下新增一个名为”TSFTPPlan”的任务计划,表明已经配置完毕。