find -maxdepth 1 -type d -name “*” cp XXX {} \;
-maxdepth 必须在-type前
-t d 所有的目录
–maxdepth 几级目录
作用:给当前目录下的所有目录里干点啥…
find -maxdepth 1 -type f -name “*”
当前目录的所有文件
哎,越来越不自信,虽然这命令不用想也能打出来…但是想起来前天死活忘记在后面加{} \; 足足搞了半个小时…算了,还是勤快点记着吧。
find -maxdepth 1 -type d -name “*” cp XXX {} \;
-maxdepth 必须在-type前
-t d 所有的目录
–maxdepth 几级目录
作用:给当前目录下的所有目录里干点啥…
find -maxdepth 1 -type f -name “*”
当前目录的所有文件
哎,越来越不自信,虽然这命令不用想也能打出来…但是想起来前天死活忘记在后面加{} \; 足足搞了半个小时…算了,还是勤快点记着吧。
http://blog.chinaunix.net/u/22826/
Kiver非常勤快滴,俺休息一年了都没有说把以前的东西总结一下,今天去看了看,都被他总结了。
Yeah~~以后俺可以不用总结了,啥忘掉了直接去看就行了。 yah~~~yeah~~yeah~~~~
说起Kiever…一个做事非常认真的人,呵呵,比我还认真,就是比我死心眼。
第一次接触Kiever是在GuangDian ChuanMei….当年对他的映像就是,刻苦!没事就被发配到机去了,一去就一个晚上..家里还有老婆孩子…唉,当时的环境是典型的谁会谁出力,谁出力谁不讨好….
要是我,早就崩溃了…Kiever倒是蛮强悍滴…
linux下的iptables防火墙脚本,
没有用啥特殊的东西,没有加放DDOS之类的,就一个限制端口功能,
然后融合了收集来的一些其他iptables脚本,能Drop IP之类的。
总之用起来很方便,开机直接运行就行了,默认就开22和80。
过几天有空了添加一些增强,比如DDOS,高级过滤之类的。
现在没空啊….
内容如下:
#! /bin/bash
#Script fwinit.sh by erjing@@@126@@@com.
#Initial environment.
IPT=/sbin/iptables
DIR=/root/bin/fwinit
OUTIP=`ifconfig eth0|grep “inet addr”|awk ‘{print$2}’|awk -F \: ‘{print$2}’`
INIP=`ifconfig eth1|grep “inet addr”|awk ‘{print$2}’|awk -F \: ‘{print$2}’`
Allow_ip_inside=`cat $DIR/share/list |grep “allow_ip_inside=”|awk -F \= ‘{print$2}’`
Allow_ip_outside=`cat $DIR/share/list |grep “allow_ip_outside=”|awk -F \= ‘{print$2}’`
Allow_ports_inbound_inside=`cat $DIR/share/list |grep “allow_ports_intbound_inside=”|awk -F \= ‘{print$2}’`
Allow_ports_inbound_outside=`cat $DIR/share/list |grep “allow_ports_inbound_outside=”|awk -F \= ‘{print$2}’`
Drop_ip_outside=`cat $DIR/share/list |grep “drop_ip_outside=”|awk -F \= ‘{print$2}’`
Drop_ip_inside=`cat $DIR/share/list |grep “drop_ip_inside=”|awk -F \= ‘{print$2}’`
Good_ip_outside=`cat $DIR/share/list |grep “good_ip_outside=”|awk -F \= ‘{print$2}’`
Good_ip_inside=`cat $DIR/share/list |grep “good_ip_inside=”|awk -F \= ‘{print$2}’`
#Clean and set all to default.
$IPT -F INPUT
$IPT -X
$IPT -P INPUT ACCEPT
$IPT -F OUTPUT
$IPT -P OUTPUT ACCEPT
$IPT -F FORWARD
$IPT -P FORWARD DROP
#For local loop device.
$IPT -A INPUT -i lo -p all -j ACCEPT
$IPT -A OUTPUT -o lo -p all -j ACCEPT
#Common rule.
$IPT -A INPUT -m state –state ESTABLISHED -j ACCEPT
#For allow port in outside.
for Port in $Allow_ports_inbound_outside
do
for IP in $Allow_ip_outside
do
$IPT -A INPUT -i eth0 -p tcp -s $IP -d $OUTIP –dport $Port -j ACCEPT
$IPT -A INPUT -i eth0 -p udp -s $IP -d $OUTIP –dport $Port -j ACCEPT
$IPT -A INPUT -i eth0 -p icmp -s $IP -d $OUTIP -j ACCEPT
done
done
#For allow port in inside.
for Port in $Allow_ports_inbound_inside
do
for IP in $Allow_ip_inside
do
$IPT -A INPUT -i eth1 -p tcp -s $IP -d $INIP –dport $Port -j ACCEPT
$IPT -A INPUT -i eth1 -p udp -s $IP -d $INIP –dport $Port -j ACCEPT
$IPT -A INPUT -i eth1 -p icmp -s $IP -d $INIP -j ACCEPT
done
done
#For allow ip in outside. Warning: “you should be careful for use this, The ip address will be trusted, No limit! “
for IP in $Good_ip_outside
do
$IPT -I INPUT -i eth0 -s $IP -j ACCEPT
$IPT -I OUTPUT -o eth0 -d $IP -j ACCEPT
done
#For allow ip in inside. Warning: “you should be careful for use this, The ip address will be trusted, No limit! “
for IP in $Good_ip_inside
do
$IPT -I INPUT -i eth1 -s $IP -j ACCEPT
$IPT -I OUTPUT -o eth1 -d $IP -j ACCEPT
done
#For drop ip in outside.
for IP in $Drop_ip_outside
do
$IPT -I INPUT -i eth0 -s $IP -j DROP
$IPT -I OUTPUT -o eth0-d $IP -j DROP
$IPT -I FORWARD -i eth0 -d $IP -j DROP
done
#For drop ip in inside.
for IP in $Drop_ip_inside
do
$IPT -I INPUT -i eth1 -s $IP -j DROP
$IPT -I OUTPUT -o eth1 -d $IP -j DROP
$IPT -I FORWARD -i eth1 -d $IP -j DROP
done
$IPT -P INPUT DROP
$IPT -nL
——————————————————-
看到了吗?就是把文件解压缩到/root/bin/fwinit,然后执行,文件会从/root/bin/fwinit/share/list里找哪些端口需要打开,哪些是信任主机。
/root/bin/fwinit/share/list内容如下:
#There is port and IP list for fwinit.sh
allow_ip_outside= 0.0.0.0/0
allow_ip_inside=
allow_ports_inbound_outside=22 80
allow_ports_intbound_inside=
good_ip_outside=1.2.3.4/32
good_ip_inside=
drop_ip_outside=
drop_ip_inside=
简单吧,写这个就是为了简单,看到那么多的linux防火墙脚本我头都要大了,我仅仅想有一个脚本能从配置文件里读取参数然后开放端口之类的,就需要这个功能而已。
新建了一个cygwin镜像,因为cygwin.cn现在上的人好像很多,这次安装用了足足12小时….
就这个了,大家宣传一下吧,算是做点贡献,自动升级的。
for w in a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9
do
mkdir $w
done
for x in a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9
do
cd $x
for m in a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9
do
mkdir $m
done
for y in a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9
do
cd $y
for x in a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9
do
mkdir $x
done
cd ..
done
cd ..
done
好玩吧,建立三层目录,类似squid一样的。不过真的好用吗?结果是否定的,实践证明,管理巨型存储用二级目录就行了,三级目录只能影响性能,没有实际用处。
#!/bin/sh
#备份数据库
mysqldump -uroot -p123456 haocaiwu > haocaiwu.sql
#删除内容数据库导出临时文件
rm -f /cygdrive/r/w/wiki_doc_content_tab.tmp
#导出数据
mysql -uroot -p123456 haocaiwu -e”select concat(’update wiki_doc set doc_content=\”,doc_content,’\’ where doc_id=’,doc_id,’;') into outfile ‘r://w/wiki_doc_content_tab.tmp’ from wiki_doc”
#转化编码为GBK
iconv.exe -f utf-8 -t GBK /cygdrive/r/w/wiki_doc_content_tab.tmp > /cygdrive/r/w/wiki_doc_content_tab.tmp.gbk
#去掉内容里所有的链接,初始化数据
cat /cygdrive/r/w/wiki_doc_content_tab.tmp.gbk |sed -e ’s/<\/a>//g’|sed -e ’s/<a href[^>]*>//g’ > /cygdrive/r/w/wiki_doc_content_tab.tmp.gbk.clean
#运行clean_tesu.sh,去掉特殊字符(目前不能在shell下运行,只能复制粘贴了运行内容了。得到wiki_doc_content_tab.tmp.gbk.clean.again)
#删除keyword数据导出临时文件
rm -f /cygdrive/r/w/keyword.tmp
#导出keyword数据
mysql -uroot -p123456 -Dhaocaiwu -e”SELECT doc_title INTO OUTFILE ‘r://w/keyword.tmp’ FROM wiki_doc”
#转化为GBK编码
iconv.exe -f utf-8 -t GBK /cygdrive/r/w/keyword.tmp > /cygdrive/r/w/keyword.tmp.gbk
#去掉多余字符,并且去掉重复,格式化keyword文件。
./makekeyword.sh
#|tr “\n” “\t”
#首先进行unicode编码,防止汉字在sed的处理的时候出问题。
cat keyword.tmp.gbk.clean | ./urlencode > key.en
按照长度排列,这样会首先匹配词组,然后再匹配字。
awk ‘{print length($0),$0}’ key.en |sort -nr|sed ‘/^[^ ]* /s///’> key.en.swp;mv key.en.swp key.en
#给key.en加上两个(),生成key.enformated,方便后面做匹配。
cat key.en |awk ‘{print “(”$1″)”}’ > key.enformated
cat wiki_doc_content_tab.tmp.gbk.clean.again| ./urlencode > c.en
生成第一次编码keyword文件,
cat key.en|./urldecode > key.de
echo “” > url.en1 ;for i in `cat key.de`; do ./e.sh $i >> url.en1 ;done
cat url.en1 |./urlencode > url.en2
合并key.en和url.en2到 k_url.en,这样k_url.en可以被用来当作匹配有keyword的url文件,可以直接调用啦。(注意还没有自动删除最上面一行空白)
paste.exe key.enformated url.en2 >k_url.en
#开始转换
#for i in `cat key.en`;do m=`cat k_url.en|grep $i`; sed -e “s/$i/$m/g” c.en > c.en.tmp;mv c.en.tmp c.en;done
#for i in `cat key.en`;do m=cat k_url.en|grep $i|awk ‘{print $2}’;sed -e “s/$i/$m/g” c.en > e.en.tmp;mv c.en.tmp c.en;done
#for i in `cat key.en`;do m=`cat k_url.en|grep $i|awk ‘{print $2}’`;sed -e “s/$i/$m/g” c.en > c.en.tmp;mv c.en.tmp c.en;done
#for i in `cat key.en`;do m=`cat k_url.en|grep $i|awk ‘{print $2}’`;sed -e ’s/”$i”/”$m”/g’ c.en > c.en.tmp;mv c.en.tmp c.en;done
#for i in `cat key.en`;do m=`cat k_url.en|grep $i|awk ‘{print $2}’`;sed -e “s/$i/$m/g” c.en > c.en.tmp;mv c.en.tmp c.en;done
for i in `cat key.en`;do m=`cat k_url.en|grep “(”$i”)”|awk ‘{print $2}’`;sed -e “s/$i/$m/g” c.en > c.en.tmp;mv c.en.tmp c.en;done
#转换GBK到utf-8
#iconv.exe -f GBK -t utf-8 /cygdrive/r/w/wiki_doc_content_tab.tmp.gbk.clean > /cygdrive/r/w/wiki_doc_content_tab.tmp
#导入数据库
#mysql -uroot -p123456 haocaiwu < r://w/wiki_doc_content_tab.tmp
过滤掉内容的<a href=xxx></a>
cat sewinter_wikihaocaiwu.gb2312 |sed -e ’s/<\/a>//g’|sed -e ’s/<a href[^>]*>//g’
过滤出简介,用时间2008-01-20 22:22:00 这样的格式
cat sewinter_wikihaocaiwu.gb2312.clean|awk -F”‘[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9]’,” ‘NR==3 {print $1}’
过滤出正文,用时间2008-01-20 22:22:00 这样的格式
cat sewinter_wikihaocaiwu.gb2312.clean|awk -F”‘[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9]’,” ‘NR==3 {print $2}’
得到内容部分
cat sewinter_wikihaocaiwu.gb2312.clean|awk -F”‘[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9]’,” ‘NR==1 {print $2}’
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
在mysql配置的时候:
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
default-character-set=utf8
在建立数据库的时候,最好就直接建立成utf-8的。
CREATE DATABASE haocaiwu
CHARACTER SET utf8
DEFAULT CHARACTER SET utf8
COLLATE utf8_general_ci
DEFAULT COLLATE utf8_general_ci ;
如果是已经建立好的数据库,一定要把数据库修改成utf-8的,这样在后面select的时候才不会出错,
ALTER DATABASE haocaiwu
CHARACTER SET utf8
DEFAULT CHARACTER SET utf8
COLLATE utf8_general_ci
DEFAULT COLLATE utf8_general_ci;
这样数据会追加到后面:
rm -f /cygdrive/z/w/wiki_doc_content_tab.tmp
mysql -uroot -p123456 -Dhaocaiwu -e”SELECT doc_content INTO OUTFILE ‘z://w/wiki_doc_content_tab.tmp’ FIELDS TERMINATED BY ‘#’ FROM wiki_doc”
iconv.exe -f utf-8 -t GBK /cygdrive/z/w/wiki_doc_content_tab.tmp > /cygdrive/z/w/wiki_doc_content_tab.tmp.gbk
iconv.exe -f GBK -t utf-8 /cygdrive/z/w/wiki_doc_content_tab.tmp.gbk > /cygdrive/z/w/wiki_doc_content_tab.tmp
mysql -uroot -p123456 -Dhaocaiwu -e”LOAD DATA INFILE ‘z://w/wiki_doc_content_tab.tmp’ INTO TABLE wiki_doc FIELDS TERMINATED BY ‘#’ (doc_content)”
正确替换的格式是,唯一的缺陷是没有replace”‘”,所以在导入的时候可能会出问题,如果是php程序导入的内容估计没有问题,因为在php程序往数据库里写的时候就转义过了。
mysql -uroot -p123456 haocaiwu -e”select concat(’update wiki_doc set doc_content=\”,doc_content,’\’ where doc_id=’,doc_id,’;') into outfile ‘z://w/wiki_doc_content_tab.tmp’ from wiki_doc where doc_id between 50 and 200″
mysql -uroot -p123456 haocaiwu < z://w/wiki_doc_content_tab.tmp
这样可以替换原数据,
rm -f /cygdrive/z/w/wiki_doc_content_tab.tmp
mysql -uroot -p123456 haocaiwu -e”select concat(’update wiki_doc set doc_content=\”,doc_content,’\’ where doc_id=’,doc_id,’;') into outfile ‘z://w/wiki_doc_content_tab.tmp’ from wiki_doc”
iconv.exe -f utf-8 -t GBK /cygdrive/z/w/wiki_doc_content_tab.tmp > /cygdrive/z/w/wiki_doc_content_tab.tmp.gbk
iconv.exe -f GBK -t utf-8 /cygdrive/z/w/wiki_doc_content_tab.tmp.gbk > /cygdrive/z/w/wiki_doc_content_tab.tmp
mysql -uroot -p123456 haocaiwu < z://w/wiki_doc_content_tab.tmp
导出2000-3000,并且替换。
rm -f /cygdrive/z/w/wiki_doc_content_tab.tmp
mysql -uroot -p123456 haocaiwu -e”select concat(’update wiki_doc set doc_content=\”,doc_content,’\’ where doc_id=’,doc_id,’;') into outfile ‘z://w/wiki_doc_content_tab.tmp’ from wiki_doc where doc_id between 2000 and 3000″
iconv.exe -f utf-8 -t GBK /cygdrive/z/w/wiki_doc_content_tab.tmp > /cygdrive/z/w/wiki_doc_content_tab.tmp.gbk
iconv.exe -f GBK -t utf-8 /cygdrive/z/w/wiki_doc_content_tab.tmp.gbk > /cygdrive/z/w/wiki_doc_content_tab.tmp
mysql -uroot -p123456 haocaiwu < z://w/wiki_doc_content_tab.tmp
rm -f /cygdrive/z/w/wiki_doc_content_tab.tmp
mysql -uroot -p123456 haocaiwu -e”select concat(’update wiki_doc set doc_content=\”,doc_content,’\’ where doc_id=’,doc_id,’;') into outfile ‘z://w/wiki_doc_content_tab.tmp’ from wiki_doc where doc_id”
iconv.exe -f utf-8 -t GBK /cygdrive/z/w/wiki_doc_content_tab.tmp > /cygdrive/z/w/wiki_doc_content_tab.tmp.gbk
cat /cygdrive/z/w/wiki_doc_content_tab.tmp.gbk |sed -e ’s/<\/a>//g’|sed -e ’s/<a href[^>]*>//g’ > /cygdrive/z/w/wiki_doc_content_tab.tmp.gbk.clean
iconv.exe -f GBK -t utf-8 /cygdrive/z/w/wiki_doc_content_tab.tmp.gbk.clean > /cygdrive/z/w/wiki_doc_content_tab.tmp
mysql -uroot -p haocaiwu < z://w/wiki_doc_content_tab.tmp
得到keyword并且过滤掉特殊字符,并且去掉重复字符:
mysql -uroot -p -Dhaocaiwu -e”SELECT doc_title INTO OUTFILE ‘z://w/keyword.tmp’ FROM wiki_doc
iconv.exe -f utf-8 -t GBK /cygdrive/z/w/keyword.tmp > /cygdrive/z/w/keyword.tmp.gbk
cat keyword.tmp.gbk |sed \
-e ’s/([^>]*)//g’ \
-e ’s/([^>]*)//g’ \
-e ’s/!//g’ \
-e ’s/。//g’ \
-e ’s/,//g’ \
-e ’s/?//g’ \
-e ’s/@//g’ \
-e ’s/#//g’ \
-e ’s/$//g’ \
-e ’s/%//g’ \
-e ’s/︿//g’ \
-e ’s/&//g’ \
-e ’s/*//g’ \
-e ’s/-//g’ \
-e ’s/+//g’ \
-e ’s/://g’ \
-e ’s/;//g’ \
-e ’s/'//g’ \
-e ’s/"//g’ \
-e ’s/~//g’ \
-e ’s/`//g’ \
-e ’s/·//g’ \
-e ’s/¥//g’ \
-e ’s/|//g’ \
-e ’s/“//g’ \
-e ’s/”//g’ \
-e ’s////g’ \
-e ’s/——//g’ \
-e ’s/—//g’ \
-e ’s/、//g’ \
-e ’s/{[^>]*}//g’ \
-e ’s/<[^>]*>//g’ \
-e ’s/[[^>]*]//g’ \
-e ’s/"[^>]*"//g’ \
-e ’s/“[^>]*”//g’ \
-e ’s/《[^>]*》//g’ \
-e ’s/\~//g’ \
-e ’s/\`//g’ \
-e ’s/\!//g’ \
-e ’s/\@//g’ \
-e ’s/\#//g’ \
-e ’s/\$//g’ \
-e ’s/\%//g’ \
-e ’s/\^//g’ \
-e ’s/\&//g’ \
-e ’s/\*//g’ \
-e ’s/(//g’ \
-e ’s/)//g’ \
-e ’s/\_//g’ \
-e ’s/\+//g’ \
-e ’s/{//g’ \
-e ’s/}//g’ \
-e ’s/\[//g’ \
-e ’s/\]//g’ \
-e ’s/\|//g’ \
-e ’s/\://g’ \
-e ’s/\”//g’ \
-e ’s/\>//g’ \
-e ’s/\?//g’ \
-e ’s/\,//g’ \
-e ’s/\.//g’ \
-e ’s/\///g’ \
-e ’s///g’ \
-e ’s///g’ \
-e ’s///g’ \
-e ’s///g’ \
-e ’s///g’ \
-e ’s/\[[^>]*]\]//g’ \
-e ’s/\”[^>]*\”//g’ \
-e ’s/\<[^>]*\>//g’ \
-e ’s/{[^>]*}//g’ \
-e ’s/\<//g’ \
-e ’s/\;//g’ \
-e “s/\’[^>]*\’//g” \
-e ’s/\\//g’ \
-e “s/\’//g”
注意:
1、不要使用 -e ’s/{[^>]*}//g’ \,也不能用-e ’s/\<[^>]*\>//g’ \,否则会匹配所有的英文单词,导致维生素没有ABC区分,只有“维生素”这个单词的关联。
2、匹配{}或者()这样的应该先放在前面执行。
2、部分汉字损坏。
3. -e ’s/://g’ \ 这句删除很重要。
于季强,以前总是开玩笑说他鱼机枪,非常好的一个人。海浩网的创始人,认识他是在99年吧。
别的不说了,就一句评价:人才。
小于和我算不上挚友,但是,相信如果我没了(呸呸呸),小于也会记得我这个朋友。
今日见到恐怖,他说也是小于去世以后才来海浩,其实我未尝不是,我们这些老会员在小于最需要的时候注册一个马甲,跑了,然后数年不上去看看。突然有一天冒出来,耀武扬威地显摆一下自己的注册日期,我想这么多年我在海浩除了显摆以外什么都没干。惭愧啊。
今日听闻司空不久前也去世了,我都不知道谁死司空,但是看到追悼的人如此之多,我被震撼了!一朵云更是整理了司空的文章,篇篇精彩!我仅阅读了几篇,就知道司空不是凡人,越看越觉得惋惜,越看越觉得认识司空,司空走了,我已经有了失去一个好朋友的感觉!
先是年初的小于的离去,再是现在司空的逝世,2008年,我不会忘记这一年。
留一篇司空的脚印,缅怀司空吧!
除最后几行
方法1:
tac file|sed 1,3d|tac
方法2:
sed ‘$d’ file|sed ‘$d’ |sed ‘$d’
tac就是反的cat,不难理解,先反着来删除前面的,然后在把文件反过去…
第二种…$d就是最后一行啦,删除三行就来三下…删除10行就成串串香了…
完整的脚本
#!/bin/bash
file=$1
tmpfile=$1.tmp
tac $file |sed -e ‘1,3d’|tac > $tmpfile
mv $tmpfile $file
这样搭配find就能替换全部的文件,起名叫do_remove_end_line.sh。
find ./ -name “*.htm” -exec ./do_remove_end_line.sh {} \;
全部的.htm文件都处理一下。
国际企业IT规划
1、IT policy, 企业IT规范。
2、如何做专业的IT规划,企业IT的职能。
3、企业IT网络规划&配置。
网段
VPN
IPEC
SSL
4、企业IT的核心,域管理。
域规划
域合并
linux加入域的几种方式
能和AD融合的几种应用
SSL VPN
PAM (Apache,FTP….)
Suversion
5、企业OA管理,邮件系统,仓库(cvs,subversion)。
6、运营网络规划设计。
先这样吧,慢慢来。
Powered by WordPress