查看: 16236|回复: 32

[精华] IP转换的过程!

[复制链接]
招聘 : Linux运维
论坛徽章:
235
紫蜘蛛
日期:2007-09-26 17:05:46玉兔
日期:2007-09-26 17:05:05现任管理团队成员
日期:2011-05-07 01:45:08玉兔
日期:2006-08-29 20:38:48紫蜘蛛
日期:2007-09-26 17:05:34阿斯顿马丁
日期:2013-11-19 10:38:16奔驰
日期:2013-10-16 09:08:58红旗
日期:2014-01-09 11:57:39路虎
日期:2013-08-13 14:52:35林肯
日期:2015-05-19 13:01:16
跳转到指定楼层
1#
发表于 2007-11-15 19:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在数据库的开发和管理过程中,时常用到需要查询链接对应的IP地址!
一般都是用这个命令db2 list applications,但是db2的这个命令有一个不合理的地方,就是他显示IP是以16进制的形式,
所以通常需要把进程对应的“应用程序标识”的小数点前的那个字符串,转换成10进制的数来检查IP。

于是乎我写了一个小过程,可以把那个字符串直接转换成ip地址的形式,不敢独享,现公布给大家。

程序如下:

[php]
-- Start of generated script for 169.254.11.164-db2-DW (ccp)
--  Nov-15-2007 at 17:35:12
drop  PROCEDURE CCP.GETIP;
SET SCHEMA CCP     ;

SET CURRENT PATH = "SYSIBM","SYSFUN","SYSPROC","CCP";

CREATE PROCEDURE CCP.GETIP
(IN I_IP  VARCHAR(8),
  OUT O_IP VARCHAR(20)
)
  LANGUAGE SQL
  NOT DETERMINISTIC
  CALLED ON NULL INPUT
  EXTERNAL ACTION
  OLD SAVEPOINT LEVEL
  MODIFIES SQL DATA
  INHERIT SPECIAL REGISTERS
  begin
  /*
  --auther:Z.X.T
  --DATE:2007-11-15
  --描述,本过程可以把16进制的IP转换成一般的IP形式
  --I_IP 输入:长度为8的16进制数,如'AABBCCDD'
  --O_IP 输出:ip地址形式如:192.168.1.0
  */
  declare first_IP1 varchar(3);
  declare first_IP2 varchar(3);
  declare first_IP3 varchar(3);
  declare first_IP4 varchar(3);
  declare first_IP11 INTEGER;
  declare first_IP21 INTEGER;
  declare first_IP31 INTEGER;
  declare first_IP41 INTEGER;
  if(I_IP='*N0') then
  set O_IP ='本地';
  return;
  end if;
  if(length(I_IP)!=8)  then
  set O_IP ='输入错误';
  return;
  end if;
  set first_IP1=Ucase(substr(I_IP,1,2));
  set first_IP2=Ucase(substr(I_IP,3,2));
  set first_IP3=Ucase(substr(I_IP,5,2));
  set first_IP4=Ucase(substr(I_IP,7,2));
  set first_IP11=INTEGER(case substr(first_IP1,1,1) when 'A' then '10' when 'B' then '11' when 'C' then '12'
                                                     when 'D' then '13' when 'E' then '14' when 'F' then '15'
                                                                                         when 'G' then '0' else substr(first_IP1,1,1) end)*16
         +INTEGER(case substr(first_IP1,2,1) when 'A' then '10' when 'B' then '11' when 'C' then '12'
                                                                        when 'D' then '13' when 'E' then '14' when 'F' then '15'
                                                                        when 'G' then '0' else substr(first_IP1,2,1) end);


  set first_IP21=INTEGER(case substr(first_IP2,1,1) when 'A' then '10' when 'B' then '11' when 'C' then '12'
                                                     when 'D' then '13' when 'E' then '14' when 'F' then '15'
                                                                                         when 'G' then '0' else substr(first_IP2,1,1) end
                                )*16
         +INTEGER(case substr(first_IP2,2,1) when 'A' then '10' when 'B' then '11' when 'C' then '12'
                                                                        when 'D' then '13' when 'E' then '14' when 'F' then '15'
                                                                        when 'G' then '0' else substr(first_IP2,2,1) end);

                 
  set first_IP31=INTEGER(case substr(first_IP3,1,1) when 'A' then '10' when 'B' then '11' when 'C' then '12'
                                                     when 'D' then '13' when 'E' then '14' when 'F' then '15'
                                                                                         when 'G' then '0' else substr(first_IP3,1,1) end
                                )*16
         +INTEGER(case substr(first_IP3,2,1) when 'A' then '10' when 'B' then '11' when 'C' then '12'
                                                                        when 'D' then '13' when 'E' then '14' when 'F' then '15'
                                                                        when 'G' then '0' else substr(first_IP3,2,1) end);
               
  set first_IP41=INTEGER(case substr(first_IP4,1,1) when 'A' then '10' when 'B' then '11' when 'C' then '12'
                                                     when 'D' then '13' when 'E' then '14' when 'F' then '15'
                                                                                         when 'G' then '0' else substr(first_IP4,1,1) end
                                )*16
         +INTEGER(case substr(first_IP4,2,1) when 'A' then '10' when 'B' then '11' when 'C' then '12'
                                                                        when 'D' then '13' when 'E' then '14' when 'F' then '15'
                                                                        when 'G' then '0' else substr(first_IP4,2,1) end);

  set O_IP=rtrim(char(first_IP11))||'.'||rtrim(char(first_IP21))||'.'||rtrim(char(first_IP31))||'.'||Rtrim(char(first_IP41));
end;

#SYNC 10;
commit;

-- End of generated script for 169.254.11.164-db2-DW (ccp)
----
[/php]
招聘 : Linux运维
论坛徽章:
235
紫蜘蛛
日期:2007-09-26 17:05:46玉兔
日期:2007-09-26 17:05:05现任管理团队成员
日期:2011-05-07 01:45:08玉兔
日期:2006-08-29 20:38:48紫蜘蛛
日期:2007-09-26 17:05:34阿斯顿马丁
日期:2013-11-19 10:38:16奔驰
日期:2013-10-16 09:08:58红旗
日期:2014-01-09 11:57:39路虎
日期:2013-08-13 14:52:35林肯
日期:2015-05-19 13:01:16
2#
 楼主| 发表于 2007-11-15 19:06 | 只看该作者

ok,存储过程完成!下来测试下看看!

[php]
C:\>db2 list applications

授权标识  应用程序名    应用程序    应用程序标识                DB      代理进程
                        句柄                                    名称    序号
-------- -------------- ---------- ------------------------------ -------- -----
CCP      db2bp.exe      341        A9FE0B84.G710.033705103339     DW       1
CCP      QuestCentral.e 325        A9FE0B84.G510.00F5C5102039     DW       1
CCP      QuestCentral.e 323        A9FE0B84.G410.00F5C5102026     DW       1
CCP      QuestCentral.e 302        A9FE0B84.C10F.00F5C5100723     DW       1
CCP      QuestCentral.e 262        A9FE0B84.I50F.00F5C5093513     DW       1
CCP      QuestCentral.e 258        A9FE0B84.I20F.00F5C5093332     DW       1
CCP      QuestCentral.e 186        A9FE0B84.LF0E.00F5C5084450     DW       1
CCP      clemlocal.exe  178        A9FE0BA6.B007.071115083616     DW       7
CCP      QuestCentral.e 82         A9FE0B84.AE0C.00F5C5082400     DW       3
TEST     db2jccWebConta 329        A9FE0B9E.F181.071115102030     CCP_BUSI 12
TEST     QuestCentral.e 320        A9FE0B88.N00C.019845101725     CCP_BUSI 2
TEST     QuestCentral.e 318        A9FE0B88.MD0C.019845101711     CCP_BUSI 1
TEST     db2jccWebConta 317        A9FE0B9E.F081.071115101401     CCP_BUSI 11
TEST     QuestCentral.e 313        A9FE0B88.G20C.019845101424     CCP_BUSI 1
TEST     QuestCentral.e 309        A9FE0B88.F10B.019845101203     CCP_BUSI 1
TEST     QuestCentral.e 306        A9FE0B88.E20B.019845100938     CCP_BUSI 3
TEST     QuestCentral.e 298        A9FE0B88.A90B.019845100509     CCP_BUSI 10


C:\>db2 list applications

授权标识  应用程序名    应用程序    应用程序标识                DB      代理进程
                        句柄                                    名称    序号
-------- -------------- ---------- ------------------------------ -------- -----
CCP      db2bp.exe      341        A9FE0B84.G710.033705103339     DW       1
CCP      QuestCentral.e 325        A9FE0B84.G510.00F5C5102039     DW       1
CCP      QuestCentral.e 323        A9FE0B84.G410.00F5C5102026     DW       1
CCP      QuestCentral.e 302        A9FE0B84.C10F.00F5C5100723     DW       1
CCP      QuestCentral.e 262        A9FE0B84.I50F.00F5C5093513     DW       1
CCP      QuestCentral.e 258        A9FE0B84.I20F.00F5C5093332     DW       1
CCP      QuestCentral.e 186        A9FE0B84.LF0E.00F5C5084450     DW       1
CCP      clemlocal.exe  178        A9FE0BA6.B007.071115083616     DW       7
CCP      QuestCentral.e 82         A9FE0B84.AE0C.00F5C5082400     DW       3
TEST     db2jccWebConta 329        A9FE0B9E.F181.071115102030     CCP_BUSI 13
TEST     QuestCentral.e 320        A9FE0B88.N00C.019845101725     CCP_BUSI 2
TEST     QuestCentral.e 318        A9FE0B88.MD0C.019845101711     CCP_BUSI 1
TEST     QuestCentral.e 313        A9FE0B88.G20C.019845101424     CCP_BUSI 1
TEST     QuestCentral.e 309        A9FE0B88.F10B.019845101203     CCP_BUSI 1
TEST     QuestCentral.e 306        A9FE0B88.E20B.019845100938     CCP_BUSI 3
TEST     QuestCentral.e 298        A9FE0B88.A90B.019845100509     CCP_BUSI 10


C:\>db2 connect to dw

   数据库连接信息

数据库服务器         = DB2/NT 8.2.0
SQL 授权标识         = DB2ADMIN
本地数据库别名       = DW


C:\>db2 call CCP.GETIP('A9FE0B88',?)

  输出参数的值
  --------------------------
  参数名: O_IP
  参数值: 169.254.11.136

  返回状态 = 0


C:\>

----
[/php]

使用道具 举报

回复
招聘 : Linux运维
论坛徽章:
235
紫蜘蛛
日期:2007-09-26 17:05:46玉兔
日期:2007-09-26 17:05:05现任管理团队成员
日期:2011-05-07 01:45:08玉兔
日期:2006-08-29 20:38:48紫蜘蛛
日期:2007-09-26 17:05:34阿斯顿马丁
日期:2013-11-19 10:38:16奔驰
日期:2013-10-16 09:08:58红旗
日期:2014-01-09 11:57:39路虎
日期:2013-08-13 14:52:35林肯
日期:2015-05-19 13:01:16
3#
 楼主| 发表于 2007-11-15 19:07 | 只看该作者
瞎玩得!希望对大家有帮助!

还有就是有什么bug的话,欢迎提出来!

使用道具 举报

回复
论坛徽章:
5
生肖徽章2007版:鼠
日期:2008-01-02 17:35:53生肖徽章2007版:鼠
日期:2008-01-02 17:35:53奥运会纪念徽章:体操
日期:2008-10-24 13:08:31
4#
发表于 2007-11-16 10:03 | 只看该作者
那么多case

使用道具 举报

回复
论坛徽章:
233
天枰座
日期:2016-02-02 09:36:332012新春纪念徽章
日期:2012-01-04 11:49:54ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41灰彻蛋
日期:2011-06-22 19:28:30现任管理团队成员
日期:2011-05-07 01:45:082010广州亚运会纪念徽章:拳击
日期:2011-04-08 16:56:552011新春纪念徽章
日期:2011-02-18 11:43:332011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:15
5#
发表于 2007-11-16 11:11 | 只看该作者
不错,支持。

我给你授个精

使用道具 举报

回复
招聘 : Linux运维
论坛徽章:
235
紫蜘蛛
日期:2007-09-26 17:05:46玉兔
日期:2007-09-26 17:05:05现任管理团队成员
日期:2011-05-07 01:45:08玉兔
日期:2006-08-29 20:38:48紫蜘蛛
日期:2007-09-26 17:05:34阿斯顿马丁
日期:2013-11-19 10:38:16奔驰
日期:2013-10-16 09:08:58红旗
日期:2014-01-09 11:57:39路虎
日期:2013-08-13 14:52:35林肯
日期:2015-05-19 13:01:16
6#
 楼主| 发表于 2007-11-16 11:35 | 只看该作者
啊,大牛给我加精华了!!!

使用道具 举报

回复
招聘 : Linux运维
论坛徽章:
235
紫蜘蛛
日期:2007-09-26 17:05:46玉兔
日期:2007-09-26 17:05:05现任管理团队成员
日期:2011-05-07 01:45:08玉兔
日期:2006-08-29 20:38:48紫蜘蛛
日期:2007-09-26 17:05:34阿斯顿马丁
日期:2013-11-19 10:38:16奔驰
日期:2013-10-16 09:08:58红旗
日期:2014-01-09 11:57:39路虎
日期:2013-08-13 14:52:35林肯
日期:2015-05-19 13:01:16
7#
 楼主| 发表于 2007-11-16 11:37 | 只看该作者
最初由 efan101 发布
[B]那么多case [/B]


本来想写一个函数呢!没时间整,过阵子不忙了优化下!!

使用道具 举报

回复
论坛徽章:
233
天枰座
日期:2016-02-02 09:36:332012新春纪念徽章
日期:2012-01-04 11:49:54ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41灰彻蛋
日期:2011-06-22 19:28:30现任管理团队成员
日期:2011-05-07 01:45:082010广州亚运会纪念徽章:拳击
日期:2011-04-08 16:56:552011新春纪念徽章
日期:2011-02-18 11:43:332011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:15
8#
发表于 2007-11-16 11:43 | 只看该作者
最初由 myfriend2010 发布
[B]啊,大牛给我加精华了!!!

[/B]



NND, 你自己加不好意思吧  

使用道具 举报

回复
招聘 : Linux运维
论坛徽章:
235
紫蜘蛛
日期:2007-09-26 17:05:46玉兔
日期:2007-09-26 17:05:05现任管理团队成员
日期:2011-05-07 01:45:08玉兔
日期:2006-08-29 20:38:48紫蜘蛛
日期:2007-09-26 17:05:34阿斯顿马丁
日期:2013-11-19 10:38:16奔驰
日期:2013-10-16 09:08:58红旗
日期:2014-01-09 11:57:39路虎
日期:2013-08-13 14:52:35林肯
日期:2015-05-19 13:01:16
9#
 楼主| 发表于 2007-11-16 11:49 | 只看该作者


我不敢!

使用道具 举报

回复
招聘 : Linux运维
论坛徽章:
235
紫蜘蛛
日期:2007-09-26 17:05:46玉兔
日期:2007-09-26 17:05:05现任管理团队成员
日期:2011-05-07 01:45:08玉兔
日期:2006-08-29 20:38:48紫蜘蛛
日期:2007-09-26 17:05:34阿斯顿马丁
日期:2013-11-19 10:38:16奔驰
日期:2013-10-16 09:08:58红旗
日期:2014-01-09 11:57:39路虎
日期:2013-08-13 14:52:35林肯
日期:2015-05-19 13:01:16
10#
 楼主| 发表于 2007-11-16 11:50 | 只看该作者
对了,既然加精华了,怎么还显示:精华贴数:0

使用道具 举报

回复

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

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表