Shell实用实例参考

目录

  • 1. 启用 shell
  • 2. htpasswd 密码批量生成
  • 3. firewall

1. 启用 shell

1 解决重复运行问题

1 记录PID以便可以停止Shell运维

		#!/bin/bash
##############################################
# $Author: netkiller $
# $Id: shell.xml 449 2012-08-10 10:38:08Z netkiller $
##############################################
NAME=info
BASEDIR='/www'
PROG=$BASEDIR/bin/$(basename $0)
LOGFILE=/var/tmp/$NAME.log
PIDFILE=/var/tmp/$NAME.pid
##############################################
PHP=/usr/local/webserver/php/bin/php
##############################################
#echo $$
#echo $BASHPID
function start(){
	if [ -f "$PIDFILE" ]; then
		echo $PIDFILE
		exit 2
	fi

	for (( ; ; ))
	do
		cd $BASEDIR/crontab/
		$PHP readfile.php > $LOGFILE
		$PHP chart_gold_silver_xml.php > /dev/null
		sleep 60
	done &
	echo $! > $PIDFILE
}
function stop(){
  	[ -f $PIDFILE ] && kill `cat $PIDFILE` && rm -rf $PIDFILE
}

case "$1" in
  start)
  	start
	;;
  stop)
  	stop
	;;
  status)
  	ps ax | grep chart.xml | grep -v grep | grep -v status
	;;
  restart)
  	stop
	start
	;;
  *)
	echo $"Usage: $0 {start|stop|status|restart}"
	exit 2
esac

exit $?		

2. htpasswd 密码批量生成

		#!/bin/bash

PASSFILE=nginx.password
[ ! -f $PASSFILE ] && touch $PASSFILE

while read username password
do
        htpasswd -b -d $PASSFILE $username $password
done << EOF
neo     FwJSYxD4WBzPr4CQvxI8HIbV0yDkQi
chen    2hsD3OgkeM4GPPcNYUceqL8ccMzXjU
bg7nyt  XAq7Zcln8dGCTIIKt8GwwEwqmCN8d1
netkiller       fcCIY3GaroTPCSW40XBrg0HNlmbLD7
neochen DPSiWJtqUIaI2bUUobuX2PjdyzDGgI
EOF		

3. firewall

分析access.log 文件,将 top 30 的IP放入黑名单.

脚本具有黑白名单功能

		#!/bin/bash

ACCCESS_LOG=/tmp/access.log
TIMEPOINT='24/May/2012'
BLACKLIST=/var/tmp/black
WHITELIST=/var/tmp/white
if [ ! -f ${BLACKLIST} ]; then
    touch ${BLACKLIST}
fi

if [ ! -f ${WHITELIST} ]; then
    touch ${WHITELIST}
fi

for deny in $(grep ${TIMEPOINT} ${ACCCESS_LOG} | awk '{print $1}' | awk -F'.' '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -r -n | head -n 30| awk '{print $2}')
do

    if [ $(grep -c $deny ${WHITELIST}) -ne 0 ]; then
        echo 'Allow IP:' $deny
	iptables -D INPUT -p tcp --dport 443 -s $deny -j DROP
	iptables -D INPUT -p tcp --dport 80 -s $deny -j DROP
	continue
    fi

    if [ $(grep -c $deny ${BLACKLIST}) -eq 0 ] ; then

	echo 'Deny IP:' $deny
        echo $deny >> ${BLACKLIST}
        iptables -I INPUT -p tcp --dport 443 -s $deny -j DROP
        iptables -I INPUT -p tcp --dport 80 -s $deny -j DROP
    fi
done		

原文发布于微信公众号 - Netkiller(netkiller-ebook)

原文发表时间:2016-04-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏乐沙弥的世界

理解 using backup controlfile

        using backup controlfile 通常用于恢复由于当前控制文件丢失且原来备份的控制文件较当前发生变化的情形之下。using ba...

1013
来自专栏木子墨的前端日常

浏览器相关--H5本地存储

浏览器存储主要包括一下几个部分 1. cookie 2. localStorage 3. sessionStorage 4. indexDB 5. websql...

1793
来自专栏杨建荣的学习笔记

通过shell脚本定位性能sql和生成报告(r2笔记37天)

oracle的sql monitor是一个很有用的工具集。但是通过sql命令和反复去调用dbms_tune来传入参数等等操作感觉挺费事的。 可以通过如下的脚本来...

2757
来自专栏乐沙弥的世界

实验二:SQL server 2005高可用性之----数据库镜像

如转载,请注明出处:http://blog.csdn.net/robinson_0612/archive/2009/11/04/4769060.aspx

882
来自专栏乐沙弥的世界

Oracle 热备份

Oracle 热备份是指数据库处于open状态下,对数据库的数据文件、控制文件、参数文件、密码文件等进行一系列备份操作。

731
来自专栏杨建荣的学习笔记

pl/sql中的forall简单测试(r5笔记第63天)

之前写过一篇bulk collect的博文,只是对于bulk collect做了简单的实例。http://blog.itpub.net/23718752/vie...

35511
来自专栏杨建荣的学习笔记

dataguard备库的数据文件的迁移(r8笔记第22天)

关于移动数据库文件,之前写了一篇博文,http://blog.itpub.net/23718752/viewspace-1127910/ 但是在备库中还是有...

3398
来自专栏杨建荣的学习笔记

MySQL句柄恢复文件的简单尝试

今天突然想起一个问题,那就是对于ibdata的恢复,如果我们简单模拟一下,就会发现还是蛮有意思的。 首先我们得到两个参数值,一个是刷脏页的指标,另外一个是数据文...

2888
来自专栏蓝天

进程绑定CPU简单应用

731
来自专栏乐沙弥的世界

使用RMAN迁移文件系统数据库到ASM

在实际的工作过程中,由于ASM磁盘管理的便利性,因此很多时候需要将文件系统的数据库迁移到ASM,本文演示了如何将文件系统数据库迁移到ASM实例。

692

扫码关注云+社区