Submitted by admin on 2009, August 12, 1:33 PM
封超过100个连接的IP:
#!/bin/sh
/bin/netstat -na|grep ESTABLISHED|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -rn|grep -v -E '172.16|127.0'|awk '{if ($2!=null && $1>100) {print $2}}'>/tmp/dropip
for i in $(cat /tmp/dropip)
do
/sbin/iptables -I INPUT -p tcp -m tcp -s $i --dport 80 --syn -j REJECT
echo "$i kill at `date`">>~river/ddos
done
脚本代码 | 评论:0
| Trackbacks:0
| 阅读:1526
Submitted by admin on 2009, August 11, 3:41 PM
1. 自动ssh/scp方法==
A为本地主机(即用于控制其他主机的机器) ;
B为远程主机(即被控制的机器Server), 假如ip为192.168.60.110;
A和B的系统都是Linux
在A上运行命令:
# ssh-keygen -t rsa (连续三次回车,即在本地生成了公钥和私钥,不设置密码)
# ssh root@192.168.60.110 "mkdir .ssh" (需要输入密码)
# scp ~/.ssh/id_rsa.pub root@192.168.60.110:.ssh/id_rsa.pub (需要输入密码)
在B上的命令:
# touch /root/.ssh/authorized_keys (如果已经存在这个文件, 跳过这条)
# cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys (将id_rsa.pub的内容追加到authorized_keys 中)
回到A机器:
# ssh root@192.168.60.110 (不需要密码, 登录成功)
2. 控制n个机器如上所述自动登录
那就需要n对钥匙(密钥和公钥), ssh-keygen 命令可以随意更改钥匙对的名字, 比如:
# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): /root/.ssh/id_rsa_192.168.60.110
这样私钥和公钥的名字分别就是: id_rsa_192.168.60.110和 id_rsa_192.168.60.110.pub;然后将 id_rsa_192.168.60.110.pub 文件的内容, 追加到sever的 ~/.ssh/authorized_keys文件中,最后, 在本地用ssh命令的 -i 参数指定本地密钥, 并登录:
# ssh -i /root/.ssh/id_rsa_192.168.60.110 someone@192.168.60.110
scp也是一样的
# scp -i /root/.ssh/id_rsa_192.168.60.110 filename someone@192.168.60.110:/home/someone
在文件.bashrc中加下两行,每次做同样的操作就不用敲入这样长的命令了:
alias sshcell='ssh -i /root/.ssh/id_rsa_192.168.60.110 someone@192.168.60.110'
alias scpcell='scp -i /root/.ssh/id_rsa_192.168.60.110 filename someone@192.168.60.110:/home/someone'
这样,直接键入一下指令实现ssh和scp自动登录:
# sshcell
# scpcell
3. 自动ssh/scp脚本
如果需要从A,到B,然后才能够到C,那么需要ssh和scp两次,是比较麻烦的。
ssh自动登录:
#!/usr/bin/expect -f
set timeout 30
spawn ssh weiqiong@B
expect "password:"
send "pppppp\r"
expect "]*"
send "ssh weiqiong@C\r"
expect "password:"
send "pppppp\r"
interact
scp从A拷贝文件到C:
#!/usr/bin/expect -f
set timeout 300
set file [lindex $argv 0]
spawn scp $file weiqiong@B:/home/weiqiong
expect "password:"
send "pppppp\r"
expect "]*"
spawn ssh weiqiong@B
expect "password:"
send "pppppp\r"
expect "]*"
send "scp $file weiqiong@C:/home/weiqiong\r"
expect "password:"
send "pppppp\r"
expect "]*"
exit
interact
scp从C拷贝文件到A:
#!/usr/bin/expect -f
set timeout 300
set file [lindex $argv 0]
spawn ssh weiqiong@B
expect "password:"
send "pppppp\r"
expect "]*"
send "scp weiqiong@C:/home/weiqiong/$file .\r"
expect "password:"
send "pppppp\r"
expect "]*"
send "exit\r"
expect "]*"
spawn scp weiqiong@B:/home/weiqiong/$file .
expect "password:"
send "pppppp\r"
interact
4. 建立ssh/scp通道
比如说我的机器是A,中间服务器为B,目标服务器是C<br>
从A可以ssh到B,从B可以ssh到C,但是A不能直接ssh到C<br>
现在展示利用ssh通道技术从A直接传输文件到C<br>
1. ssh -L1234:C:22 userid@B<br>
input B's password<br>
(1234是本机A的空闲端口,该指令需要A机器上的root用户权限,实际上是在本机1234端口建立了一个通道)<br>
2. 打开一个新的console,键入:<br>
scp -P1234 filename userid@localhost:<br>
input C's password
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/netzsm/archive/2007/09/13/1783055.aspx
linux | 评论:0
| Trackbacks:0
| 阅读:1678
Submitted by admin on 2009, August 8, 4:05 PM
round函数可以截取小数点的位置,且可以进位,但如是小数点后的数为0时,也会去掉
如下函数可以达到效果
$money="122.0";
$formatted = sprintf("%.1f", $money);
echo $formatted;
$formatted=number_format($money, 1);
php | 评论:0
| Trackbacks:0
| 阅读:1906
Submitted by admin on 2009, August 5, 11:14 AM
$ curl -o /dev/null -s -w %{time_connect}:%{time_starttransfer}:%{time_total} http://www.canada.com 0.081:0.272:0.779
|
清单 1 给出对一个流行的新闻站点执行 curl 命令的情况。输出通常是 HTML 代码,通过 -o 参数发送到 /dev/null。-s 参数去掉所有状态信息。-w 参数让 curl 写出表 1 列出的计时器的状态信息:
表 1. curl 使用的计时器
| 计时器 |
描述 |
| time_connect |
建立到服务器的 TCP 连接所用的时间 |
| time_starttransfer |
在发出请求之后,Web 服务器返回数据的第一个字节所用的时间 |
| time_total |
完成请求所用的时间 |
这些计时器都相对于事务的起始时间,甚至要先于 Domain Name Service(DNS)查询。因此,在发出请求之后,Web 服务器处理请求并开始发回数据所用的时间是 0.272 – 0.081 = 0.191 秒。客户机从服务器下载数据所用的时间是 0.779 – 0.272 = 0.507 秒。
通过观察 curl 数据及其随时间变化的趋势,可以很好地了解站点对用户的响应性。
当然,Web 站点不仅仅由页面组成。它还有图像、JavaScript 代码、CSS 和 cookie 要处理。curl 很适合了解单一元素的响应时间,但是有时候需要了解整个页面的装载速度。
这里介绍一个使用curl监控页面可用性的方法。
可以使用下面的命令,来采集页面的状态码。如果这条命令返回结果为200,说明服务正常。如果返回的是其他的页面,说明异常。
curl -o /dev/null -s -w %{http_code} http://zys.8800.org/
-o 参数,是把下载的所有内容都重定向到/dev/null,-s命令,是屏蔽了curl本身的输出,而-w参数,是根据我们自己的需要,自定义了curl的输出格式。
使用这条命令,再配合邮件和短信,就可以实现对页面的可用性监控。将这个程序部署在全国各地的机器上,就可以对cdn网络进行可用性监控。
工具箱 | 评论:0
| Trackbacks:0
| 阅读:1500
Submitted by admin on 2009, July 22, 10:23 AM
省份/城市 DNS 名称 DNS IP ADDRESS
==========================================================
香港 ns1.netvigator.com 205.252.144.228
澳门 vassun2.macau.ctm.net 202.175.3.8
深圳 ns.shenzhen.gd.cn 202.96.134.133
202.96.154.8
202.96.154.15
北京 ns.bta.net.cn 202.96.0.133
ns.spt.net.cn 202.96.199.133
ns.cn.net 202.97.16.195
202.106.0.20
202.106.148.1
202.106.196.115
广东 ns.guangzhou.gd.cn 202.96.128.143
dns.guangzhou.gd.cn 202.96.128.68
上海 ns.sta.net.cn 202.96.199.132
202.96.199.133
202.96.209.5
202.96.209.133
浙江 dns.zj.cninfo.net 202.96.102.3
202.96.96.68
202.96.104.18
陕西 ns.snnic.com 202.100.13.11
西安: 202.100.4.15
202.100.0.68
天津 ns.tpt.net.cn 202.99.96.68
辽宁 ns.dcb.ln.cn 202.96.75.68
202.96.75.64
202.96.64.68
202.96.69.38
202.96.86.18
202.96.86.24
江苏 pub.jsinfo.net 202.102.29.3
202.102.13.141
202.102.24.35
安徽:
202.102.192.68
202.102.199.68
四川 ns.sc.cninfo.net 61.139.2.69
重庆 61.128.128.68
61.128.192.4
成都: 202.98.96.68
202.98.96.69
河北 ns.hesjptt.net.cn 202.99.160.68
保定: 202.99.160.68
202.99.166.4
山西 ns.sxyzptt.net.cn 202.99.198.6
吉林 ns.jlccptt.net.cn 202.98.5.68
山东 202.102.152.3
202.102.128.68
福建 dns.fz.fj.cn 202.101.98.55
湖南 202.103.100.206
广西 10.138.128.40
202.103.224.68
202.103.225.68
江西 202.109.129.2
202.101.224.68---j江西电信DNS
202.101.226.68---江西电信DNS
202.101.240.36 ---江西电信DNS
云南 ns.ynkmptt.net.cn 202.98.160.68
河南: 202.102.227.68
202.102.224.68
202.102.245.12
新疆: 61.128.97.73
乌鲁木齐 61.128.97.73
61.128.97.74
武汉: 202.103.24.68
202.103.0.117
厦门两个
202.101.103.55
202.101.103.54
山东的: 202.102.134.68
长沙
202.103.96.68
202.103.96.112
一些教育网内的----不一定好用
202.203.128.33 cernet云南中心主dns
202.203.128.34
210.14.232.241 and 203.93.19.133 罗湖
202.112.10.37 长安
202.115.64.33 and 202.115.64.34 西南交大
202.201.48.1 and 202.201.48.2 nwnu
210.33.116.112 浙江电大
202.116.160.33 华南农业
202.114.240.6 wust
202.194.48.130 ytnc
202.114.0.242 and 202.112.20.131 华中科大
202.202.128.33 and 202.202.128.34 重庆医科大?西安交大?
202.112.0.33 and 202.112.0.34 cernet 华北网
210.38.192.33 韶关
网络技术 | 评论:0
| Trackbacks:0
| 阅读:1446
Submitted by admin on 2009, July 21, 5:33 PM
<?php
//
// Function: 获取远程图片并把它保存到本地
//
//
// 确定您有把文件写入本地服务器的权限
//
//
// 变量说明:
// $url 是远程图片的完整URL地址,不能为空。
// $filename 是可选变量: 如果为空,本地文件名将基于时间和日期
// 自动生成.
function GrabImage($url,$filename="") {
if($url==""):return false;endif;
if($filename=="") {
$ext=strrchr($url,".");
if($ext!=".gif" && $ext!=".jpg"):return false;endif;
$filename=date("dMYHis").$ext;
}
ob_start();
readfile($url);
$img = ob_get_contents();
ob_end_clean();
$size = strlen($img);
$fp2=@fopen($filename, "a");
fwrite($fp2,$img);
fclose($fp2);
return $filename;
}
$img=GrabImage("http://tech.51099.com/_1978837_detector_ap100.jpg","");
if($img):echo '<pre><img src="'.$img.'"></pre>';
else:echo "false";
endif;
?>
php | 评论:0
| Trackbacks:0
| 阅读:1466
Submitted by admin on 2009, July 9, 6:02 PM
命令一句话(整理)更新
1.删除0字节文件
find -type f -size 0 -exec rm -rf {} \;
2.查看进程
按内存从大到小排列
ps -e
-o "%C : %p : %z : %a"|sort -k5 -nr
3.按cpu利用率从大到小排列
ps -e -o "%C : %p : %z : %a"|sort -nr
4.打印说cache里的URL
grep -r -a jpg /data/cache/* | strings | grep "http:" | awk -F'http:' '{print "http:"$2;}'
5.查看http的并发请求数及其TCP连接状态:
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
---------------------------------------------------------------------------------------
1. sed -i '/Root/s/no/yes/' /etc/ssh/sshd_config sed在这个文里Root的一行,匹配Root一行,将no替换成yes.
2.1.如何杀掉mysql进程:
ps aux|grep mysql|grep -v grep|awk '{print $2}'|xargs kill -9 (从中了解到awk的用途)
killall -TERM mysqld
kill -9 `cat /usr/local/apache2/logs/httpd.pid` 试试查杀进程PID
3.显示运行3级别开启的服务:
ls /etc/rc3.d/S* |cut -c 15- (从中了解到cut的用途,截取数据)
4.如何在编写SHELL显示多个信息,用EOF
cat << EOF
+--------------------------------------------------------------+
| === Welcome to Tunoff services === |
+--------------------------------------------------------------+
EOF
5. for 的巧用(如给mysql建软链接)
cd /usr/local/mysql/bin
for i in *
do ln /usr/local/mysql/bin/$i /usr/bin/$i
done
6. 取IP地址:
ifconfig eth0 |grep "inet addr:" |awk '{print $2}'|cut -c 6- 或者
ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'
7.内存的大小:
free -m |grep "Mem" | awk '{print $2}'
8.
netstat -an -t | grep ":80" | grep ESTABLISHED | awk '{printf "%s %s\n",$5,$6}' | sort
9.查看Apache的并发请求数及其TCP连接状态:
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
10.因为同事要统计一下服务器下面所有的jpg的文件的大小,写了个shell给他来统计.原来用xargs实现,但他一次处理一部分,搞的有多个总和....,下面的命令就能解决啦.
find / -name *.jpg -exec wc -c {} \;|awk '{print $1}'|awk '{a+=$1}END{print a}'
CPU的数量(多核算多个CPU,cat /proc/cpuinfo |grep -c processor)越多,系统负载越低,每秒能处理的请求数也越多。
--------------------------------------------------------------------------------------------------------------------
1 CPU负载 # cat /proc/loadavg
检查前三个输出值是否超过了系统逻辑CPU的4倍。
2 CPU负载 #mpstat 1 1
检查%idle是否过低(比如小于5%)
3 内存空间 # free
检查free值是否过低 也可以用 # cat /proc/meminfo
4 swap空间 # free
检查swap used值是否过高 如果swap used值过高,进一步检查swap动作是否频繁:
# vmstat 1 5
观察si和so值是否较大
5 磁盘空间 # df -h
检查是否有分区使用率(Use%)过高(比如超过90%) 如发现某个分区空间接近用尽,可以进入该分区的挂载点,用以下命令找出占用空间最多的文件或目录:
# du -cks * | sort -rn | head -n 10
6 磁盘I/O负载 # iostat -x 1 2
检查I/O使用率(%util)是否超过100%
7 网络负载 # sar -n DEV
检查网络流量(rxbyt/s, txbyt/s)是否过高
8 网络错误 # netstat -i
检查是否有网络错误(drop fifo colls carrier) 也可以用命令:# cat /proc/net/dev
9 网络连接数目 # netstat -an | grep -E “^(tcp)” | cut -c 68- | sort | uniq -c | sort -n
10 进程总数 # ps aux | wc -l
检查进程个数是否正常 (比如超过250)
11 可运行进程数目 # vmwtat 1 5
r列给出的是可运行进程的数目,检查其是否超过系统逻辑CPU的4倍
12 线程数目
13 进程 # top -id 1
观察是否有异常进程出现
14 网络状态 检查DNS, 网关等是否可以正常连通
15 用户 # who | wc -l
检查登录用户是否过多 (比如超过50个) 也可以用命令:# uptime
16 系统日志 # cat /var/log/rflogview/*errors
检查是否有异常错误记录 也可以搜寻一些异常关键字,例如:
# grep -i error /var/log/messages
# grep -i fail /var/log/messages
17 核心日志 # dmesg
检查是否有异常错误记录
18 系统时间 # date
检查系统时间是否正确
19 打开文件数目 # lsof | wc -l
检查打开文件总数是否过多
20 日志 # logwatch –print 配置/etc/log.d/logwatch.conf,将 Mailto 设置为自己的email 地址,启动mail服务 (sendmail或者postfix),这样就可以每天收到日志报告了。
缺省logwatch只报告昨天的日志,可以用# logwatch –print –range all 获得所有的日志分析结果。
可以用# logwatch –print –detail high 获得更具体的日志分析结果(而不仅仅是出错日志)。
21.杀掉80端口相关的进程
lsof -i :80|grep -v "PID"|awk '{print "kill -9",$2}'|sh
22.清除僵死进程。
ps -eal | awk '{ if ($2 == "Z") {print $4}}' | kill -9
linux | 评论:0
| Trackbacks:0
| 阅读:1484
Submitted by admin on 2009, July 8, 4:54 PM
安装升级ssl
rpm -qa | grep "openssl"
yum update openssl
http://labs.xiaonei.com/apache-mirror/httpd/httpd-2.0.63.tar.gz
http://cn2.php.net/get/php-5.3.0.tar.gz/from/this/mirror
http://cn.php.net/get/php-5.2.10.tar.gz/from/cn2.php.net/mirror
http://www.openssl.org/source/openssl-0.9.8k.tar.gz
openssl
tar && cd
./config;make;make install
tar && cd
./configure --prefix=/www/servers/httpd20 --enable-so --with-rewrite --enable-expires --enable-ssl --with-ssl=/usr
or
./configure --prefix=/www/servers/httpd20 --enable-so --enable-ssl=static --with-ssl=/usr/local/ssl
make;make install
php (5.3无法解释PHP)
tar && cd
./configure --prefix=/www/servers/php5 --with-apxs2=/www/servers/httpd201/bin/apxs --with-mysql=/www/servers/mysql5 --with-gd=/usr/local/gd --enable-gd-native-ttf --with-jpeg-dir=/usr/local/jpeg --with-png-dir=/usr --enable-gd-native-ttf --with-zlib --with-freetype-dir=/usr/local/freetype --with-iconv --enable-mbstring --enable-ftp
faq
Q:
Session Cache is not configured
Q:
打开网页提示选择证书
A:
ssl.conf
SSLVerifyClient require
SSLVerifyDepth 10
URL:
http://snailwarrior.blog.51cto.com/680306/137657
http://www.javayou.com/diary/617
apache/web | 评论:0
| Trackbacks:0
| 阅读:1598