存档

文章标签 ‘shell’

分享:Discuz论坛自动发帖机

2011年3月6日 15 条评论

最近,因为工作上需要,要往自己搭建的discuz论坛系统上发帖。刚开始,在网上找了好多,总是出现各种各样的问题,有的要注册,有的要收费,还有的在用的过程中不稳定,经常出现各种异常。浪费了一整天的时间,没有找到合适的,于是决定自己写一个。下面分享一个做的过程中遇到的一些问题,以及解决的方法。最后,我会把源码分享出来,希望能够对有需要的朋友有所帮助。

1. 准备工作

开始动手写程序之前,需要了解一下discuz发帖的基本原理。这里最好的方法就是用抓包工具来抓取浏览器发包时与web服务器之间的交互过程。可选的工具有Firebug和HttpWatch。Firebug是Firefox上专用的,是免费的,不过功能没有HttpWatch强大。HttpWatch是可以在IE和Firefox上用的,功能比较强大,但是收费的,不过网上应该能下到免费版的。我个人比较推荐使用功能强大的HttpWatch。 阅读全文…

用Shell脚本对IP的字符串与整数形式进行相互转换

2010年5月27日 11 条评论

今天给别人写的一个小脚本,用来对ip的字符串与整数形式进行相互转换,在这里分享一下,希望对用到的朋友有所帮助,因为程序本身比较简单,这里不多做解释,直接贴内容:

阅读全文…

分类: 程序人生 标签: ,

用shell脚本求给定字符串的64位签名(MD5)

2010年1月8日 没有评论

最近写一个东东用到的,分享一下:
1. 十进制版本

1
2
3
4
5
6
7
function get_dec_hash64()
{
    local url=$1
    local m=`echo -n "$url" | md5sum | awk '{print $1}'`
    local h="\x${m:0:2}\x${m:2:2}\x${m:4:2}\x${m:6:2}\x${m:8:2}\x${m:10:2}\x${m:12:2}\x${m:14:2}"
    echo -ne $h | od -An -t u8 |awk '{print $1}'
}

解释一下:
(1)用md5sum求出来的是128位的md5, 一般用的64位md5是截取128位的前64位,进行字节序转换的结果。所以首先用md5sum求128位md5,得到m
(2)取m高64位,并将其转化为echo可以识别的二进制字节流形式,得到h
(3)通过echo把二进制字节流h做为od的输入,od指定输出格式为8位的unsigned,就得到了结果

2. 十六进制版本

1
2
3
4
5
6
7
function get_hex_hash64()
{
	local url=$1
	local m=`echo -n "$url" | md5sum | awk '{print $1}'`
	local h="${m:14:2}${m:12:2}${m:10:2}${m:8:2}${m:6:2}${m:4:2}${m:2:2}${m:0:2}"
	echo -ne "$h" | awk '{print "0x"$1}'
}

如果理解了上面的十进制版本,这个十六进制版本就不难理解了。这里需要说明的一点是,上面的十进制版本,由od内部进行了字节序转换,而在十六进制版本这里最终的结果是直接echo出来的,所以这里要我自行进行字节序转换。区别主要在h。

分类: 程序人生 标签: , ,

Bash编程中常见的一些陷阱(Pitfalls)

2009年12月5日 1 条评论

最近看到一篇关于bash使用过程中的一些误区的文章,很赞,把我们平常写脚本过程中的一些容易遇到的陷阱基本都提到了。这里就不转载了,给出相关链接,喜欢的朋友可以点这个链接过去看看,保证绝对有收获!

1.中文版的:http://tech.idv2.com/2008/01/09/bash-pitfalls/
2.英文版的:http://mywiki.wooledge.org/BashPitfalls

linux下进程名和进程id的转换

2009年8月4日 没有评论

1.由进程名得到进程id:  pidof  xx , 其中xx是进程名

2.由进程id得到进程名: readlink /proc/xxx/exe,其中xxx是进程的id

3.如果是shell程序,因为shell的进程名是相应的shell名,所以不能直接根据shell脚本的名字来获取其进程id,可以由以下两种方法(以sh为例):

(1)通过pidof sh得到所有的sh进程的pid的集合,然后再通过ps aux|grep xxx.sh得到的进程的id,来和前面得到的id进行匹配,如果匹配到的话,就说明匹配的id是该脚本的进程id.

(2)pid=`ps gaux | grep xxx.sh | grep -v grep | awk ‘{print $2}’`

分类: 程序人生 标签: ,