说起 DDoS Deflate
1 来,很多玩VPS的站长们应该都知道这是一个非常适合我们博客站长们装在自己的服务器上的一个防御脚本,配合 iptables
防火墙使用可以说是价廉物美。反正明月部署VPS
的话, DDoS Deflate
几乎是必装的一个脚本程序了。
话说昨天在给一个朋友维护VPS
的时候,因为需要用到 DDoS Deflate
,所以就直接安装了(具体可参考【DDoS Deflate 的安装和使用】一文)。没有想到的是当输入 ddos
的时候竟然运行失败了,错误提示如下:
/usr/local/ddos/ddos.sh: 25: [: /etc/ddos/ddos.conf: unexpected operator DDoS-Deflate version 0.9 Copyright (C) 2005, Zaf [email protected] $CONF not found.
上述错误提示简单理解就是 /usr/local/ddos/ddos.sh
文件存在一个意外无效的操作造成 DDoS Deflate
无法找到/etc/ddos/ddos.conf
文件,也就是 DDoS Deflate
的配置文档无法找到。
这个配置文档都可以通过 VI/VIM 编辑打开的,脚本竟然找不到?
那么只能说明 ddos.sh
脚本出了问题,没办法只能求助于度娘了,没有想到度娘对英文技术关键词搜索的支持返回的依然都是中文结果,自然很难找到我需要的解决答案了。
没办法,搭起我亲爱的“小梯子”翻到墙外找谷姐,妥妥的,终于搞明白问题出在哪里了?原来真的就是 ddos.sh
出的问题,并且问题就出在此脚本的第一行, #!/bin/sh
这里,只需要将其修改为 #!/bin/bash
即可。
#!/bin/sh
是指此脚本使用 /bin/sh
来解释执行,#!
是特殊的表示符,其后面跟的是此解释此脚本的 shell
的路径。 #!/bin/bash
的话同上述的一个道理,就是用不同的脚本 shell
来执行下面的代码的意思。
GNU/Linux
操作系统中的/bin/sh
本是bash
(Bourne-Again Shell
) 的符号链接,但鉴于bash
过于复杂,有人把bash
从NetBSD
移植到Linux
并更名为dash
(Debian Almquist Shell
),并建议将/bin/sh
指向它,以获得更快的脚本执行速度。Dash Shell
比Bash Shell
小的多,符合POSIX
标准。
所以也就是在Ubuntu
中可以认为/bin/sh
就是/bin/dash
, 如果打算使用bash
, 可直接将/bin/sh
软链接到/bin/bash
。
Ubuntu
继承了Debian
,所以从Ubuntu 6.10
开始默认是Dash Shell
。
应该说,/bin/sh
与/bin/bash
虽然大体上没什么区别,但仍存在不同的标准。标记为#!/bin/sh
的脚本不应使用任何POSIX
没有规定的特性 (如let
等命令, 但#!/bin/bash
可以)。Debian
曾经采用/bin/bash
更改/bin/dash
,目的使用更少的磁盘空间、提供较少的功能、获取更快的速度。但是后来经过shell
脚本测试存在运行问题。因为原先在bash shell
下可以运行的shell script
(shell
脚本),在/bin/sh
下还是会出现一些意想不到的问题,不是100%的兼用。
- DDoS Deflate 是个轻量级的
Bash Shell
脚本设计的来帮助阻止/拒绝服务攻击的程序,它利用netstat
命令来获取连接到服务器的IP地址列表,以及它们的连接总数。这是个软件级最简单、最容易安装的防DDos的解决方案之一。 ↩
4 条评论
我是来试表情的 滑稽滑稽
嘿嘿,我也试试!
多谢支持!试试我的百度贴吧泡泡表情!
给力,干货,赞一个先!