sqlport : 用SQL Server檢測進程和端口的映射關係

set nocount on
go

create table #cmd_output (seqno int identity(1,1), value1 nvarchar(512))
create table #tasklist(image_name varchar(30), pid int, session_name varchar(100),
  session_id varchar(10), mem_usage varchar(20))
create table #netstat(proto varchar(5), local_addr varchar(50), remote_addr varchar(50), state varchar(30), pid int)

-- handle tasklist output
insert into #cmd_output (value1) exec master..xp_cmdshell 'tasklist'
declare @cnt int, @line varchar(1000)
declare @image_name varchar(30), @pid int, @session_name varchar(100),
  @session_id varchar(10), @mem_usage varchar(20)
select @cnt = 5, @line = '1'
while @line is not null
begin
  select @line=value1 from #cmd_output where seqno=@cnt
  exec master..xp_sscanf @line, '%s %d %s %s %sK',
     @image_name OUTPUT, @pid OUTPUT, @session_name OUTPUT, @session_id OUTPUT, @mem_usage OUTPUT
  insert #tasklist select @image_name, @pid, @session_name, @session_id, @mem_usage+' K'
  set @cnt = @cnt + 1
end

truncate table #cmd_output

-- handle netstat output
insert into #cmd_output (value1) exec master..xp_cmdshell 'netstat -ao'
declare @proto varchar(5), @local_addr varchar(50), @remote_addr varchar(50), @state varchar(30), @pid2 int
select @cnt = 5, @line = 'abcd'
while @line is not null
begin
  select @line=value1 from #cmd_output where seqno=@cnt
  if charindex('*:*', @line) > 0
  begin
    exec master..xp_sscanf @line, '%s %s %s %d',
       @proto OUTPUT, @local_addr OUTPUT,  @remote_addr OUTPUT, @pid2 OUTPUT
    insert #netstat select @proto, @local_addr, @remote_addr, 'UDP/UNKNOWN', @pid2
  end
  else
  begin
    exec master..xp_sscanf @line, '%s %s %s %s %d',
       @proto OUTPUT, @local_addr OUTPUT, @remote_addr OUTPUT, @state OUTPUT, @pid2 OUTPUT
    insert #netstat select @proto, @local_addr, @remote_addr, @state, @pid2
  end
  set @cnt = @cnt + 1
end

--select * from #cmd_output order by 1 ,2
--select * from #tasklist
select A.*, B.image_name from #netstat A left join #tasklist B on A.pid = B.pid where proto is not null

drop table #cmd_output, #tasklist, #netstat
go

set nocount off
go
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值