Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Вывод в XML / 3 сообщений из 3, страница 1 из 1
09.04.2013, 14:52
    #38218882
Thatonebro
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод в XML
Привет всем! Кто-то может помочь разобраться:
Нужно получить список процессов ОС из под shell, и вывести их в XML, с перечнем открытыми ими портов.
Получилось их вывести: netstat -apn | grep tcp
Сейчас нужно, получается, брать название процесса, смотреть какие порты он открыл, и список этих портов заносить в XML файл. Как-то так:

<PID>xxx
<PORTS>
<PORT1>xxxx</PORT1>
<PORTn>xxxx</PORTn>
</PORTS>
<xxx>....</xxx>
</PID>

Заранее благодарен за любую помощь!
...
Рейтинг: 0 / 0
10.04.2013, 08:28
    #38219703
mhx
mhx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод в XML
Что-то типа такого
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
#!/usr/bin/perl

use strict;
use warnings;
#use Data::Dumper;

$\ = "\n";
my $list = `netstat -tpn 2> /dev/null`;
my ($line, $processes, @line_elem, $pid, $proc, $port);
while ($list =~ /^(tcp.*?)$/gm)
{
    $line = $1;
    @line_elem = split /\s+/, $line;
    next if $line_elem[6] eq '-';
    ($pid, $proc) = split /\//, $line_elem[6];
    $port = (split /:/, $line_elem[3])[1];
    unless (defined $processes->{$pid}[$port])
    {
        push @{$processes->{$pid}}, $port;
    }
}

# XML
my $xml = '<NETSTAT>';
for $pid (keys %$processes)
{
    $xml .= "<PID pid='$pid'><PORTS>";
    my $i = 1;
    for $port (@{$processes->{$pid}})
    {
        $xml .= "<PORT$i>" . $port . "</PORT$i>";
        $i++;
    }
    $xml .= '</PORTS></PID>';
}
$xml .= '</NETSTAT>';
print $xml;


Вывод типа:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<NETSTAT>
  <PID pid="2252">
    <PORTS>
      <PORT1>54836</PORT1>
    </PORTS>
  </PID>
  <PID pid="2320">
    <PORTS>
      <PORT1>52635</PORT1>
      <PORT2>52527</PORT2>
    </PORTS>
  </PID>
  <PID pid="1313">
    <PORTS>
      <PORT1>57753</PORT1>
    </PORTS>
  </PID>
</NETSTAT>
...
Рейтинг: 0 / 0
10.04.2013, 11:49
    #38220034
Thatonebro
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод в XML
mhx,
Вот это да!! Не ожидал, что так сложно будет выглядеть готовый результат!
Огромное спасибо за потраченное время!
...
Рейтинг: 0 / 0
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Вывод в XML / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]