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 条评论
登录 后参与评论

相关文章

来自专栏Theo Tsao

Ionic3学习笔记(十三)HttpClient 实现 HTTP 请求以及踩过的一些坑

当然是基于这篇古老的文章啦 ==> http://www.jianshu.com/p/9855610eb1d4 因为是2015年的文章,已经时隔2年多,很难确保...

561
来自专栏hotqin888的专栏

froala富文本编辑器与golang、beego,脱离ueditor苦海

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/det...

1302
来自专栏运维

k8s1.5.4挂载volume之glusterfs

https://github.com/kubernetes/kubernetes/tree/master/examples/volumes

852
来自专栏Java帮帮-微信公众号-技术文章全总结

Web-第二十三天 Web商城实战三【悟空教程】

<a href="${pageContext.request.contextPath}/OrderServlet?method=findByUid">我的订单<...

881
来自专栏Micro_awake web

VSCode插件及用户设置

第一部分:插件 VSCode内置"emmet"插件,"convert to utf-8"等插件效果!十分强大!代码提示功能特别强悍! VSCode官网插件地址:...

2048
来自专栏散尽浮华

Centos下DNS+NamedManager高可用部署方案完整记录

之前说到了NamedManager单机版的配置,下面说下DNS+NamedManager双机高可用的配置方案:

2066
来自专栏坚毅的PHP

startup script和cronolog日志切分

相关参考资料: http://man.cx/start-stop-daemon(8) http://cronolog.org/usage.html http:/...

3436
来自专栏Golang语言社区

Golang语言社区--wesocket的demo(包括H5前端,GO后端)

go代码: package main import ( "flag" "fmt" "glog-master" ...

37515
来自专栏喵了个咪的博客空间

[喵咪KafKa(2)]单机模式运行KafKa

[喵咪KafKa(2)]单机模式运行KafKa# ? 前言## 在上节我们介绍完KafKa之后,今天我们来搭建KafKa三种模式(单机模式,伪集群,集群)中的一...

2634
来自专栏更流畅、简洁的软件开发方式

其实添加数据也可以这样简单——表单的第三步抽象(针对UI及后置代码)

终于赶出来了,现写了一遍代码。 感谢大家的支持,感谢大家提出自己的看法。衷心的感谢,真的。 应该是先写第二步的,但是想一想还是先写第三步吧。 一般大项目里...

2339

扫码关注云+社区