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

相关文章

来自专栏你不就像风一样

CentOS 6.5下RPM方式(重新)安装MySQL 5.7.21从头到尾篇

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables ...

542
来自专栏淡定的博客

php之laravel学习常见错误4(连载中)

下面是我们整理的php的laravel学习的常见的错误以及解决的办法,我还会持续更新,请关注

631
来自专栏好好学习吧

Pycharm2018中DataBase的使用

1、点击右侧边栏的DataBase,在出现的Database窗口下点击绿色小加号,选择Data Source,选择需要的数据库类型,此处选择Sqlite

783
来自专栏程序员叨叨叨

Mac下MySQL忘记密码重置

在上述指令运行后,新开一个终端,同时保持原来那个终端也开着,在新的终端输入指令如下:

673
来自专栏小夜博客

使用LNMP常见问题解答

34413
来自专栏乐沙弥的世界

linux 下RMAN备份shell脚本

       RMAN备份对于Oracle数据库的备份与恢复简单易用,成本低廉。对于使用非catalog方式而言,将RMAN脚本嵌入到shell脚本,然后再通过...

542
来自专栏奇梦博客

反向代理Xiuno搭建的源站,QQ登录回调地址报错怎么办? 原创 PHP XiunoBBS

如:主域名(www.qimeng.tv)反向代理到Xiuno搭建的源站(xiuno.qimeng.tv)一切都正常,但是QQ登录成功后会跳转到源站,问题是想隐藏...

683
来自专栏python3

diango使用数据库

之前写的页面,虽然和用户交互得很好,但并没有保存任何数据,页面一旦关闭,或服务器重启,一切都将回到原始状态。

773
来自专栏我的博客

ThinkPHP3.2使用cli模式

php if(version_compare(PHP_VERSION,'5.3.0','<')) die('require PHP > 5.3.0 !'); ...

3256
来自专栏散尽浮华

mysql密码遗忘和登陆报错问题

mysql登录密码忘记,其实解决办法很简单,只需要在mysql的主配置文件my.cnf里添加一行“跳过授权表”的参数选择即可! 在my.cnf中添加下面一行: ...

1999

扫描关注云+社区