LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: KornLee

【shell技巧交流区】:[把你的shell技巧贴出来,让我们分享]

[复制链接]
发表于 2009-2-23 10:01:34 | 显示全部楼层

绝对原创!禁止ssh的非法连接,动态更新firewall脚本

#/usr/sbin
# redhat as5, 列出 secure中被 拒的ip,如重复出现2次,即加入黑名单
#要提前安装好dynfw-1.0.1
#如果是as4,第一行则要 改成 tail -300 /var/log/messages

tail -300 '/var/log/secure' |grep 'refused' |awk '{print $9}' > killlist

sed -e 's/::ffff://g' killlist > killtemp
#将所有::ffff:去除
myvar=1
rq=` date +%F___%H:%M:%S `
#n1=`cat -n killtemp|awk 'NR==1'`
ct=0

while read line
do   
  # echo "$line" #本行内容
n1=$n

#     echo $myvar

n=`cat killtemp|awk 'NR=='$myvar`   

if [ "$n1" == "$n" ]
then  

  ct=$(($ct+1))
#echo ct is $ct
else
ct=1
fi
#n1=`cat  killtemp|awk 'NR=='$myvar`

myvar=$(( $myvar + 1 ))

echo ct is $ct "----n1 is" $line
if [ "$ct" -eq "2" ]

then
echo "ip " $n1  should be dropped!
ipdrop $n1 on
fi

done <killtemp
回复 支持 反对

使用道具 举报

发表于 2009-3-12 13:09:29 | 显示全部楼层

统计一个月内的存储的增长量

#!/bin/bash
#Program:
#        used to show ...
#History:
#        1st release  09/03/09  by
filelist=`find /home/public/video -path "/home/public/video/.snapshot" -prune -o -name "*.*" -mtime -30`
total=0
for i in $filelist
do
filecap=`du -k $i|awk '{print $1}'`
total=$(($filecap+$total))
done
echo -e "`date +%Y%m%d`">>result.txt
echo -e "The storage of temobi in NAS between this mounth  is : $(($total/1024/1024))G \n">>result.txt
回复 支持 反对

使用道具 举报

发表于 2009-8-6 10:43:28 | 显示全部楼层
ls -i 可以查看 inode
回复 支持 反对

使用道具 举报

发表于 2009-8-26 22:47:11 | 显示全部楼层
看了半天不错。
我也来一个,用awk统计重复出现的字段,处理日志的时候常常用到
awk -F"[ #]" '{a[$2]++}END{for(i in a)print i" "a}' filename.log
按空格和#分割的字段,统计第二列重复出现的字段的次数。
回复 支持 反对

使用道具 举报

发表于 2009-9-23 09:13:59 | 显示全部楼层
Post by xcj3232;1803237
请你解释一下你的程序的意思好不好!
执行是正确,新手的我还是没有弄明白!!!



作者: 777
#比较两个数的大小

  1. #! /bin/bash
  2. max=$1
  3. while [ $2 ]; do
  4. [ $max -lt $2 ] && max=$2
  5. shift
  6. done
  7. echo $max
复制代码


max=$1

while [ $2 ]; do

#这里就是这个意思 return $max < $2 ? max : max =$2;
[ $max -lt $2 ] && max=$2

shift
done
echo $max
回复 支持 反对

使用道具 举报

发表于 2010-4-14 23:02:51 | 显示全部楼层

来几个经常用的

网上下的很多压缩文件解开文件名都是乱码,手工改很烦而且还不知道本来的名字,后来发现了iconv这个很爽的工具
for src in *;do
        filename=`echo "$src" | iconv -f gb2312 -t utf8`
        mv "$src" "$filename"
done
文件多的话用嵌套,以后就不会有乱码了。这个工具也可以用来转码,iconv -f [源文件的编码] -t [要转成的编码] yourfile > newfile

有时候文件多了就有重复的,找出来吧,省点空间
for src in *;do
        find /dir -iname "$src"
done

网上下下来的mp3文件名都很混乱,不过一般id3v2的标签很正规,所以我一般用标签的标题来改文件名
for src in *;do
        title=`mid3v2 -l "$src" | sed -n '/^TIT2/p' | sed -e 's|TIT2=||' -e 's|/|_|'`
        mv "$src" "$title"
done
回复 支持 反对

使用道具 举报

发表于 2011-9-6 21:26:04 | 显示全部楼层

导出环境变量错误

Post by KornLee;197584
用自动导入函数的方法,可以在命令行下像执行命令一样快捷,而且速度快,占用资源少.
1,建立自己的函数库
mkdir functionlib
然后将常用的脚本改成函数的语法,如:
function filename { command ; }
将filename拷贝到functionlib中,
2,修改环境文件,在/etc/profile中添加
export FPATH=$HOME/functionlib
3,重登录一下
这样的话,你就可以随时用像ls那样运行你自己的filename"命令"
而不需要用什么dot,sh,来运行你的函数/脚本啦~~
如果在脚本中运行,可以在脚本顶部用
#!/bin/sh
##
autoload filename        //来自动导入函数.
...
filename                //调用函数
...


===============================
2.修改环境文件,在/etc/profile文件中添加
export PATH=$PATHHOME/functionlib
回复 支持 反对

使用道具 举报

发表于 2011-9-23 08:29:35 | 显示全部楼层
好贴 顶一个
回复 支持 反对

使用道具 举报

发表于 2011-11-8 22:23:08 | 显示全部楼层
Post by KornLee;230614
都是讨论如何使程序继续的,那么怎么实现按一个键暂停呢?
如:
#!/bin/ksh
#这是我写的一个显示系统随机数的脚本
#的例子
##

  1. (($#!=1)) && { print "Usage:random number[Enter]";exit 1;}
  2. print "\n\n\n"
  3. msg="Creating Random Numbers..."
  4. n=1
  5. while (($n<=$1))
  6. do
  7. print -n "\t\t\t$msg$(print $RANDOM)\r"
  8. ((n+=1))
  9. done
  10. print "\n"
  11. exit 0
复制代码

当运行的时候,屏幕显示
Creating Random Numbers...20102
他的数字不断变化,那我想用任何一个键使它暂停,再按一个键让它继续,(当然用CTRL+S/CTRL+Q也可以实现,)
请问:如何实现?,


SHELL的话 可以用read命令把
回复 支持 反对

使用道具 举报

发表于 2012-3-16 13:48:21 | 显示全部楼层
Post by KornLee;282494
在linux中,有一个很有趣的命令--watch,他的作用很有趣!
他作用是以全屏幕方式重复地执行指定的命令,用户可以通过他了解命令的运行情况.
如,我们要观察内存动态的变化,那么就可以:
watch free
这样就可以动态的观察内存中各个指标在指定时间内的变化啦~~,
如要观察虚拟内存的变化,也可以通过打开另外一个终端,而不耽误当前终端的操作!:
xterm -e watch -n 1 vmstat &
这样就会*出一个xterm,显示有关虚拟内存的情况.
详细解释,请:
watch --help
man watch


这个不错...  很实用也很方便.....
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表