Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2011-10-25 20:14:34

  czeri - Użytkownik

czeri
Użytkownik
Zarejestrowany: 2011-07-08

grep cat i inne podstawowe narzędzia, czy da sie to zrobić ?

Mam taki problem, chce wyciągnąć kilka informacji z 2 osobnych plików, z tym że w pierwszym pliku informacje się powtarzają a chce wyciągnąć je tylko raz bez dublowania.
Informacje które chcę wyciągnąć to
Data
Packet-Type = Access-Accept (nie musi być tego pola ale musze wiedzieć czy użytkownik dostał akceptację)
User-Name
NAS-IP-Address
Called-Station-Id 
Calling-Station-Id

Plik 1:

Kod:

 
Mon Oct 17 17:13:31 2011
    Packet-Type = Access-Request
    User-Name = "user"
    NAS-IP-Address = 192.168.0.50
    NAS-Port = 0
    Called-Station-Id = "00195b54c564"
    Calling-Station-Id = "001f5bb7c6a0"
    NAS-Identifier = "Realtek Access Point. 8181"
    NAS-Port-Type = Wireless-802.11
    Service-Type = Framed-User
    Connect-Info = "CONNECT 11Mbps 802.11b"
    EAP-Message = 0x020200061900
    State = 0x26bdee6e27bff763f0a3e9a1e78a85de
    Message-Authenticator = 0xb6e0fa3a84387975dd623c6b2ef71165

Mon Oct 17 17:13:31 2011
    Packet-Type = Access-Request
    User-Name = "user"
    NAS-IP-Address = 192.168.0.50
    NAS-Port = 0
    Called-Station-Id = "00195b54c564"
    Calling-Station-Id = "001f5bb7c6a0"
    NAS-Identifier = "Realtek Access Point. 8181"
    NAS-Port-Type = Wireless-802.11
    Service-Type = Framed-User
    Connect-Info = "CONNECT 11Mbps 802.11b"
    EAP-Message = 0x020300061900
    State = 0x26bdee6e24bef763f0a3e9a1e78a85de
    Message-Authenticator = 0x556c829f8c3ff3c31913380f9c445c51

Mon Oct 17 17:13:31 2011
    Packet-Type = Access-Request
    User-Name = "user"
    NAS-IP-Address = 192.168.0.50
    NAS-Port = 0
    Called-Station-Id = "00195b54c564"
    Calling-Station-Id = "001f5bb7c6a0"
    NAS-Identifier = "Realtek Access Point. 8181"
    NAS-Port-Type = Wireless-802.11
    Service-Type = Framed-User
    Connect-Info = "CONNECT 11Mbps 802.11b"

Plik 2:

Kod:

Mon Oct 17 17:13:31 2011
    Packet-Type = Access-Accept
    MS-MPPE-Recv-Key = 0x0790f92012023074ac3d4bb98da2287b20e1d7ecf0391f9b17d11197dbb402ca
    MS-MPPE-Send-Key = 0xadec40c8be2eb3fa9dc9ff298ef60021072d755b48b3218c522047e172af04ef
    EAP-MSK = 0x0790f92012023074ac3d4bb98da2287b20e1d7ecf0391f9b17d11197dbb402caadec40c8be2eb3fa9dc9ff298ef60021072d755b48b3218c522047e172af04ef
    EAP-EMSK = 0xcf5d870377d72089fbda59323b1323bfc918719469b8edcc2da53035d011e96346378efae6f53a8844448f523c68a9130f8533a5ff74bacae6e214f988b41378
    EAP-Message = 0x03090004
    Message-Authenticator = 0x00000000000000000000000000000000
    User-Name = "user"

Po modyfikacji powinno to wyglądac mniej więcej tak:

        Mon Oct 17 17:13:31 2011
        User-Name = "user"
        NAS-IP-Address = 192.168.0.50
    Called-Station-Id = "00195b54c564"
    Calling-Station-Id = "001f5bb7c6a0"

Ostatnio edytowany przez czeri (2011-10-25 20:17:33)

Offline

 

#2  2011-10-25 20:38:29

  Minio - Użyszkodnik

Minio
Użyszkodnik
Skąd: Brno, Česko
Zarejestrowany: 2007-12-22
Serwis

Re: grep cat i inne podstawowe narzędzia, czy da sie to zrobić ?

No dobrze, i w czym konkretnie masz problem?

(Odpowiadając na pytanie z tematu: tak, to da się zrobić.)


Spinnen Essen: [url=http://fluxboxpl.org/portal/]FluxboxPL[/url] [url=http://przepis-na-lo.pl/]Przepis na LibreOffice[/url]

Offline

 

#3  2011-10-25 20:48:42

  czeri - Użytkownik

czeri
Użytkownik
Zarejestrowany: 2011-07-08

Re: grep cat i inne podstawowe narzędzia, czy da sie to zrobić ?

Przepraszam, może źle sprecyzowałem pytanie, niebardzo wiem jak to zrobić, wiem jak wyciągnąć dane z 2 pliku, ale z pierwszego gdzie dane są zdublowane wogóle niewiem jak sie za to zabrać. I czy mógłbym ktoś mi pomóc stworzyć takie zapytanie aby dało mi taki rezultat jaki napisałem ?

Offline

 

#4  2011-10-25 21:33:18

  Minio - Użyszkodnik

Minio
Użyszkodnik
Skąd: Brno, Česko
Zarejestrowany: 2007-12-22
Serwis

Re: grep cat i inne podstawowe narzędzia, czy da sie to zrobić ?

Możesz skorzystać z polecenia sort (z flagą -u, aby uniknąć wykorzystywania polecenia uniq). Możesz również wykorzystać flagę -m polecenia grep.

Jeżeli chcesz pracować na obu plikach jednocześnie (na podstawie Twojego drugiego postu nie jestem już tego pewien; w plikach powtarza się m.in. data i pole User-Name), to musisz najpierw wykorzystać polecenie cat zgodnie z jego pierwotnym przeznaczeniem (nazwa wywodzi się od [i]conCATenate[/i]), czyli połączyć oba pliki w jeden i dopiero przekazać do grepa czy czegokolwiek innego. Byłaby to chyba pierwsza sytuacja, w której zapis [tt]cat |grep[/tt] ma sens, z jaką się spotykam w życiu.


Spinnen Essen: [url=http://fluxboxpl.org/portal/]FluxboxPL[/url] [url=http://przepis-na-lo.pl/]Przepis na LibreOffice[/url]

Offline

 

#5  2011-10-26 16:50:54

  czeri - Użytkownik

czeri
Użytkownik
Zarejestrowany: 2011-07-08

Re: grep cat i inne podstawowe narzędzia, czy da sie to zrobić ?

jeśli użyje sort to nie uzyskam takiej kolejności jaką bym chciał, myślałem żeby przekopiować oba pliki do jednego i tam zrobić tak by usunąć rzeczy które się powtarzają, ale nie umiem znaleźć polecenia na usuwanie danych z pliku (niewiem czy takie polecenie istnieje). Jest ktoś w stanie mi pomóc.

Powiem dlaczego chce takie coś osiągnąć. Mam logi radiusa które są przechowywane w swoich plikach w jednym są zapytania w drugim akceptacje. Niestety w pliku z akceptacją niema danych które są mi potrzebne do pełnego zlokalizowania użytkownika. (mac adres użytkownika, mac adres punktu dostępowego)
Dane tak uzyskane chcę w przystępny sposób za pomocą php-a wyświetlić na stronie (ale żeby je wyświetlic na stronie musze mieć je jakoś uporządkowane i do tego sprowadza się cały problem..

Ostatnio edytowany przez czeri (2011-10-26 17:02:44)

Offline

 

#6  2011-10-26 22:01:13

  Minio - Użyszkodnik

Minio
Użyszkodnik
Skąd: Brno, Česko
Zarejestrowany: 2007-12-22
Serwis

Re: grep cat i inne podstawowe narzędzia, czy da sie to zrobić ?

Ale skoro masz to wyświetlać na stronie internetowej, dlaczego od razu nie napisać tego w PHP?

Możesz wczytać oba pliki do jednej tablicy, przy pomocy grepa (funkcja PHP) wyciągać linijki spełniające odpowiednie kryterium i potem przypisywać do zmiennej tylko pierwszy element z tej tablicy tymczasowej. Pewnie i da się to jakoś bardziej elegancko rozwiązać (sądzę że moduł do przetwarzania plików INI może się okazać pomocny), ale to taka propozycja na szybko. Akurat w PHP jestem znacznie mniej biegły niż w shellu.

Ewentualnie jeśli już to musi być w shellu, to mimo to użyj polecenia sort (bo spełnia swoje zadanie) a na poziomie PHP manipuluj kolejnością przedstawienia wyników. Co to za problem?
Od biedy możesz nawet w tym shellu przypisywać poszczególne linie do zmiennych a później w preferowanej kolejności zapisywać je w tymczasowym pliku tekstowym (który potem odczyta PHP).


Spinnen Essen: [url=http://fluxboxpl.org/portal/]FluxboxPL[/url] [url=http://przepis-na-lo.pl/]Przepis na LibreOffice[/url]

Offline

 

#7  2011-11-01 10:52:26

  czeri - Użytkownik

czeri
Użytkownik
Zarejestrowany: 2011-07-08

Re: grep cat i inne podstawowe narzędzia, czy da sie to zrobić ?

mam coś takiego:

Kod:

{ awk '{ $1=""; print $0; }' freeradius/radius.log; cat /var/log/dhcpd.log ; } | sort -k 1M,2 -k 2n,3 -k 3,4 -k  4r,5

co w rezultacie daje mi takie coś:

Kod:

Oct 27 17:49:00 debian6 dhcpd: DHCPREQUEST for 192.168.0.5 from 00:0c:29:20:40:ab via eth0
Oct 27 17:49:08 debian6 dhcpd: DHCPREQUEST for 192.168.0.5 from 00:0c:29:20:40:ab via eth0
 Oct 27 17:52:07 2011 : Auth: Login OK: [user] (from client localhost port 0)
 Oct 27 17:52:40 2011 : Auth: Login OK: [user] (from client 192.168.0.50/32 port 0 cli 001f5bb7c6a0)
 Oct 27 17:52:40 2011 : Auth: Login OK: [user] (from client 192.168.0.50/32 port 0 cli 001f5bb7c6a0 via TLS tunnel)

więc jest już poniekąd to co chciałem osiągnąć chciałem tą samą operację zrobić w php za pomocą funkcji exec, ale nie rusza.
Wiecie jak to zrobić żeby php mi to wyswietlił ?

Offline

 

#8  2011-11-01 18:13:52

  czeri - Użytkownik

czeri
Użytkownik
Zarejestrowany: 2011-07-08

Re: grep cat i inne podstawowe narzędzia, czy da sie to zrobić ?

Udało mi się stworzyć coś takiego, nie jest to szczyt programistyczny ale działa

Kod:

$plik = implode(',', file('/var/log/dhcpd.log'));
$tablica = explode(",", $plik);
$n = count($tablica);
$zmienna=1;
$wyrazenie = "/DHCPACK/";
for ($i=0;$i<$n; $i++)
{
        $tekst=$tablica[$i];
        if (preg_match($wyrazenie, $tekst))
        {
            $tabliczka[$zmienna]=$tablica[$i];
            $zmienna+=1;

        }   
}

$plik = implode(',', file('/var/log/freeradius/radius.log'));
 $tablica = explode(",", $plik);
 $n = count($tablica);
 $wyrazenie = "/TLS/";
 for ($i=0;$i<$n; $i++)
{
     $tekst = $tablica[$i];
     if (preg_match($wyrazenie, $tekst))
        {
       $tabliczka[$zmienna]=$tablica[$i];
            $zmienna+=1;
    
        }    
}   
  
for ($i=0;$i<$zmienna; $i++){
 echo $tabliczka[$i].'<br />';

  }

wynik jest taki:

Kod:

Oct 26 21:12:49 debian6 dhcpd: DHCPACK on 192.168.0.2 to 00:1f:5b:b7:c6:a0 via eth0 
Oct 26 21:13:09 debian6 dhcpd: DHCPACK on 192.168.0.2 to 00:1f:5b:b7:c6:a0 via eth0 
Oct 26 21:13:11 debian6 dhcpd: DHCPACK on 192.168.0.2 to 00:1f:5b:b7:c6:a0 via eth0 
Oct 26 21:32:22 debian6 dhcpd: DHCPACK on 192.168.0.2 to 00:1f:5b:b7:c6:a0 via eth0 
Oct 26 21:35:20 debian6 dhcpd: DHCPACK on 192.168.0.2 to 00:1f:5b:b7:c6:a0 via eth0 
Oct 27 17:20:57 debian6 dhcpd: DHCPACK on 192.168.0.2 to 00:1f:5b:b7:c6:a0 via eth0 
Oct 27 17:21:12 debian6 dhcpd: DHCPACK on 192.168.0.2 to 00:1f:5b:b7:c6:a0 via eth0 
Oct 27 17:25:22 debian6 dhcpd: DHCPACK on 192.168.0.2 to 00:1f:5b:b7:c6:a0 via eth0 
Oct 27 17:25:27 debian6 dhcpd: DHCPACK on 192.168.0.2 to 00:1f:5b:b7:c6:a0 via eth0 
Oct 27 17:49:00 debian6 dhcpd: DHCPACK on 192.168.0.5 to 00:0c:29:20:40:ab via eth0 
Nov 1 09:56:50 debian6 dhcpd: DHCPACK on 192.168.0.5 to 00:0c:29:20:40:ab via eth0 
Nov 1 10:07:04 debian6 dhcpd: DHCPACK on 192.168.0.2 to 00:1f:5b:b7:c6:a0 via eth0 
Wed Oct 26 21:13:08 2011 : Auth: Login OK: [user] (from client 192.168.0.50/32 port 0 cli 001f5bb7c6a0 via TLS tunnel) 
Wed Oct 26 21:32:18 2011 : Auth: Login OK: [user] (from client 192.168.0.50/32 port 0 cli 001f5bb7c6a0 via TLS tunnel) 
Thu Oct 27 17:20:53 2011 : Auth: Login OK: [user] (from client 192.168.0.50/32 port 0 cli 001f5bb7c6a0 via TLS tunnel) 
Thu Oct 27 17:25:17 2011 : Auth: Login OK: [user] (from client 192.168.0.50/32 port 0 cli 001f5bb7c6a0 via TLS tunnel) 
Thu Oct 27 17:52:40 2011 : Auth: Login OK: [user] (from client 192.168.0.50/32 port 0 cli 001f5bb7c6a0 via TLS tunnel) 
Tue Nov 1 10:07:00 2011 : Auth: Login OK: [user] (from client 192.168.0.50/32 port 0 cli 001f5bb7c6a0 via TLS tunnel)

Teraz pytanie jak zrobić żeby z tej tablicy wyciągnąć kilka danych i wsadzić je do tabeli html-owej 

tabela miała by strukture:
data  -  login  -  adres_ip  -  mac_adres

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)

[ Generated in 0.009 seconds, 12 queries executed ]

Informacje debugowania

Time (s) Query
0.00009 SET CHARSET latin2
0.00003 SET NAMES latin2
0.00100 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.138.114.140' WHERE u.id=1
0.00102 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.138.114.140', 1732462947)
0.00052 SELECT * FROM punbb_online WHERE logged<1732462647
0.00062 DELETE FROM punbb_online WHERE ident='52.15.223.239'
0.00045 SELECT topic_id FROM punbb_posts WHERE id=184129
0.00004 SELECT id FROM punbb_posts WHERE topic_id=19944 ORDER BY posted
0.00053 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=19944 AND t.moved_to IS NULL
0.00005 SELECT search_for, replace_with FROM punbb_censoring
0.00165 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=19944 ORDER BY p.id LIMIT 0,25
0.00082 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=19944
Total query time: 0.00682 s