CGI的sub param处理输入数据与常规QUERY_STRING或read处理输入数据的对比

#!/usr/bin/perl -w
use CGI;
$cgi = new CGI;
print $cgi->header();
print $cgi->start_html('this is a title');

@name=$cgi->param;
foreach $name (@name) {
 $value =$cgi->param($name);
 $value=~tr/+//;
 $value=~s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
     print "<li><code>$name=$value</code>";
}

print $cgi->end_html;

——————————————————————————————————————-

if($ENV{'REQUEST_METHOD'} eq "POST")
{
    read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'});
} elsif ($ENV{'REQUEST_METHOD'} eq "GET")
{
$buffer = $ENV{'QUERY_STRING'};
}

@pairs=split(/&/,$buffer);

foreach $pair (@pairs)
{
    ($name,$value)=split(/=/,$pair);
    $value=~tr/+//;
    $value=~s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
    print "<li><code>$name=$value</code>";
}

实例:

##直接用来purge页面缓存

#!/usr/bin/perl
use strict;
use warnings;
use CGI;

my $req=new CGI;
print $req->header;
print <<HTML;
<form method="post" action="post.cgi" name="form">
<textarea name=url rows=5 cols=60>
</textarea>
<P>
<input type=submit><input type=reset>

</form>
HTML
my $url=$req->param("url");
$url=~tr/+//;
$url=~s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;

my @url=split/\n/,$url;
foreach (@url){
  my $purge_url=$_;
    if(/http:\/\/(\S+?)(?=\/)/){
if ($1){
my $squid_req=system("squidclient -h$1 -p80 -mPURGE $purge_url");
print $squid_req;
}
}

}

我们做ssh证书认证往往是用root登陆的,但是有时候在生成环境中,root用户往往是限制登陆的。做数据库,或者是网站异地备份时常常需要无密码证书拷贝。方法如下:

数据库服务器:s1

备份服务器:s2

进入s1:

用普通用户登陆,输入:

ssh-keygen 然后一路回车。

 

生成你公钥文件在/home/user/.ssh/id_rsa.pub

cat  id_rsa.pub

复制公钥

用普通用户进入s2:

 在/home/user/.ssh/下创建

authorized_keys

vim authorized_keys  将刚才复制的公钥复制进去

权限设置为600.(这点很重要,网上就是因为没有设置600权限导致登陆失败)

 

如果“人生若只如初见” 那该有多好,一切都是那么天真,那么美好。有一种东西,如果你不去碰,可能你不会少什么,但是你去碰,或许你能得到很多,或许让你输得彻底。

周日去约了某人看了《泰坦尼克号》,15年前我看过,如今再去看,我不在乎是不是3D,在乎的是那份“永恒”的爱。

可能看完之后,我迷失了,总想着去寻找那份爱,但是确越来越远,总在惦记对方的一种感觉。这时我已经输了,彻底的输了。

来到南京,所有的一切都是0,我不祈求能够得到什么,只想平静的生活,一点一滴的进步,每天玩着梦幻西游,帮战,挂机,卖FF。

开始的时候喜欢在帮里的群发表情,聊天,不知道何时却不在说话了,直到把群屏蔽。或许这都是虚拟的,但总在告诉自己,每一个虚拟的背后都有一个真实的个体。

又或许是自己一个人时间太长了,想找一个人来结束这种生活,但是总是适得其反。总喜欢搞着自己的那点小情绪,知道我还存在,其实我一直都在那里,只是自己把自己给遗忘了,活不出一个真实的自己。不知道每天手机在为谁24小时开机,总在找借口说24小时开机是为了工作的需要。

前段时间工作一直加班,让我没有时间去想想某些“感情”,但从昨天开始不加班之后,我的心里又开始空了,乱了,不知道自己该做些什么,看书看不进去,倒开水拿着空杯子出去又拿着空杯子回来。现在不像是那个我了,每天12点以后才睡觉,每天像是打了鸡血一样的有动力。喜欢发呆,喜欢听悲伤的音乐,我是不是的抑郁症了?但好像却又非常的清醒,觉得对于感情不要去承诺什么,因为你承诺的有95%做不到,所以我只想成为那5%,不去说什么山盟海誓,到最后却是分道扬镳。

好吧,我还是自己过好自己的生活,别去想那些空空的事物,给自己添加苦恼,慢慢的让时间把这冲掉吧。就像蝴蝶,你想抓到她的时候,总是抓不到,当你静静的待在那里,她却落在你的手里。

nginx的purge配置我就不多说了,这里我只说明下如果有多台的nginx反向代理服务器,如果purge的话,有时候会报404,这是由于purge的hash位置和cache产生的位置不同,所以我们利用squid的的squidclient来搞定它。

首先在nginx配置文件中加入

if ( $request_method = "PURGE" ) {

                  rewrite ^(.*)$ /purge$1 last;

        }

然后在purge端执行

squidclient -hblog.mcshell.org -p80 -mPURGE http://blog.mcshell.org/default/96.png

就可以直接找到缓存文件 并删除, 此方法用于多台nginx反向代理服务器

文本如下:

1.1.1.1   www.baidu.com
2.2.2.2   www.baidu.com
2.2.2.2   www.sina.com.cn
1.1.1.1   www.abc.com
2.2.2.2   www.it168.com
2.2.2.2   www.sina.com.cn
1.1.1.1   www.chinaunix.net
2.2.2.2   www.bbc.com
3.3.3.3 www.blog.com
需要得到:
3.3.3.3 www.blog.com,
1.1.1.1 www.baidu.com,www.abc.com,www.chinaunix.net,
2.2.2.2 www.baidu.com,www.sina.com.cn,www.it168.com,www.sina.com.cn,www.bbc.com,
code如下:
#!/usr/bin/perl
use strict;
my %web;
my($ip,$url);
while(<>){
        ($ip,$url)=split(/\s+/,$_);
if(exists $web{$ip}){
        $web{$ip}.=",$url";
}
else{
        $web{$ip} ="$url";

}

}
print "$_:$web{$_}\n" foreach keys(%web)

单命令行方法如下:

perl -lane '$a{$F[0]}.="$F[1],";END{print "$_\t$a{$_}"for keys %a}' url.txt

另外说下单命令行的几个参数的解释:
1:-e
可以让Perl程序在命令行上运行.
例如, 我们可以在命令行上运行 "Hello World" 程序而不用把它写入文件再运行.
$ perl -e 'print "Hello World\n"'

多个 -e 也可以同时使用, 运行顺序根据它出现的位置.
$ perl -e 'print "Hello ";' -e 'print "World\n"'
象所有的 Perl 程序一样, 只有程序的最后一行不需要以 ; 结尾.

2:-M
可以象通常一样引用模
$ perl -MLWP::Simple -e 'getstore ("http://www.163.com/","163.html")
'##下载整个网页
-M+模块名 和 use模块名一样

3:-n
增加了循环的功能, 使你可以一行一行来处理文件
$  perl -n -e'print;' 1.txt #####$  perl -ne 'print;' 1.txt
这与下面的程序一样.
LINE:
    while (<>){

 


     print;
    }

<>; 打开命令行里的文件,一行行的读取.每一行缺省保存在 $_
$ perl -n -e 'print "$. - $_"' file

上面的这一行可以写成
  LINE:

    while (<>){

 


      print "$. - $_"

    }
输出当前行数 $. 和当前行 $_.

4:-p ,和 -n 一样,但是还会打印 $_ 的内容


		

freeBSD能够ping出IP地址,但是不能上网,ping 域名或者IP时报:
ping: sendto: No route to host
是由于没有缺省网关,绑定下就OK了
route add default [gateway]
或者修改
route add -net 0.0.0.0/0 192.168.1.1
或者添加
/etc/rc.conf

defaultrouter=”192.168.1.1″

有一段数字

例如:

121232133812937819823
变为
121,232,133,812,937,819,823
方法:

[root@234267 mcshell]# echo "121232133812937819823"|perl -lne 'print$_,if(s/(\d+?(?=(?:\d{3})+$))/$1,/g)'
121,232,133,812,937,819,823

purge模块 清除缓存时有时会报403或者404

403的问题就是的ACL控制的问题

404的问题出现较多的,网上大家搜搜,应该能解决的,还有一个问题就是

location里面没有加入

proxy_cache_key $host$uri$is_args$args;

 

© 2012 mcshell learning blog By McShell