Получение списка устройств в сети
Для получения списка устройств, работающих в моей домашней сети (получивших IP от моего DHCP-сервера на своём сетевом интерфейсе), я использую самописный скрипт (смесь PHP и BASH’а). Он отрабатывает около 10 секунд, за это время сканируется сеть для выявления ответивших MAC’ов.
Концепцию можно улучшить, например, переписать его полностью на BASH’е и по cron’у вызывать, допустим, раз в пять минут, пусть он пишет MAC’и наличных сетевых устройств в файл/базу, а WEB-скрипт просто читает оттуда актуальные данные при открытии страницы.
Показать
<?php // задаю необходимые переменные $home_iface='eth0'; // интерфейс, посредством которого система включена в домашнюю сеть $lan='192.168.120.0/24'; // определитель домашней сети (или её гостевого сегмента) $temp_file='/tmp/dev.tmp'; // путь к временному файлу // функция анализа и вывода MAC'а на странице function DrawDevice() { ... } // получаю MAC интерфейса $home_iface $home_mac=exec("sudo ifconfig {$home_iface} | grep 'HWaddr' | awk '{print $5}'"); // отображаю его на странице DrawDevice(trim($home_mac)); // удаляю временный файл, если он есть if(file_exists($temp_file))exec("rm -f {$temp_file}"); // сканирую сетевой диапазон $lan exec("fping {$lan} -age -r 1 >/dev/null 2>/dev/null"); // вычленяю устройства с ответившими MAC'амм // и записываю во временный файл, // можно писать в базу данных для получения динамики exec("ip n | grep 'lladdr' | awk '{print $5}' > {$temp_file}",$h); // получаю список ответивших MAC'ов из временного файла $h=file_get_contents($temp_file); // и удаляю его if(file_exists($temp_file))exec("rm -f {$temp_file}"); $mac=array(); // убираю из списка символы новой строки $mac=explode("\n",$h); // в цикле вывожу MAC'и foreach($mac as$host){DrawDevice($host);} ?>
- Требования:
- 1. в системе должен быть установлен пакет fping (или любой другой с аналогичной функциональностью, например nmap);
- 2. пользователь, от которого запущен WEB-сервер, обычно www-data, можно проверить командой
должен иметь возможность выполнения команды ifconfig от имени суперпользователя (sudo ifconfig) или запускать эту утилиту непостредственно по пути её расположения, обычно /sbin/ifconfig, можно проверить командойps aux | egrep '([a|A]pache|[h|H]ttpd)' | awk '{ print $1}' | uniq | tail -1whereis ifconfig
Статья написана для Блога «Умного дома».

Хаки и трюки
Виртуалки
Сисьадминство
BASH-скрипты
Парусные суда
Праздники
Моё чтиво
Игра KSP
МСВС 3.0 R12
RedHat, работает на платформах Intel, SPARC (Эльбрус-90микро), IBM System/390 и MIPS. Нарушает лицензию GPLv2, с 2009 года официально не распространяется. В качестве среды рабочего стола используется
elk (основанный на
QVWM),
TWM,
KDE,
IceWM. Менеджер пакетов — RPM.
MCBC
KSI Linux 1.2 (Tornado)
киевским сисадмином украинского провайдера Глобал Юкрейн Сергеем Ивановичем Кубушиным (что нашло отражение в названии дистра) на базе
KSI
VMware заработало сразу, но доступные разрешения в Xree86 с
QEMU запустил так:
VirtualBox’овой виртуалке Windows 2000 Professional SP4 (с добавленным как IDE primary slave гиговым виртуальным диском формата VDI) запустил
ВМварь версии 3.2, создал в ней ВМ, добавил флоппи-дисковод (т. к. при загрузке с компакта Варя висла), подсунул в него BOOT.IMG с CD. В качестве образа винта указал IDE-устройство (в Win2000 оно инициализировалось как Диск1, это тот гиговый образ, о котором я говорил выше). Разбил его на 800-метровый раздел ext2 (для корня), остальное — своп-раздел. Установил, создал юзера, настроил X’ы, попытался подсунуть дополнения VMware, в /etc/X11/ даже появились линки XF86config.vm и X.vm, но использовал всё-же XF86_SVGA, т. к. при старте иксов с XF86_VMware не было разрешения 1024 × 768. В иксовом терминале снимаю скрин, всё.
Corel Linux 1.2
Дебиана как основа для различных приложений Corel. В качестве ВМ использовался
Corel с 1999 года (начало бета-тестирования — 21 сентября, первый релиз — 15 ноября). До момента продажи Xandros за 5% её акций исходного кода Corel Linux вместе с командой разработчиков в августе 2001 году вышло 3 версии (1.0, 1.1, 1.2). В марте 2002 года сайт Corel Open Source Development с Corel Linux был закрыт.
CorelLinux









Guix System Distribution 0.15.0
GuixSD
SSH-клиент, где намного удобнее выполнять команды и работает copy-paste :-) Менеджером разделов cfdisk создал на 20-гигабайтном винте MBR, разметил на два раздела: на 19 гигов — для системы и 1 гиг для свопа, форматнул
Tizen 3.0.0 IVI
Maemo (2005),
Moblin (2007),
LiMo (2008),
mer (2010),
MeeGo (2010),
bada (2013). Использует дисплейный сервер
Wayland и композитный менеджер Weston. Как пакетный менеджер использует zypper и pkgcmd.
Tizen
Moblin 2.0 beta
Sailfish OS.
GNOME (Metacity).
Network Security Toolkit 28 SVN:10234
Fedora Linux, имеет вид загрузочного DVD-/USB-диска с возможностью установки. Использует
MATE как рабочий стол по умолчанию (раньше использовал
Fluxbox).
NST
Alpine Linux 3.8.0
Норвегии, ответвление от проекта
LEAF, пилится в основном для использования во встраиваемых системах, ориентирован на безопасность, легковесность и нетребовательность к ресурсам (используется в том числе во многих образах docker), основывается на системной библиотеке языка Си musl, наборе стандартных UNIX-утилит BusyBox, системе инициализации OpenRC и пакетном менеджере apk.
AlpineLinux


Linux Mint 19 (Tara)
ирландскими корнями, основанный на пакетной базе
Ubuntu 18.04 LTS, пилится сообществом с целью предоставить пользователю «современную, элегантную и удобную операционную систему, которая одновременно является мощной и простой в использовании»...
Mint