The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Perl выборка данных., !*! fire002, 13-Июн-14, 02:04  [смотреть все]
Приветствую здешних обитателей.
Нужна помощь людей дружащих с perl
Есть такая бяка:
http://joxi.ru/aBGaU_3JTJC9PQdgcIQ
Отсюда нужно выбирать некоторые параметры, а именно CPU, MEM, IP и PORT (числовые значения), данные получаются командой
top -n 1 -b -c ....
Собственно на стандартными средствами лини получать не удается, т.к может отличаться строка запуска.
Собственно, необходимо что-бы параметры CPU и MEM (9 и 10 столбцы) записывались в текстовый файл, к примеру с названием вида IP:PORT.txt(etc)

Печеньки гарантирую)

Текстовик с выводом top
http://rghost.ru/56344231
    

  • Perl выборка данных., !*! Skif, 17:48 , 13-Июн-14 (1)
    • Perl выборка данных., !*! fire002, 00:19 , 14-Июн-14 (2)
      > awk '{print $9 " " $10}'
      > Что там сложного-то? Лень, разве что...

      С выборкой cpu и mem через awk нет, проблема с выборкой IP:port в самой строке запуска, тут уже awk не подходит, ибо значения могут быть в разных столбцах(как показано на скрине).

  • Perl выборка данных., !*! михалыч, 15:11 , 14-Июн-14 (4)
    • Perl выборка данных., !*! михалыч, 16:26 , 14-Июн-14 (5)
      • Perl выборка данных., !*! fire002, 01:01 , 19-Июн-14 (6)
        Собственно, скрипт уже написан и работает(почти).
        #!/usr/bin/perl -w
        use strict;
        use warnings;
        my $put = "/home/stat/";
        open FF, "/bin/cat /proc/meminfo \| /usr/bin/head -1 \| /usr/bin/awk '{print \$2}'|";
        <FF>=~/(\d+)/;
        my $m = $1/1024;
        close FF;
        open F, "/usr/bin/top -n 1 -b -c \| /bin/grep 'hlds_' \| /bin/grep -v 'SCREEN' \| /bin/grep -v '/bin/sh'|" or die "error: $!";
        while (<F>)
        {
        chomp;
        if($_=~/port\s\d+.+ip\s[\d\.]+/)
          {
             my $time = time;
             $_=~/^\s*([^\s]+\s+){8}([^\s]+)\s+([^\s]+)\s+.*port\s(\d+).+ip\s([\d\.]+)/;
             my $file = "$put$5:$4.txt";
             my $cpu = $2; my $mem = $3;
             $mem = int($mem*$m/100);
             open US, ">>$file" or die "error: $!";
             print US "$time\::$cpu\::$mem\n";
             close US;
           }
        }
        close F;

        Проблема в другом, при ручном запуске скрипта, все отрабатывает нормально.
        Но когда добавляешь в крон, /usr/bin/perl /home/stat/top.pl
        Всплывают косяки:
        /home/stat/top.pl: 2: use: not found
        /home/stat/top.pl: 3: my: not found
        /home/stat/top.pl: 5: Syntax error: "(" unexpected




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру