¡¡
1 web server status
- #!/bin/bash 
- #test web server http status 
- #20111011 by dongnan 
- for i in $(cat test);do 
-    #echo $i 
-    if curl -IL -m 2 $i 2>&1 | grep '200 OK' > /dev/null ;then 
-       echo "$i status is 200" 
-    elif curl -IL -m 2 $i 2>&1 | grep '403 Forbidden' > /dev/null ;then  
-       echo "$i status is 403" 
-    else 
-       echo "$i is bad" 
-    fi   
- done 
- #./domain.sh 
- www.aa.com status is 200 
- www.gunduzi.sb is bad 
- www.sx.sb is bad 
2 test url 502
- #!/bin/bash 
- #20111015 by dongnan
 
- #test the url 502 
- for((i=1;i<=50;i++));do  
-     if curl -LI http://www.a.com/set.php?id=123456 2>&1 | grep '502' > /dev/null ;then 
-         echo "echo $i 502" 
-     fi   
-     sleep 1; 
- done 
3 test cdn ip loop
- #!/bin/bash 
- #20111101 by dongnan 
- #test the cdn ip loop 
- for((i=1;i<=60;i++));do 
-  ping -c 1 *.cdns.com | grep -v PING | grep -i 'from' | awk '{print $4}' | sed -r 's/(:)|(\-BJ\-CNC)//g' 
- done 
测试
- ./cdn-loop.sh | sort | uniq -c 
-      20 123.1.1.1 
-      20 123.1.2.2 
-      20 21.1.3.3 
    4 测试 apache vhost
- grep -vE '^#|^[ \t].&#' httpd-vhosts.conf | grep ServerName | awk '{print $2}' >> bbs_vhost.txt
- while read line;do dig $line | grep -E 'IN.*A|IN.*CNAME'|grep -v '^;';done < bbs_vhost.txt 
- bbs.a.com. 956 IN A *.*.*.* 
- msn.bbs.a.com. 807 IN CNAME bbs.a.com. 
- bbs.a.com. 956 IN A *.*.*.* 
- bbsimg.a.com. 1460 IN A *.*.*.* 
- pq.a.com. 861 IN A *.*.*.* 
- wenda.a.com. 1794 IN A *.*.*.* 
5 批量上传ssh id_rsa.pub 公匙
自动: 需要使用 expect 命令
- cat auto_ssh_key.sh
 
- #!/bin/bash 
- #auto ssh key 
- #20111125 by dongnan
 
- #variables 
- hosts='2 3 4 5 6 7 8 9' 
- ip=10.100.100. 
- user=dn 
- password=mima 
- #function 
- 参考
- auto_ssh_copy_id () { 
-  expect -c "set timeout -1; 
-  spawn ssh-copy-id -i /home/dn/.ssh/id_rsa.pub $1; 
-  expect { 
-  *(yes/no)* {send -- yes\r;exp_continue;} 
-  *assword:* {send -- $2\r;exp_continue;} 
-  eof {exit 0;} 
-  }"; 
- } 
- for i in $hosts;do 
-  echo "${ip}$i" 
- # cat ~/.ssh/id_rsa.pub | ssh dn@${ip}$i "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat - >~/.ssh/authorized_keys && chmod 644 ~/.ssh/authorized_keys" 
-  auto_ssh_copy_id $user@${ip}$i $password 
- done 
    6 批量部署 .bash_profile ,前提需要 ssh通过私匙登陆ssh服务器
关于如何配置ssh key,请参考这里!
- $ grep -E 'space.$|bbs.$' /etc/hosts | awk '{print $1}' > hosts 
- $ while read line;do echo $line;scp ~/.bash_profile dn@${line}:/home/dn/;done < hosts 
-  10.100.100.2 
- .bash_profile 100% 622 0.6KB/s 00:00 
- 10.100.100.3 
- .bash_profile 100% 622 0.6KB/s 00:00 
- 10.100.100.4 
- .bash_profile 100% 622 0.6KB/s 00:00 
- ...... 
7 stdin and while
- cat install.log  | while read line;do echo $line ; wc -c;done 
- while read line;do echo $line | wc -c;done < install.log 
    8 自定义.bash_profile 文件!
- #将以下行添加到.bash_profile
- ip=$(/sbin/ifconfig eth1 | grep Bcast | sed -e 's/^.* addr:\(.*\) Bcast.*$/\1/') 
- if [ $ip ];then 
-     PS1="\[\e[32;1m\]$ip\[\e[0m\][\W]\$ " 
-     export PS1 
- fi 
- echo "[LOAD]";cat /proc/loadavg;echo "[DISK]";df -Th 
    9 统计用户登陆次数与 ip 地址
- #!/bin/bash 
- #chek login user 
- # 
- #variables 
- user=`id -u` 
- # 
- if [ $user -ne 0 ];then 
-  echo "must root !!" 
-  exit 1 
- fi 
- for i in `ls /var/log/secure*`;do 
-  echo "$i" 
-  #cat /var/log/secure | grep -i ' Accepted password' | awk '{print $9, $11}' | sort | uniq -c 
-  cat "$i" | grep -i ' Accepted password' | awk '{print $9, $11}' | sort | uniq -c 
- done
效果如下
- ./login.sh 
- /var/log/secure 
-       6 dn 100.100.100.99 
- /var/log/secure.1 
-      15 dn 100.100.100.99 
    10 统计bbs 文件夹大小,需要ssh-key 参考上面!
- #!/bin/bash 
- #du -sh 
- #variables 
- ip=100.100.100. 
- #hosts='24' 
- hosts='22 23 24 25 26 27 28 29' 
- for host in $hosts;do 
-  echo ${ip}$host 
-  ssh ${ip}$host "find /var/www/bbs/ -type d -name 'day*' | xargs du -h | awk '{print \$1}'" 
-  ssh ${ip}$host "du -sh /var/www/bbs/" 
- done 
    #ssh 传递 awk 命令时 "$" 需要使用"\"转义字符,例如:
- ssh ${ip}$host "df -h | grep -E '^/dev.*(/|/usr|/var)$' | awk '{print \$5,\$6}'" 
#统计硬盘使用情况
- cat bbs_df.sh 
- #!/bin/bash 
- #vdisk usage 
- #20111129 by dongnan 
- #variables 
- ip=10.100.100. 
- #hosts='102' 
- hosts='102 103 104 105 106 107 108 109' 
- for host in $hosts;do 
-  echo -en "${ip}$host " 
-  ssh ${ip}$host "df -h | grep -E '^/dev.*(/|/usr|/var)$' | awk '{print \$6,\$5}'" 
- done 
11 haproxy 服务脚本
- # cat /usr/local/sbin/haproxy.sh 
- #!/bin/bash 
- #haproxy command 
- #ver:0.1bate 
- #20111129 by dongnan 
- #/usr/local/haproxy/sbin/haproxy 
- #HA-Proxy version 1.4.18 2011/09/16 
- #Copyright 2000-2011 Willy Tarreau <w@1wt.eu> 
- # 
- #Usage : haproxy [-f <cfgfile>]* [ -vdVD ] [ -n <maxconn> ] [ -N <maxpconn> ] 
- # [ -p <pidfile> ] [ -m <max megs> ] 
- # -v displays version ; -vv shows known build options. 
- # -d enters debug mode ; -db only disables background mode. 
- # -V enters verbose mode (disables quiet mode) 
- # -D goes daemon 
- # -q quiet mode : don't display messages 
- # -c check mode : only check config files and exit 
- # -n sets the maximum total # of connections (2000) 
- # -m limits the usable amount of memory (in MB) 
- # -N sets the default, per-proxy maximum # of connections (2000) 
- # -p writes pids of all children to this file 
- # -de disables epoll() usage even when available 
- # -ds disables speculative epoll() usage even when available 
- # -dp disables poll() usage even when available 
- # -sf/-st [pid ]* finishes/terminates old pids. Must be last arguments. 
- #variables 
- haproxy_dir=/usr/local/haproxy/ 
- haproxy_conf=${haproxy_dir}haproxy.cfg 
- haproxy_pid=${haproxy_dir}logs/haproxy.pid 
- haproxy_cmd=${haproxy_dir}sbin/haproxy 
- #test variables 
- #file $haproxy_dir; file $haproxy_conf; file $haproxy_cmd; file $haproxy_pid 
- if [ "$#" -eq "0" ];then 
-  echo "usage: $0 {start|stop|restart}" 
-  exit 1 
- fi 
- if [ "$1" = "start" ];then 
- #echo $1 
-  $haproxy_cmd -f $haproxy_conf 
- elif [ "$1" = "stop" ];then 
- #echo $1 
-  kill `cat $haproxy_pid` 
- elif [ "$1" = "restart" ];then 
- #echo $1 
-  $haproxy_cmd -f $haproxy_conf -st `cat $haproxy_pid` 
- else 
-  echo "usage: $0 arguments only start and stop or restart !" 
- fi 
12 cpu load 测试
- $ cat load.sh
 
- #! /bin/sh 
- # filename killcpu.sh 
- for i in `seq $1` 
- do 
-  echo -ne " 
- i=0; 
- while true 
- do 
- ii=i+1; 
- done" | /bin/sh & 
-  pid_array[$i]=$! ; 
- done 
- for i in "${pid_array[@]}"; do 
-  echo 'kill ' $i ';'; 
- done 
- 使用方法很简单,参数3表示消耗3颗CPU的资源,运行后,会有一堆 kill 命令,方便 kill 进程: 
- [root@test02 ~]# ./killcpu.sh 3 
- kill 30104 ; 
- kill 30106 ; 
- kill 30108 ; 
13 haproxy 安装脚本
- cat haproxy_install.sh
 
 
- #!/bin/bash 
- #install haproxy 
- #20111207 by dongnan 
- #variables 
- dir=/usr/local 
- ha_dir=${dir}/haproxy 
- ha_cfg=${ha_dir}/haproxy.cfg 
- kernel=`uname -r | grep '2.6'` 
- pcre=$(rpm -qa | grep 'pcre' | wc -l) 
- echo "$dir, $ha_dir, $ha_cfg, $kernel, $pcre" 
- #check 
- if [ ! "$kernel" -o "$pcre" -lt "2" ];then 
-  echo -e "the script need linux 2.6 kernel and pcre pcre-devel \nyou can usage 'yum install pcre pcre-devel' or 'rpm -ivh pcre-devel-6.6-2.el5_1.7.x86_64.rpm'" 
-  exit 1 
- fi 
- #function 
- install_ha_cfg (){ 
-  #configure haproxy.cfg 
-  #default configure file for test,but need your change the frontend server and backend server ip address, 
-  #good luck! 
-  
-  echo ' 
-  global 
-  log 127.0.0.1 local0 
-  maxconn 4096 #最大连接数 
-  chroot /usr/local/haproxy #安装目录 
-  uid 99 #用户haproxy 
-  gid 99 #组haproxy 
-  daemon #守护进程运行 
-  nbproc 1 #进程数量 
-  pidfile /usr/local/haproxy/logs/haproxy.pid #haproxy pid 
-  
-  defaults 
-  log global 
-  mode http #7层 http;4层tcp 
-  option httplog #http 日志格式 
-  option httpclose #主动关闭http通道 
-  option redispatch #serverId对应的服务器挂掉后,强制定向到其他健康的服务器 
-  
-  option dontlognull 
-  maxconn 2000 #最大连接数 
-  contimeout 5000 #连接超时(毫秒) 
-  clitimeout 50000 #客户端超时(毫秒) 
-  srvtimeout 50000 #服务器超时(毫秒) 
-  
-  frontend haproxy_test #定义前端服务器(haproxy) 
-  bind 10.0.1.251:80 #监听地址 
-  default_backend server_pool #指定后端服务器群 
-  #errorfile 502 /usr/local/haproxy/html/maintain.html 
-  #errorfile 503 /usr/local/haproxy/html/maintain.html 
-  #errorfile 504 /usr/local/haproxy/html/maintain.html 
-  
-  backend server_pool #定义后端服务器群(web server/apache/nginx/iis..) 
-  mode http 
-  option forwardfor #后端服务器(apache/nginx/iis/*),从Http Header中获得客户端IP 
-  #balance roundrobin #负载均衡的方式,轮询方式 
-  balance leastconn #负载均衡的方式,最小连接 
-  cookie SERVERID #插入serverid到cookie中,serverid后面可以定义 
-  option httpchk HEAD /check.html #用来做健康检查html文档 
-  server server1 10.0.1.252:80 cookie server1 check inter 2000 rise 3 fall 3 weight 3 
-  server server2 10.0.1.253:80 cookie server2 check inter 2000 rise 3 fall 3 maxconn 120 weight 3 
-  server server3 10.0.1.254:80 cookie server3 check maxconn 90 rise 2 fall 3 weight 3 
-  #服务器定义: 
-  #cookie server1表示serverid为server1; 
-  #check inter 2000 是检测心跳频率(check 默认 ); 
-  #rise 3 表示 3次正确认为服务器可用; 
-  #fall 3 表示 3次失败认为服务器不可用; 
-  #weight 表示权重。 
-  
-  listen admin_stat #status 
-  bind *:8080 #监听端口 
-  mode http #http的7层模式 
-  stats refresh 30s #统计页面自动刷新时间 
-  stats uri /haproxy-stats #统计页面URL 
-  stats realm Haproxy\ Statistics #统计页面密码框上提示文本 
-  stats auth admin:admin #统计页面用户名和密码设置 
-  stats hide-version #隐藏统计页面上HAProxy的版本信息 
-  stats admin if TRUE #手工启用/禁用,后端服务器 
-  ' > "$ha_cfg" && sed -i '1 d' "$ha_cfg" 
- } 
- #install 
- if [ ! -e "$ha_dir" ];then 
-  tar zxf haproxy*.tar.gz 
-  cd haproxy*/ 
-  make TARGET=linux26 USE_STATIC_PCRE=1 PREFIX=/usr/local/haproxy && make install PREFIX=/usr/local/haproxy && mkdir /usr/local/haproxy/{html,logs} 
-  cd ../ 
- # 
-  if [ ! -e "$ha_dir" ];then 
-  echo "error! can't install haproxy please check ! Will now out of the script !" 
-  exit 1 
-  else 
-  ! grep 'haproxy' /etc/syslog.conf && echo 'local1.* /var/log/haproxy.log' >> /etc/syslog.conf 
-  sed -ir 's/SYSLOGD_OPTIONS="-m 0"/SYSLOGD_OPTIONS="-r -m 0"/g' /etc/sysconfig/syslog && /etc/init.d/syslog restart 
-  install_ha_cfg 
-  rm -rf haproxy*/ 
-  fi 
- else 
-  echo "haproxy is already exists!" 
- fi 
14 keepalived 安装脚本
- $ cat keepalived_install.sh 
- #!/bin/bash 
- #install keepalived 
- #20111209 by dongnan 
- #variables 
- keep_dir="/usr/local/keepalived/" 
- keep_conf="${keep_dir}keepalived.conf" 
- haproxy_dir="/usr/local/haproxy/" 
- #echo "$keep_dir $keep_conf $haproxy_dir" 
- #function 
- # 
- install_keepalived() { 
-  
-  local keepalived_type=$1 
-  
-  if [ ! -e "$keep_dir" ];then 
-  tar zxf keepalived*.tar.gz 
-  cd keepalived*/ 
-  ./configure --prefix=$keep_dir 
-  make && make install 
-  cd ../ 
-  
-  if [ ! -e "$keep_dir" ];then 
-  echo "error! can't install keepalived please check ! Will now out of the script !" 
-  exit 1 
-  else 
-  if [ "$keepalived_type" = "master" ];then 
-  echo 'master' 
-  cat keepalived.conf | sed -r 's/state BACKUP/state MASTER/g;s/nopreempt/#/g' > "$keep_conf" 
-  elif [ "$keepalived_type" = "backup" ];then 
-  echo 'backup' 
-  cat keepalived.conf > "$keep_conf" 
-  else 
-  echo 'backup-2' 
-  cat keepalived.conf | sed -r 's/priority 150/priority 100/g;s/nopreempt/#/g' > "$keep_conf" 
-  fi 
-  cp check_haproxy.sh "$keep_dir" 
-  rm -rf keepalived*/ 
-  fi 
-  
-  else 
-  echo "keepalived is Already exists!" 
-  fi 
- } 
- #main 
- case "$1" in 
-  master) 
-  install_keepalived $1 
-  ;; 
-  backup) 
-  install_keepalived $1 
-  ;; 
-  backup-2) 
-  install_keepalived $1 
-  ;; 
-  *) 
-  echo "Usage: $0 {master|backup|backup-2}" 
-  exit 1 
- esac 
15 keepalived 配置文档
- # cat cluster/keepalived.conf 
- global_defs { 
-  
-  notification_email { 
-  root@localhost 
-  } 
-  notification_mail_form root@localhost 
-  smtp_server 127.0.0.1 
-  smtp_connect_timeout 30 
-  
-  router_id haproxy 
- } 
- vrrp_sync_group VG1 { 
-  
-  group { 
-  VI_1 
-  } 
-  
- } 
- vrrp_instance VI_1 { 
-  state BACKUP 
-  nopreempt 
-  interface eth0 
-  
-  track_interface { 
-  eth0 
-  eth1 
-  } 
-  
-  virtual_router_id 51 
-  priority 150 
-  advert_int 1 
-  
-  authentication { 
-  auth_type PASS 
-  auth_pass 1111 
-  } 
-  
-  
-  virtual_ipaddress { 
-  192.168.57.77/24 dev eth0 scope global 
-  } 
-  
- } 
16 keepalived 服务脚本
- # cat /usr/local/sbin/keepalived.sh 
- #!/bin/bash 
- #keepalived 
- #ver:0.1bate 
- #20111211 by dongnan 
- #variables 
- keep_dir="/usr/local/keepalived/" 
- keep_conf="${keep_dir}keepalived.conf" 
- keep_sbin="${keep_dir}sbin/keepalived" 
- haproxy_check="${keep_dir}haproxy_check.sh" 
- haproxy_ps=$(ps -C haproxy --no-header |wc -l) 
- #main 
- case "$1" in 
-  start) 
-  if [ "$haproxy_ps" -ge "1" ];then 
-  $keep_sbin -f $keep_conf && $haproxy_check start & 
-  else 
-  echo "not found haproxy processes,please startup haproxy " 
-  exit 1 
-  fi 
-  ;; 
-  stop) 
-  killall keepalived && $haproxy_check stop & 
-  ;; 
-  *) 
-  echo "Usage: $0 {start|stop}" 
-  exit 1 
-  ;; 
- esac 
17 安全设置脚本
18 “haproxy + keepalived 一键安装包”  脚本
- # cat 1key_install.sh 
- #!/bin/bash 
- # 
- #install haproxy and keepalived 
- #configure: /usrl/local/keepalived/keepalived.conf ; /usr/local/haproxy/haproxy.cfg 
- #sbin: /usr/local/sbin/keepalived.sh ; /usr/local/sbin/haproxy.sh 
- #haproxy_check.sh: /usr/local/keepalived/haproxy_check.sh 
- #startup: /etc/rc.local 
- # 
- #1key_install.sh ver 0.1 
- #20111218 by dongnan Email:dngood@sina.com 
- # 
- #variables 
- sbin_dir=/usr/local/sbin/ 
- keepalived_dir=/usr/local/keepalived/ 
- startup=/etc/rc.local 
- #main 
- case "$1" in 
-  keepalived_type) 
- # 
-  bash ./haproxy_install.sh 
-  bash ./keepalived_install.sh "$2" 
- # 
-  ! ls "${sbin_dir}haproxy.sh" > /dev/null 2>&1 && cp ./haproxy.sh "$sbin_dir" 
-  ! ls "${sbin_dir}keepalived.sh" > /dev/null 2>&1 && cp ./keepalived.sh "$sbin_dir" 
-  ! ls "${keepalived_dir}haproxy_check.sh" > /dev/null 2>&1 && cp ./haproxy_check.sh "$keepalived_dir" 
-  chmod 700 "${keepalived_dir}haproxy_check.sh" 
- # 
-  ! grep 'haproxy.sh' "$startup" && echo "${sbin_dir}haproxy.sh start" >> "$startup" 
-  ! grep 'keepalived.sh' "$startup" && echo "${sbin_dir}keepalived.sh start" >> "$startup" 
-  ;; 
-  *) 
-  echo "Usage: $0 {keepalived_type backup}" 
-  echo " keepalived_type:master|backup|backup-2" 
-  exit 1 
-  ;; 
- esac 
19 haproxy 监控脚本
- # cat haproxy_check.sh 
- #!/bin/bash 
- # 
- #monitor haproxy 
- # 
- #haproxy_chekc.sh ver 0.3 bate 
- #20111218 by dongnan Email:dngood@sina.com 
- # 
- #0.3 bate版 
- #1 添加了简单容错功能,80端口故障后会再检查多次,如果故障次数超过规定的失败次数,则认定haproxy 失败,否则认定haproxy 正常;举个例子比如haproxy 并发比较大,没有向应监控脚本的请求,监控脚本记录失败次数1,依次执行10次,如果监控失败次数小于5(比如1次),则认为haproxy 正常,进入下次的监控,而不是像0.2版监控脚本一样,只要有一次80端口故障立马就切换了! 
- #2 为了方便keepalived.sh 调用此脚本,将脚本写成daemon形式可以设定监控脚本检查间隔时间(默认2s执行一次),不再需要依赖crontab来执行了,为方便调试脚本添加以启动和关闭监控脚本功能! 
- #variables 
- eth1_ip=$(/sbin/ifconfig eth1 | sed -n '/inet addr:/ s/inet addr://pg' | awk -F" " '{print $1}') 
- #eth0_ip=$(/sbin/ifconfig eth0 | sed -n '/inet addr:/ s/inet addr://pg' | awk -F" " '{print $1}') 
- eth1_url="http://${eth1_ip}:80" 
- #eth0_url="http://${eth0_ip}:80" 
- check_time=2 #检查间隔时间,2s 
- check_count=8 #故障后检查次数,8次 
- fault_count=4 #故障次���大于(4次),则认为不可用 
- keepalived_dir=/usr/local/keepalived/ 
- fault_log="${keepalived_dir}fault.log" 
- #function 
- check_haproxy(){ 
- pid_file="${keepalived_dir}haproxy_check.pid" 
-  echo "$$" > "$pid_file" && echo `cat $pid_file` 
-  keepalived=`ps -C keepalived --no-header |wc -l` 
-  
-  while true;do 
-  #检查时间,2s 
-  sleep "$check_time" # 
-  
-  if curl -IL -A "haproxy_check" "$eth1_url" > /dev/null 2>&1 ;then 
-  #if curl -IL -A "haproxy_check" "$eth0_url" > /dev/null 2>&1 && curl -IL -A "haproxy_check" "$eth1_url" > /dev/null 2>&1 ;then 
-  # 
-  continue 
-  # 
-  else 
-  # 
-  check_failed=0 
-  #故障后检查次数,8次 
-  for((i=1;i<="$check_count";i++));do 
-  
-  check_date=$(date '+ %F_%T') 
-  
-  if ! curl -IL -A "haproxy_check" "$eth1_url" > /dev/null 2>&1 ;then 
-  failed_count=$((check_failed++)) 
-  sleep 1 
-  fi 
-  #日志 
-  if [ "$keepalived" -ge "2" ];then 
-  echo -e "$check_date $eth1_url $check_failed \t fault" >> "$fault_log" 2>&1 
-  fi 
-  # 
-  done 
-  #检查失败次数大于故障次数,则停止keepalived 
-  if [ "$failed_count" -gt "$fault_count" ];then 
-  killall keepalived && /etc/init.d/network restart 
-  #mail -s 'haproxy and keepalived fault' root@localhost 
-  break 2 
-  fi 
-  fi 
-  done 
-  # 
- } 
- #main 
- case "$1" in 
-  start) 
-  check_haproxy 
-  ;; 
-  stop) 
-  #echo `cat $pid_file` 
-  kill `cat "${keepalived_dir}haproxy_check.pid"` 
-  ;; 
-  restart) 
-  echo "Sorry The next version will realize this function !!!" 
-  ;; 
-  *) 
-  echo "Usage: $0 {start|stop|restart}" 
-  exit 1 
-  ;; 
- esac 
    20 iptables 脚本
- $cat /root/sh/iptables.sh
- #!/bin/bash 
- #Define variable 
- IPTABLES=/sbin/iptables 
- INTRANET="100.100.100.0/24" 
- Company="123.x.x.x" 
- Company1="202.x.x.x" 
- sy="119.x.x.x/27" 
- sj1="5x.x.x.x/26" 
- sj2="5x.x.x.x/28" 
- sj3="5x.x.x.x/28" 
- $IPTABLES -F 
- $IPTABLES -X 
- $IPTABLES -P FORWARD DROP 
- $IPTABLES -P INPUT DROP 
- echo "#Allow all at the loopback and INTRANET and shunyi sjhl" 
- $IPTABLES -A INPUT -i lo -j ACCEPT 
- $IPTABLES -A INPUT -s $INTRANET -j ACCEPT 
- $IPTABLES -A INPUT -s $sy -j ACCEPT 
- $IPTABLES -A INPUT -s $sj1 -j ACCEPT 
- $IPTABLES -A INPUT -s $sj2 -j ACCEPT 
- $IPTABLES -A INPUT -s $sj3 -j ACCEPT 
- $IPTABLES -A INPUT -s $Company -j ACCEPT 
- $IPTABLES -A INPUT -s $Company1 -j ACCEPT 
- echo "#Accepting HTTP" 
- $IPTABLES -A INPUT -p tcp -s 0/0 --dport 80 -j ACCEPT 
- echo "ALLOW PING" 
- #$IPTABLES -A INPUT -i eth0 -p icmp -j ACCEPT 
- echo "#Allow alive conn" 
- $IPTABLES -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
21
22
23 memcached 安装脚本
- $ cat mem/memcached_install.sh 
- #!/bin/bash 
- #install memcached 
- #ver: 0.1bate 
- #20111230 by dongnan 
- #variables 
- dir="/usr/local/" 
- libevent_dir=${dir}libevent 
- memcached_dir=${dir}memcached 
- sbin_dir="${dir}sbin/" 
- #main 
- #check libevent 
- if [ ! -d "$libevent_dir" ];then 
-  tar zxvf libevent*.tar.gz 
-  cd libevent*/ 
-  ./configure --prefix="$libevent_dir" 
-  make && make install 
-  cd ../ 
- # 
- sleep 2 
-  if [ -d "$libevent_dir" ];then 
-  echo "libevent is ok" 
-  rm -rf libevent*/ 
-  else 
-  echo "error! can't install libevent please check ! Will now out of the script!" 
-  exit 1 
-  fi 
- else 
-  echo "libevent is already exists!" 
- fi 
- #memcached 
- if [ ! -d "$memcached_dir" ];then 
-  tar zxvf memcached*.tar.gz 
-  cd memcached*/ 
-  ./configure --prefix="$memcached_dir" --with-libevent="$libevent_dir" 
-  make && make install 
-  cd ../ 
- # 
- sleep 2 
-  if [ -d "$memcached_dir" ];then 
-  echo "memcached is ok" 
-  rm -rf memcached*/ 
-  ! ls "${sbin_dir}memcached.sh" > /dev/null 2>&1 && cp ./memcached.sh "$sbin_dir" && chmod 700 "${sbin_dir}memcached.sh" 
-  else 
-  echo "error! can't install memcached please check ! Will now out of the script!" 
-  exit 1 
-  fi 
- else 
-  echo "memcached is already exists!" 
- fi 
    24 memcached 服务脚本
- $ cat mem/memcached.sh 
- #!/bin/bash 
- #memcached 
- #ver:0.1bate 
- #20111230 by dongnan 
- #variables 
- mem_dir="/usr/local/memcached/" 
- mem_pid="/var/run/memcached.pid" 
- mem_sbin="${mem_dir}bin/memcached" 
- mem_size="64" 
- mem_ip=$(/sbin/ifconfig eth1 | sed -n '/inet addr:/ s/inet addr://pg' | awk -F" " '{print $1}') 
- mem_port="11211" 
- mem_max_con="10000" 
- #main 
- case "$1" in 
-  start) 
-  $mem_sbin -d -u root -m "$mem_size" -l "$mem_ip" -p "$mem_port" -c "$mem_max_con" -P "$mem_pid" 
-  ;; 
-  stop) 
-  kill $(cat $mem_pid) 
-  ;; 
-  *) 
-  echo "Usage: $0 {start|stop}" 
-  exit 1 
-  ;; 
- esac 
25# Nginx 分割日志脚本
- $ cat nginx_log.sh 
- #!/bin/bash 
- #split log 
- # 
- #Nginx 
- #Signal Action 
- #TERM, INT Terminate the server immediately 
- #QUIT Stop the server 
- #HUP Configuration changes, start new workers, graceful stop of old workers 
- #USR1 Reopen log files 
- #USR2 Upgrade the server executable 
- #WINCH Graceful Stop (parent process advise the children to exit) 
- #variables 
- log_dir=/data/logs/yum/ 
- log_date=$(date +'%F') 
- nginx_pid=/usr/local/nginx/logs/nginx.pid 
- keep_days=30 
- #old_log 
- find "$log_dir" -name "*\.log" -type f -mtime +${keep_days} -exec rm -rf {} \; 
- #new_log 
- if [ -e ${log_dir}access-${log_date}.log ];then 
-  echo "Already exists" && exit 1 
- else 
-  /bin/mv ${log_dir}access.log ${log_dir}access-${log_date}.log && /bin/kill -USR1 $(cat $nginx_pid) 
- fi 
26 # php 文件发布脚本
-  cat rsync_www.sh 
- #!/bin/bash 
- # 
- #/usr/bin/rsync -avz --password-file=/root/rsync_pw /var/www/test/test rsync@10.0.100.82::www/test 
- #echo "rsync_password" > rsync_pw && chmod 600 rsync_pw 
- #variables 
- #HOSTS="10.0.100.82 10.0.100.81 10.0.100.83" 
- HOSTS="10.0.100.82" 
- MOD=www 
- MAILADD="root@localhost" 
- DATE=`date +%F_%T` 
- src_dir=/var/www/html/ 
- rsync_pw=/root/sh/rsync_pw 
- rsync_user=dongnan 
- rsync_file_dir=/var/www/rsync/ 
- log_dir=/var/www/rsync/log/ 
- regular_replace=/data/ 
- #USERNAME=`logname` 
- if [ -n "$SUDO_USER" ];then 
- USERNAME=`echo $SUDO_USER` 
- else 
- USERNAME="root" 
- fi 
- #function 
- rsync_www(){ 
-  for host in $HOSTS;do 
-  #if /usr/bin/rsync -avz ${src_dir}$1 $host::${MOD}/$1;then 
-  if /usr/bin/rsync -avz --password-file="$rsync_pw" ${src_dir}$1 ${rsync_user}@${host}::${MOD}/$1;then 
-  echo "$DATE ${src_dir}$1 rsync to $host ok by $USERNAME" >> ${log_dir}rsync.ok 
-  else 
-  echo "$DATE ${src_dir}$1 rsync to $host error by $USERNAME" >> ${log_dir}rsync.error 
-  echo "$DATE ${src_dir}$1 rsync to $host error by $USERNAME."| mail -s "rsync error" $MAILADD 
-  fi 
- done 
- } 
- #main 
- #删除空白或空行 
- sed -ri 's/^[ \t]+//g;/^$/d' ${rsync_file_dir}rsync_file.list 
- # 
- sed -e 's#/var/www/html/##g' ${rsync_file_dir}rsync_file.list > ${log_dir}rsync.tmp 
- while read line;do 
-  if [ ! -d "$src_dir$line" -a ! -f "$src_dir$line" ];then 
-  echo "$DATE ${src_dir}$line is't existence by $USERNAME!!!" | tee -a ${log_dir}rsync.error | mail -s "rsync error" $MAILADD 
-  else 
-  rsync_www $line 
-  fi 
- done < ${log_dir}rsync.tmp 
27
28
29
30
31 cygwin 专用
- #!/bin/bash 
- # 
- # 
- #variables 
- pid_dir=/var/run/ 
- rsync_pid=${pid_dir}rsync.pid 
- rsync_src_dir="/cygdrive/f/WebSite/brandimg /cygdrive/f/WebSite/fashion.yoka.com" 
- loop_time=600 
- #function 
- #echo "$$" > "$rsync_pid" && cat "$rsync_pid" 
- rsync_start (){ 
-  while true;do 
-  for src in $rsync_src_dir ;do 
-  ls $src 
-  done 
-  sleep "$loop_time" 
-  done 
- } 
- rsync_pid (){ 
- ps aux |awk '/(bash|sleep|sh)$/ {print$1,$3}'| awk 'NR>1&&$NF==var{print line "\n"$0}{line=$0;var=$NF}' | awk '{print $1}'> /var/run/rsync.pid 
- } 
- rsync_stop (){ 
-  while read line;do 
-  #kill "$line" 
-  echo "$line" 
-  done < $rsync_pid 
- } 
- #main 
- case "$1" in 
-  start) 
-  rsync_start & 
-  rsync_pid 
-  ;; 
-  stop) 
-  rsync_stop 
-  ;; 
-  *) 
-  echo "Usage: $0 {start|stop}" 
-  exit 1 
-  ;; 
- esac 
# seq 一例子
- #!/bin/bash 
- #usage seq of loop 
- #NAME 
- # seq - print a sequence of numbers 
- # 
- #SYNOPSIS 
- # seq [OPTION]... LAST 
- # seq [OPTION]... FIRST LAST 
- # seq [OPTION]... FIRST INCREMENT LAST 
- # 
- #DESCRIPTION 
- # Print numbers from FIRST to LAST, in steps of INCREMENT. 
- for i in $(seq -s ':' 1 10);do 
-  echo $i 
- done 
- # 
- for i in {1..10};do 
-  echo $i 
- done 
# 测试Hadoop HDFS
- $ cat test_hdfs.sh
- #!/bin/bash 
- #test the hadoop HDFS 
- #date +%H%N 随机数 
- ######%N########nanoseconds (000000000..999999999) 亿分之一秒时间"纳秒" 
- ######%H########hour (00..23)以小时为时间戳
 
- #echo $RANDOM 
- #/dev/random 
- #variables 
- loop=5000 
- bs=5k 
- count=1 
- dfs_dir=/data/dfs/ 
- #main 
- for((j=1;j<=100;j++));do 
-  mkdir -p ${dfs_dir}$j 
- #echo $dfs_dir && exit 1 
- # 
- sleep 1 
- cat /dev/null > file 
- # 
- sleep 5 
- for ((i=1;i<=$loop;i++));do 
- date +%H%N >> file 
- done 
- # 
- sleep 10 
- while read line ;do 
- dd if=/dev/zero of=${dfs_dir}$j/$line bs=$bs count=$count > /dev/null 2>&1 && usleep 10000 
- #echo "$i" > ${dfs_dir}$line && usleep 10000 
- echo $line 
- done < file 
- done 
# 挂载CIFS
- #!/bin/bash 
- #completed by dongnan 
- #Mount windows CIFS 
- #variables 
- cifs_ip=192.168.1.100 
- cifs_user=administrator 
- cifs_pw=dongnan 
- cifs_share=aa 
- mount_point=/mnt/fat 
- mount=/sbin/mount.cifs 
- user_id=$(id -u) 
- #main 
- if [ "$user_id" -ne 0 ];then 
-  echo "must root or SUDO_USER !!" 
-  exit 1 
- fi 
- if mount | grep -E "$cifs_share|$cifs_ip" > /dev/null 2>&1;then 
-  echo "Has been mounted" 
-  exit 1 
- fi 
- $mount -o "username=$cifs_user,password=$cifs_pw" //${cifs_ip}/$cifs_share $mount_point 
# 统计windows 服务器 20120531
- cat find_windows.sh 
- #!/bin/bash 
- #test windows remote desktop 3389 port 
- for i in {1..254};do nc -nvz -w 2 10.0.0.$i 3389 >/dev/null 2>&1 && echo 10.0.0.$i | tr '\n' ' '; done 
# 统计ESXi 服务器 20120601
- cat find_esxi.sh 
- #!/bin/bash 
- #ESXi port 443 and 902 
- for ip in 0 1;do 
- for i in {1..254};do nc -nz -w 2 10.0.${ip}.${i} 443 >/dev/null 2>&1 && nc -nz 10.0.${ip}.${i} 902 >/dev/null 2>&1 && echo 10.0.${ip}.${i} | tr '\n' ' '; done 
- done 
#多台linux服务器添加帐号,并添加到sudoers 20120605
- cat add-user.sh 
- #!/bin/bash 
- #add user for this host 
- #20120604 by dongnan 
- #variables 
- ip=10.0.0. 
- hosts='201 202 203 204 205' 
- user='dongnan' 
- pw='dongnan' 
- for host in $hosts;do 
-  echo "${ip}$host" 
-  ssh ${ip}$host "useradd $user && echo $pw | passwd --stdin $user && sed -ir '/^root.*ALL$/ a $user ALL=(ALL) ALL' /etc/sudoers" 
-  #ssh ${ip}$host userdel -r $user 
- done
# 
本文出自 “dongnan” 博客。