LoveUnix » DB2 & Informix » db2who和db2kick
让LU留住您的每

一天 让LU博客留住您的每一天
2007-8-31 14:02 xn_sung
db2who和db2kick

db2 list applications 显示的连接ip是十六进制的,有时候需要根据ip杀连接,实在是麻烦,所以我自己写了两个bash函数:

hex2dec()
    {
        echo $((16#${1:0:2})).$((16#${1:2:2})).$((16#${1:4:2})).$((16#${1:6:2}))
    }

db2who()
    {
        db2 list applications | awk '{print $4}'| awk -F'.' '/^C/{print $1}' > ./tmp.$$1
        for i in `cat ./tmp.$$1`
            do
                hex2dec $i >> ./tmp.$$2
            done
        unset i
        sort -d ./tmp.$$2 | uniq -c | sort -n
        echo "Total :" `cat ./tmp.$$2 | wc -l`
        rm ./tmp.$$1 ./tmp.$$2
    }

dec2hex()
    {
        echo $1 | awk -F'.' '{printf "%02X%02X%02X%02X\n",$1,$2,$3,$4}'
    }

db2kick()
    {
        HEX=`dec2hex $1`
        db2 list applications | grep $HEX | awk '{print $3}' > ./tmp.$$1
        for i in `cat ./tmp.$$1`
            do
                db2 "force application($i)"
                let j+=1
            done
        echo "  $j connections have been signaled."
        unset i j HEX
        rm ./tmp.$$1
    }


我对db2和shell都只有粗浅的了解,不知各位有没有更好的解决办法,写这种函数也挺难看的

[[i] 本帖最后由 xn_sung 于 2007-12-29 16:44 编辑 [/i]]

2007-8-31 16:27 fck
请问哪一列是ip?

2007-8-31 16:37 xn_sung
abc   db2jcc_applica 429        C0A8008D.EC15.070831042245     wed      1

C0A8008D,这个就是IP了。。。

2007-8-31 20:32 beginner-bj
snapshot里能看到十进制的IP

2007-8-31 20:33 seven
哈哈,不错的,那个hex2dec的函数写的不错!

我当初还没搞定shell写hex 2 dec的转换,只好用c写了个。

需要注意的是:
When the hexadecimal versions of the IP address or port number begin with 0-9, they are changed to G-P respectively. For example, "0" is mapped to "G", "1" is mapped to "H", and so on.
就是说:0-9对于与G-P
转换的时候要注意一下

2007-9-3 08:56 xn_sung
[quote]原帖由 [i]seven[/i] 于 2007-8-31 20:33 发表 [url=http://www.loveunix.com/redirect.php?goto=findpost&pid=715377&ptid=76337][img]http://www.loveunix.com/images/common/back.gif[/img][/url]
哈哈,不错的,那个hex2dec的函数写的不错!

我当初还没搞定shell写hex 2 dec的转换,只好用c写了个。

需要注意的是:
When the hexadecimal versions of the IP address or port number begin with 0-9 ... [/quote]
版主老大,没太明白,怎么出来GP了呢?

2007-9-4 14:06 beginner-bj
[quote]原帖由 [i]xn_sung[/i] 于 2007-9-3 08:56 发表 [url=http://www.loveunix.net/discuz/redirect.php?goto=findpost&pid=716155&ptid=76337][img]http://www.loveunix.net/discuz/images/common/back.gif[/img][/url]

版主老大,没太明白,怎么出来GP了呢? [/quote]
你把机器的IP改成9.*.*.*,再试试看

2007-9-4 18:24 xn_sung
哦!呵呵。多谢版主指点,由于我这个db2只是个内网测试用的服务器,所以只考虑了192.168.×.×呵呵

2007-9-4 22:37 beginner-bj
[quote]原帖由 [i]xn_sung[/i] 于 2007-9-4 18:24 发表 [url=http://bbs.loveunix.net/redirect.php?goto=findpost&pid=716933&ptid=76337][img]http://bbs.loveunix.net/images/common/back.gif[/img][/url]
哦!呵呵。多谢版主指点,由于我这个db2只是个内网测试用的服务器,所以只考虑了192.168.×.×呵呵 [/quote]


那你能不能把hex2dec()给写完善了呢?:D

2007-9-5 10:23 xn_sung
可以,但是好像五、六行都搞不定了,我在想想有没有什么巧妙的方法哈

2007-9-5 13:11 beginner-bj
多加一行tr就好了。

我在ksh下这样
num=M301482C
set -A a `echo $num | tr 'G-P' '0-9' |sed 's/../ &/g'`
echo $((16#${a[0]})).$((16#${a[1]})).$((16#${a[2]})).$((16#${a[3]}))

AIX5.2 ksh不支持 ${num:0:2} 这样的用法

2007-9-5 13:29 xn_sung
一时没想到用tr哈,版主牛的,尤其是sed 's/../ &/g'`,学习了!

页: [1]
查看完整版本: db2who和db2kick


Powered by Discuz! Archiver 5.5.0  © 2001-2006 Comsenz Inc.