Nowe posty

Autor Wątek: Conky - czy istnieje taka komenda?  (Przeczytany 2646 razy)

Loped

  • Gość
Conky - czy istnieje taka komenda?
« dnia: 2012-08-10, 00:09:17 »
Witam. Czy jest możliwość wyświetlenia w conky, liczby aktualnie połączonych z routerem stacji roboczych? ;)

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3070
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Conky - czy istnieje taka komenda?
« Odpowiedź #1 dnia: 2012-08-10, 13:35:45 »
Krótka odpowiedź dokładnie na Twoje pytanie: TAK.

Odpowiedź, której oczekujesz to:
1) IP jest protokołem "fire and forget", więc z definicji nie masz takiego czegoś jak połączenie. To nie jest odpowiedź na Twoje pytanie.
2) Do działania IP w sieci Ethernet potrzebny jest protokół ARP tłumaczący adresy IP na adresy MAC. Aby nie pytać w kółko, jest tzw ARP-cache, mający pamięć rzędu 30s. Jeżeli dany IP/MAC ma wpis w cache ARP, to był widziany w ciągu ostatnich 30s.
3) Bieżącą zawartość cache dla danej karty sieciowej wyświetlasz poleceniem arp -ni INTERFEJS (wymaga prawa roota) albo oglądając plik /proc/net/arp (nie wymaga prawa roota). Wynik wygląda mniej więcej tak:
#> cat  /proc/net/arp
IP address       HW type     Flags       HW address            Mask     Device
172.16.0.101     0x1         0x2         XX:XX:XX:09:b8:91     *        eth0
172.16.0.1       0x1         0x2         XX:XX:XX:1a:82:df     *        eth0
4) Teraz musisz policzyć linijki z wpisem "z twoim interfejsem"
#> grep "eth0" /proc/net/arp | wc -l
2
5) I na koniec podpiąć to pod CONKY w .conkyrc
(....)
$hr
Known hosts: ${exec grep "eth0" /proc/net/arp | wc -l}
Oczywiście cały cas założenie, że Conky działa na routerze. Jak nie, to w grę wchodzą zabawy z SSH albo SNMP.
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

Loped

  • Gość
Conky - czy istnieje taka komenda?
« Odpowiedź #2 dnia: 2012-08-10, 16:51:42 »
Pokazuje dobrze, ale tylko stacje podłączone do routera. Z wifi już tak nie idzie. Rozumiem, że teraz powinienem zainteresować się SSH. ;)

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3070
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Conky - czy istnieje taka komenda?
« Odpowiedź #3 dnia: 2012-08-11, 13:58:13 »
Możesz zrobić odwrotnie - policz wszystko NIE podłączone do karty po stronie WAN - zakładając, że WAN masz na eth1 to:

$hr
Known hosts: ${exec egrep -v "eth1|Flags" /proc/net/arp | wc -l}
1. zmiana grep na egrep, aby obsługiwał regexpy
2. parametr -v odwraca grepa. Pokazuje tylko linijki NIE pasujące.
3. Dopisek |Flags wycina też wiersz nagłówkowy.

Metoda ta nie wykrywa komputerów włączonych, ale "siedzących cicho" - wystarczy jeden pakiet w internet albo do routera (albo broadcast) aby się ujawnić. Stacje Windowsowe same to ci załatwią, radośnie broadcastując sam fakt, że żyją.
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy