Posts Tagged ‘linux’

Linux默认声音设备无法打开的解决方法

星期六, 十月 22nd, 2016

原创内容,转载请注明出处: http://www.myzhenai.com.cn/post/2326.html http://www.myzhenai.com/thread-17940-1-1.html
关键词: 默认声音设备无法打开 VMware无法自动检测声卡 设置默认声卡 Linux设置默认声卡
我有一台VMware虚拟机里的CentOS系统最近运行的时候总是会弹出提示 默认声音设备无法打开 总是要手动去连接声卡, VMware无法自动检测声卡了. 刚开始的时候我以为是CentOS的声卡驱动的问题, 因为我安装的是Alsa声卡,但是检测声卡驱动的时候是显示声卡驱动安装了的. 后来又以为是Vmware tools的问题, 于是重新安装了一遍VMware tools. 却发现还是没有解决问题, 于是不得不转换思路, 会不会是虚拟的声卡驱动有多个声卡呢? 所以才导致无法确定使用哪一个声卡是默认声卡而无法识别. 后面一步一步排查,还真是. 最后就是设置了默认声卡解决了问题.步骤如下

[RucLinux@localhost ~]$ cat /proc/asound/cards
 0 [AudioPCI       ]: ENS1371 - Ensoniq AudioPCI
                      Ensoniq AudioPCI ENS1371 at 0x2080, irq 16
[RucLinux@localhost ~]$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: AudioPCI [Ensoniq AudioPCI], device 0: ES1371/1 [ES1371 DAC2/ADC]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: AudioPCI [Ensoniq AudioPCI], device 1: ES1371/2 [ES1371 DAC1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
 [RucLinux@localhost ~]$ su root
密码:
[root@localhost RucLinux]# find / -name alsa.conf
/usr/share/alsa/alsa.conf
[root@localhost RucLinux]# vi /usr/share/alsa/alsa.conf
[root@localhost RucLinux]# vi /etc/asound.conf

先查看你的声卡,然后再编辑/etc/asound.conf这个文件,将你指定的声卡序列号添加在这个文件里, 你只需要修改以下这三行后面的数字即可以了. 即默认声卡为第几个,0即为第一,1即为第二,以此类推.

defaults.pcm.card 1
defaults.pcm.device 1
defaults.ctl.card 1

Linux(CentOS)下的Shockwave Flash shell一键更新脚本

星期一, 九月 26th, 2016

原创内容,转载请注明出处: http://www.myzhenai.com.cn/post/2318.html http://www.myzhenai.com/thread-17933-1-1.html
关键字: Shockwave Flash一键更新脚本 Flash一键更新脚本
这个脚本其实是我自己用的, 我的系统里安装了FlashPlayer软件和火狐(firefox)浏览器里安装了Shockwave Flash插件,因为要一个一个来更新显得太麻烦,所以我自己写了这么一个小脚本来快速更新. 原理很简单, 从官方网站上下载FlashPlayer的最新版本到本地覆盖旧版本程序,然后通过flashplayer -v得到最新的版本号,再通过指定的官方下载链接将Shockwave Flash插件下载到本地并安装,在安装之前自动卸载旧版本的Shockwave Flash.

# !/bin/bash
wget http://fpdownload.macromedia.com/pub/flashplayer/updaters/11/flashplayer_11_sa.i386.tar.gz /*下载最新版本文件*/
tar -xzvf flashplayer_11_sa.i386.tar.gz /*解压当前文件*/
mv -f flashplayer /usr/bin/ /*移动当前文件*/
rm -rf LGPL /*删除当前文件目录*/
rm -rf flashplayer_11_sa.i386.tar.gz /*删除下载的源文件*/
killall -9 firefox /*终止火狐浏览器进程*/
yum remove flash-plugin -y /*卸载旧版本的Shockwave Flash插件*/
h=`flashplayer -v|sed '/^$/!h;$!d;g'|sed 's/,/./g'` /*通过flashplayer -v得到当前最新版本的版本号*/
wget https://fpdownload.adobe.com/get/flashplayer/pdc/$h/flash-plugin-$h-release.i386.rpm /*下载最新版本的插件*/
rpm -ivh flash-plugin-$h-release.i386.rpm /*安装最新版本的插件*/
# !/bin/bash
wget http://fpdownload.macromedia.com/pub/flashplayer/updaters/11/flashplayer_11_sa.i386.tar.gz
tar -xzvf flashplayer_11_sa.i386.tar.gz
mv -f flashplayer /usr/bin/
rm -rf LGPL
rm -rf flashplayer_11_sa.i386.tar.gz
killall -9 firefox
yum remove flash-plugin -y
h=`flashplayer -v|sed '/^$/!h;$!d;g'|sed 's/,/./g'`
wget https://fpdownload.adobe.com/get/flashplayer/pdc/$h/flash-plugin-$h-release.i386.rpm
rpm -ivh flash-plugin-$h-release.i386.rpm
Linux(CentOS)下的Shockwave Flash shell一键更新脚本

Linux(CentOS)下的Shockwave Flash shell一键更新脚本

一个简单的检测网络Shell脚本

星期五, 九月 9th, 2016

原创内容,转载请注明出处: http://www.myzhenai.com.cn/post/2309.html http://www.myzhenai.com/thread-17923-1-1.html
关键词: Shell判断变量是否为空 Shell判断参数是否为空 Shell检测网络 Shell ping Shell traceroute

Shell ping Shell traceroute

Shell ping Shell traceroute


Shell ping Shell traceroute

Shell ping Shell traceroute


其实这个Shell脚本就是简单的将ping和traceroute集合在一起. 因为我总是会忘记traceroute的拼法.

# !/bin/bash
##############################################################################################################################################
# This is the Network detection script tool
# Author: RucLinux 海南胡说 海南仙岛
# Website: www.myzhenai.com www.myzhenai.com.cn www.haikou-china.com jiayu.mybabya.com www.0898-shop.com
##############################################################################################################################################
if [ ! -n $1 ];then
echo "You did not enter a URL or IP"
else
p=`ping -c 5 $1`
echo -e "$p\n"
t=`traceroute $1`
echo -e "$t\n"
fi

Shell 自动删除指定字符窜后边的字符窜

星期六, 九月 3rd, 2016

原创内容,转载请注明出处: http://www.myzhenai.com.cn/post/2300.html http://www.myzhenai.com/thread-17920-1-1.html
关键词: Linux删除指定字符窜后边的字符窜 Shell删除指定字符窜后边的字符窜 sed删除指定字符窜后边的字符窜 sed删除右边的字符窜 sed删除左边的字符窜
对于shell编程的过程中我们都会遇到一个问题,如何替换或删除掉文件中指定字符窜后边或前边的一段字符, 如果使用正则的话是方便,但正则也没有办法做到针对不同的字符窜, 更何况是不懂正则的朋友,像我这样.
所以我换了个思路, 先取到需要替换或删除的字符窜,放到一个变量中,然后再用这个变量做为替换或删除的关键词去操作. 实现方法也很简单.
因为演示的文本里有敏感关键词,所以我只能是截图来演示了. 但代码我会详细解释.

Shell 自动删除指定字符窜后边的字符窜

Shell 自动删除指定字符窜后边的字符窜


Shell 自动删除指定字符窜后边的字符窜

Shell 自动删除指定字符窜后边的字符窜


Shell 自动删除指定字符窜后边的字符窜

Shell 自动删除指定字符窜后边的字符窜

#!/bin/bash
SAVEIFS=$IFS
IFS=$(echo -en "\n\b") //这是获取整行内容,免得有分隔符或其他字符让读取的文本变成错行
sed -i '/[ltem_[0-9]]/d' database.ini
sed -i '/ItemCount/d' database.ini
sed -i '/TaskIndex/d' database.ini
sed -i '/Filename/d' database.ini
sed -i '/Path/d' database.ini
sed -i '/Percent/d' database.ini
sed -i '/Referer/d' database.ini
sed -i '/Rename/d' database.ini //以上这些都是替换掉包含指定关键词的整行.
sed -i '/^$/d' database.ini
sed -i '/^\s*$/d' database.ini //这两行是删除所有空白符或换行符或空格
sed -i 's/Link=//g' database.ini //删除所有指定字符
if  grep -q "|" database.ini ; then echo ""; else sed -i 's/$/&|/g' database.ini; fi //判断所有字符窜里是不是包含|这字符窜,如果有就不添加,如果没有就自动在每行后边添加这个字符,用作下边代码的分隔符.
for i in $(< database.ini) //进入循环
do
h=`echo $i|awk -F "?" '{ print $2 }'|awk -F "|" '{ print $1 }'` //取出指定字符窜右边的字符放到h变量中, 如果要取左边的字符,在上边的代码中将|添加在行首,然后将?和|这两个搜索关键字符互调,将$1和$2参数互换就可以了.
sed -i "s/?$h|//g" database.ini //删除?这个字符和变量里的字符窜和|这个字符.
done
IFS=$SAVEIFS

完整代码

#!/bin/bash
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
sed -i '/[ltem_[0-9]]/d' database.ini
sed -i '/ItemCount/d' database.ini
sed -i '/TaskIndex/d' database.ini
sed -i '/Filename/d' database.ini
sed -i '/Path/d' database.ini
sed -i '/Percent/d' database.ini
sed -i '/Referer/d' database.ini
sed -i '/Rename/d' database.ini
sed -i '/^$/d' database.ini
sed -i '/^\s*$/d' database.ini
sed -i 's/Link=//g' database.ini
if  grep -q "|" database.ini ; then echo ""; else sed -i 's/$/&|/g' database.ini; fi
for i in $(< database.ini)
do
h=`echo $i|awk -F "?" '{ print $2 }'|awk -F "|" '{ print $1 }'`
sed -i "s/?$h|//g" database.ini
done
IFS=$SAVEIFS

Linux Shell枚举目录下相同文件脚本

星期六, 八月 20th, 2016

原创内容,转载请注昨出处: http://www.myzhenai.com.cn/post/2269.html http://www.myzhenai.com/thread-17910-1-1.html
关键词: Linux查找相同文件 shell查找相同文件
写这个脚本是为了练习shell编程的,本来思路是想着通过文件大小一致和md5值一致来获取相同的文件的,但我这脚本的实现方法好像不是太严谨,应该说是不太准确的,对于是不是这样,我也没有太大的把握,因为我调试过好多遍了,但找出来好多不同文件名,但相同类型的文件,因为这些文件我知道,有好多是我拍摄的相片, 如果说文件大小有可能会一致,但每个文件的md5值应该是不一样的. 所以这里只提供给朋友们一个思路, 您也可以帮忙调试改进, 欢迎朋友们参与讨论. 说实在的,这个脚本对于我们做站的朋友们来说还是有用处的,可以清除一些网站用户上传的相同的文件.

# !/bin/bash
echo -e  "\033[31m Please enter your name you want to find the file suffix: \033[0m"
read name
dir=$(cd `dirname $0`; pwd)
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
files=`find $dir -iname "*.$name"`
for file in $files
do
size=`ls -l $file|awk '{print $5}'`
md=`md5sum $file|cut -d ' ' -f1`
echo $file" | "$size" | "$md >> tong.log
done
########################################
files=`find $dir -iname "*.$name"`
for file in $files
do
size=`ls -l $file|awk '{print $5}'`
md=`md5sum $file|cut -d ' ' -f1`
h=`grep -c $size" | "$md tong.log`
if [ $h -gt 2 ];then
echo $file"  Similarfiles  [$h]" >> long.log
fi
done
IFS=$SAVEIFS
#echo "$IFS" | od -t x1

Linux Shell枚举目录下相同文件脚本

Linux Shell枚举目录下相同文件脚本


Linux Shell枚举目录下相同文件脚本

Linux Shell枚举目录下相同文件脚本


Linux Shell枚举目录下相同文件脚本

Linux Shell枚举目录下相同文件脚本

Linux(centos)下安装PhpStorm2016.2教程

星期五, 八月 19th, 2016

原创内容,转载请注昨出处: http://www.myzhenai.com.cn/post/2260.html http://www.myzhenai.com/thread-17909-1-1.html
关键词: phpstorm2016.2激活 phpstorm2016.2汉化 phpstorm2016.2中文 phpstorm2016.2安装
PhpStorm是一个轻量级且便捷的PHP IDE,其旨在提供用户效率,可深刻理解用户的编码,提供智能代码补全,快速导航以及即时错误检查.
PhpStorm官网:https://www.jetbrains.com/
PhpStorm2016.2:https://download.jetbrains.8686c.com/webide/PhpStorm-2016.2.tar.gz (Linux)
PhpStorm2016.2:https://download.jetbrains.8686c.com/webide/PhpStorm-2016.2.exe (windows)
需要的文件: 链接: https://pan.baidu.com/s/1bFaboU 密码: 6qpe
安装之前需要先安装java18以下版本. java安装教程 http://www.myzhenai.com.cn/post/1284.html 将旧版本的java安装目录删除, 将旧版本的java环境变量删除. 重新安装java
java下载页面: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
现在我们来安装PhpStorm2016.2

cd /usr/local/
wget https://download.jetbrains.8686c.com/webide/PhpStorm-2016.2.tar.gz
tar -xzvf PhpStorm-2016.2.tar.gz
mv PhpStorm(Unpacked directory) PhpStorm
cd PhpStorm/bin/
chmod 777 phpstorm.sh
sh phpstorm.sh

在弹出的窗口中选择 “Evaluate for free” 30天试用安装.
安装完成后我们进行验证, 下载需要的文件里的 phpstorm2016.2.zip 压缩包, 解压后有两个压缩包,分别是验证和汉化, 解压它们. 把这两个jar后缀名的文件复制到 /usr/local/PhpStorm/lib/目录下,
选择菜单 help >>>> Edit Custom VM options (编辑自定义虚拟机选项)
如果没有会提示创建,进行创建
打开文件
最后面加入 一行

-javaagent:/usr/local/PhpStorm/lib/JetbrainsCrack-2.5.6.jar

后面是补丁的路径,根据自己放的位置修改
保存文件
关闭并重新打开phpstorm
到网站 http://15.idea.lanyus.com/ 生成一个激活码
菜单 help >>>>Register
选择Activation Code
将验证码粘贴进去
激活…
OK
关闭并重新打开phpstorm
自此,安装完美结束.
运行PhpStorm2016的方法是,在本地用户下使用终端

$/usr/local/PhpStorm/bin/phpstorm.sh
OR
#/usr/local/PhpStorm/bin/phpstorm.sh

Linux Shell截取字符窜教程

星期一, 八月 15th, 2016

原创内容,转载请注明出处: http://www.myzhenai.com.cn/post/2254.html http://www.myzhenai.com/thread-17908-1-1.html
关键词: Linux截取字符窜 shell截取字符窜 grep截取字符窜 awk截取字符窜
这个教程是hostloc社区上的一个网友提的问题,他的原意是要通过 curl http://pv.sohu.com/cityjson 来获得一些关键的信息,比如ip和国家代码以及所处国家.
其实这个shell的思路很简单,先将curl获得的内容用sed把所有双引号和空格全部过滤掉,然后用awk来搜索相关关键字获得需要的内容.如果是多行的话,还城要再增加一个grep -v 行里的关键字.

# !/bin/bash
var=`curl http://pv.sohu.com/cityjson|sed 's/"//g'|sed -e 's/[ ][ ]*//g'`
cip=`echo $var|awk -F "," '{print $1}'|awk -F "cip:" '{print $2}'`
cid=`echo $var|awk -F ",cname" '{print $1}'|awk -F "cid:" '{print $2}'`
cnme=`echo $var|awk -F "};" '{print $1}'|awk -F "cname:" '{print $2}'`
echo $cip
echo $cid
echo $cnme

如果var变量里返回的数据是多行的话, 还需要在下面的代码上分别增加上grep -v 行里关键字. 例如以下

# !/bin/bash
var=`curl http://pv.sohu.com/cityjson|sed 's/"//g'|sed -e 's/[ ][ ]*//g'`
cip=`echo $var|grep -v cip:|awk -F "," '{print $1}'|awk -F "cip:" '{print $2}'`
cid=`echo $var|grep -v cid|awk -F ",cname" '{print $1}'|awk -F "cid:" '{print $2}'`
cnme=`echo $var|grep -v cname|awk -F "};" '{print $1}'|awk -F "cname:" '{print $2}'`
echo $cip
echo $cid
echo $cnme
Linux Shell截取字符窜教程

Linux Shell截取字符窜教程

Linux登录时显示audit:backlog limit exceeded的解决方法

星期四, 七月 21st, 2016

原创内容,转载请注明出处: http://www.myzhenai.com/thread-17898-1-1.html http://www.myzhenai.com.cn/post/2237.html
我昨天在升级一个Fedora系统时遇到了这样的问题, 开机在进入系统菜单的时候莫明的显示audit:backlog limit exceeded,并且系统非常卡,不能进入系统, 偶尔进入系统后,也会出现不能响应的问题,系统卡住了, 没升级之前的Fedora是23的,升级后的Fedora是24的, 应该是在升级的过程系统遇到了什么问题, 于是搜索网络上对于这个问题的解决方案, 但是发现很多方案都很笼统, 只是说audit 服务对所有的系统调用进行审计操作, 那么问题应该出现在哪呢? 没理由耗费这么多资源. 折腾了一个晚上, 再回过头来想一想,会不会问题是出现在SELinux上? 可能禁止了SELinux说不定问题就能解决. 于是重启系统, 在进入系统的时候快速的把SELinux关闭了. 关闭方法如下:

$sudo vi /etc/selinux/config 
修改成  SELINUX=disable 禁用SeLinux;
修改成  SELINUX=enforcing 使用SeLinux
i键进入编辑模式,Esc键退出编辑模式,Shift键+ZZ键保存更改.
$sudo auditctl -b 8192
$sudo auditctl -D

至此,问题完美解决,再进入系统没有出现这些问题了.

Linux下生成链条式密码钥匙的脚本

星期六, 四月 16th, 2016

原创内容,转载请注明出处: http://www.myzhenai.com.cn/post/2172.html http://www.myzhenai.com/thread-17854-1-1.html
之前写过一个这样的博文,但因为Ecvps倒闭跑路了,所以我丢失了两个月的数据,那篇文章也就丢失了,但是我也更新了这个脚本的方法,将有内容生成密钥链条和无内容自动随机生成密钥链条两种,控制方法是A和B两种.A是随机

# !/bin/bash
###############################################################################################################################################################################################
#
# This is to get the character channeling encryption scripting tool
# Autor: RucLinux
# Web: http://www.myzhenai.com.cn/ http://www.myzhenai.com/ http://www.haikou-china.com/ http://jiayu.mybabya.com/ http://www.0898-shop.com/
#
###############################################################################################################################################################################################
random() {
  index=0
  str=""
  t=`grep '((?=[\x21-\x7e]+)[^A-Za-z0-9])'`
  for i in {a..z}; do arr[index]=$i; index=`expr ${index} + 1`; done
  for i in {A..Z}; do arr[index]=$i; index=`expr ${index} + 1`; done
  for i in {$t}; do arr[index]=$i; index=`expr ${index} + 1`; done
  for i in {0..9}; do arr[index]=$i; index=`expr ${index} + 1`; done
  for i in {1..42}; do str="$str${arr[$RANDOM%$index]}"; done
  #echo $str
s=`echo $str |cut -c1-42`
echo ${s:0:6}-${s:12:6}-${s:18:6}-${s:24:6}-${s:30:6}-${s:36:6}
}
########################################################################################################### 
create() (
ip=`ifconfig | awk -F'[ ]+|:' '/inet addr/{if($4!~/^192.168|^172.16|^10|^127|^0/) print $4}'`
read name
a=`echo $name |wc -L`
if [ $a -lt 6 ];then
site=$name.$ip
else
site=$name
fi
md=`echo $site |base64 -i`
b=`echo $md |wc -L`
if [ $b -lt 36 ];then
stin=`echo $md | md5sum |base64 -i`
else
stin=$md
fi
s=`echo $stin |cut -c1-42`
echo ${s:0:6}-${s:12:6}-${s:18:6}-${s:24:6}-${s:30:6}-${s:36:6}
)
###########################################################################################################
echo "# This is to get the character channeling encryption scripting tool"
echo "# Autor: RucLinux"
echo -e "# \033[31m Please select a channel A=random | B=create \033[0m"
read ab
if [ "$ab" == "A" ]; then
echo `random`
fi
if [ "$ab" == "B" ]; then
echo -e  "\033[31m Please enter Need to encrypt a string: \033[0m"
echo `create`
fi
###########################################################################################################

Linux下生成链条式密码钥匙的脚本

Linux下生成链条式密码钥匙的脚本


Linux下生成链条式密码钥匙的脚本

Linux下生成链条式密码钥匙的脚本

Linux下使用iptables封锁端口禁止邮件发送

星期日, 一月 31st, 2016

原创文章,转载请注明出处:http://www.myzhenai.com/thread-17843-1-1.html http://www.myzhenai.com.cn/post/2161.html
原理是使用iptables封锁了PREROUTING (路由前) INPUT (数据包流入口) FORWARD (转发管卡) OUTPUT(数据包出口) POSTROUTING(路由后)五个规则链,只要是从这些规则链里出口的和入口的数据,都不能经过指定的端口. 例程封锁了这些端口 25,110,50,105,106,109,209,512,465,992,1109,24554,60177,60179
同时枚举了当前所有网卡,把所有网卡的进出数据都不能通过指定的端口传输.

这五个位置也被称为五个钩子函数(hook functions),也叫五个规则链。
1.PREROUTING (路由前)
2.INPUT (数据包流入口)
3.FORWARD (转发管卡)
4.OUTPUT(数据包出口)
5.POSTROUTING(路由后)
这是NetFilter规定的五个规则链,任何一个数据包,只要经过本机,必将经过这五个链中的其中一个链。

常用的ACTION:
DROP:悄悄丢弃
一般我们多用DROP来隐藏我们的身份,以及隐藏我们的链表
REJECT:明示拒绝
ACCEPT:接受
custom_chain:转向一个自定义的链
DNAT
SNAT
MASQUERADE:源地址伪装
REDIRECT:重定向:主要用于实现端口重定向
MARK:打防火墙标记的
RETURN:返回
在自定义链执行完毕后使用返回,来返回原规则链。

-P :设置默认策略的(设定默认门是关着的还是开着的)
默认策略一般只有两种
iptables -P INPUT (DROP|ACCEPT) 默认是关的/默认是开的
比如:
iptables -P INPUT DROP 这就把默认规则给拒绝了。并且没有定义哪个动作,所以关于外界连接的所有规则包括Xshell连接之类的,远程连接都被拒绝了。
-F: FLASH,清空规则链的(注意每个链的管理权限)
iptables -t nat -F PREROUTING
iptables -t nat -F 清空nat表的所有链
-N:NEW 支持用户新建一个链
iptables -N inbound_tcp_web 表示附在tcp表上用于检查web的。
-X: 用于删除用户自定义的空链
使用方法跟-N相同,但是在删除之前必须要将里面的链给清空昂了
-E:用来Rename chain主要是用来给用户自定义的链重命名
-E oldname newname
-Z:清空链,及链中默认规则的计数器的(有两个计数器,被匹配到多少个数据包,多少个字节)
iptables -Z :清空

(4) -i

以包进入本地所使用的网络接口来匹配包。只能用INPUT \ FORWARD \PREROUTING 三个链中。用在其他任何链中都会出错。
可使用“+” “!”两种符号。
只用一个“+"号,表示匹配所有的包,不考虑使用哪个接口。如: iptable -A INPUT -i + //表匹配所有的包。
放在某类接口后面,表示所有此类接口相匹配。如: iptable -A INPUT -i eth+ //表示匹配所有ethernet 接口。

(5) -o
以数据包出本地所使用的网络接口来匹配包。与-i一样的使用方法。
只能用OUTPUT \ FORWARD \POSTROUTING 三个链中。用在其他任何链中都会出错。
可使用“+” “!”两种符号。

iptables规则创建脚本.

# !/bin/bash
mv /etc/sysconfig/iptables /etc/sysconfig/iptables.back
iptables -F
service iptables save
echo "# !/bin/bash" >> iptables.sh
echo "service iptables restart" >> iptables.sh
ip=`ifconfig -a|grep encap|awk -F " " '{ print $1 }'`
OLD_IFD="$IFD"
IFD=" "
arr=($ip) 
IFD="$OLD_IFD" 
for d in ${arr[@]} 
do 
#echo $d
a="25,110,50,105,106,109,209,512,465,992,1109,24554,60177,60179"
OLD_IFS="$IFS"
IFS=","
arr=($a) 
IFS="$OLD_IFS" 
for s in ${arr[@]} 
do 
#************************************************************************************#
echo "iptables -A INPUT -p tcp --dport $s -j DROP" >> iptables.sh
echo "iptables -A INPUT -p tcp --sport $s -j DROP" >> iptables.sh
echo "iptables -A OUTPUT -p tcp --dport $s -j DROP" >> iptables.sh
echo "iptables -A OUTPUT -p tcp --sport $s -j DROP" >> iptables.sh
echo "iptables -A PREROUTING -p tcp --dport $s -j DROP" >> iptables.sh
echo "iptables -A PREROUTING -p tcp --sport $s -j DROP" >> iptables.sh
echo "iptables -A FORWARD -p tcp --dport $s -j DROP" >> iptables.sh
echo "iptables -A FORWARD -p tcp --sport $s -j DROP" >> iptables.sh
echo "iptables -A POSTROUTING -p tcp --dport $s -j DROP" >> iptables.sh
echo "iptables -A POSTROUTING -p tcp --sport $s -j DROP" >> iptables.sh
#**************************************************************************************#
echo "iptables -A INPUT -p udp --dport $s -j DROP" >> iptables.sh
echo "iptables -A INPUT -p udp --sport $s -j DROP" >> iptables.sh
echo "iptables -A OUTPUT -p udp --dport $s -j DROP" >> iptables.sh
echo "iptables -A OUTPUT -p udp --sport $s -j DROP" >> iptables.sh
echo "iptables -A PREROUTING -p udp --dport $s -j DROP" >> iptables.sh
echo "iptables -A PREROUTING -p udp --sport $s -j DROP" >> iptables.sh
echo "iptables -A FORWARD -p udp --dport $s -j DROP" >> iptables.sh
echo "iptables -A FORWARD -p udp --sport $s -j DROP" >> iptables.sh
echo "iptables -A POSTROUTING -p udp --dport $s -j DROP" >> iptables.sh
echo "iptables -A POSTROUTING -p udp --sport $s -j DROP" >> iptables.sh
#**************************************************************************************#
echo "iptables -A INPUT -i $d -p tcp --dport $s -j DROP" >> iptables.sh
echo "iptables -A INPUT -i $d -p tcp --sport $s -j DROP" >> iptables.sh
echo "iptables -A INPUT -i $d -p udp --dport $s -j DROP" >> iptables.sh
echo "iptables -A INPUT -i $d -p udp --sport $s -j DROP" >> iptables.sh
echo "iptables -A OUTPUT -o $d -p tcp --dport $s -j DROP" >> iptables.sh
echo "iptables -A OUTPUT -o $d -p tcp --sport $s -j DROP" >> iptables.sh
echo "iptables -A OUTPUT -o $d -p udp --dport $s -j DROP" >> iptables.sh
echo "iptables -A OUTPUT -o $d -p udp --sport $s -j DROP" >> iptables.sh
echo "iptables -A PREROUTING -i $d -p tcp --dport $s -j DROP" >> iptables.sh
echo "iptables -A PREROUTING -i $d -p tcp --sport $s -j DROP" >> iptables.sh
echo "iptables -A PREROUTING -i $d -p udp --dport $s -j DROP" >> iptables.sh
echo "iptables -A PREROUTING -i $d -p udp --sport $s -j DROP" >> iptables.sh
echo "iptables -A FORWARD -i $d -p tcp --dport $s -j DROP" >> iptables.sh
echo "iptables -A FORWARD -o $d -p tcp --dport $s -j DROP" >> iptables.sh
echo "iptables -A FORWARD -i $d -p tcp --sport $s -j DROP" >> iptables.sh
echo "iptables -A FORWARD -o $d -p tcp --sport $s -j DROP" >> iptables.sh
echo "iptables -A FORWARD -i $d -p udp --dport $s -j DROP" >> iptables.sh
echo "iptables -A FORWARD -o $d -p udp --dport $s -j DROP" >> iptables.sh
echo "iptables -A FORWARD -i $d -p udp --sport $s -j DROP" >> iptables.sh
echo "iptables -A FORWARD -o $d -p udp --sport $s -j DROP" >> iptables.sh
echo "iptables -A POSTROUTING -o $d -p tcp --dport $s -j DROP" >> iptables.sh
echo "iptables -A POSTROUTING -o $d -p tcp --sport $s -j DROP" >> iptables.sh
echo "iptables -A POSTROUTING -o $d -p udp --dport $s -j DROP" >> iptables.sh
echo "iptables -A POSTROUTING -o $d -p udp --sport $s -j DROP" >> iptables.sh
echo "#**********************This is Divider**************************#" >> iptables.sh
done
done
echo "service iptables save" >> iptables.sh
echo "service iptables restart" >> iptables.sh
service iptables restart

所创建的iptables规则
链接: http://pan.baidu.com/s/1dEpubzN 密码: 59ra
Demo Preview: 链接: http://pan.baidu.com/s/1ba7FdG 密码: ws2i