Вопрос - что можно поставить на это чудо чтобы показывало IPTV
Android x86 только версия 4.4 устанавливается, Kodibuntu 14 - всё работает, кроме поддержки IPTV, может кто что посоветует? Просто голый linux с поддержкой плейлистов
Получение IP -, MAC –адресов, имени сетевого интерфейса с помощью Python
Порою возникают ситуации, когда необходимо использовать в скрипте Python IP-адрес используемый активной сетевой картой, которая смотрит в Интернет, узнать MAC-адрес этой карты и имя сетевого соединения. К сожалению, функций из коробки пока что не наблюдается. Есть сторонние модули, которые позволяют узнать MAC-адрес, например getmac, но в качестве параметров в них нужно также передавать или IP-адрес, или имя соединения. Но, что, если их нужно определять программно и вводить вручную не вариант?
Я нашел для себя решение, которое работает, но требует тестирования на большом количестве систем. Хотя, думаю, что на большинстве ОС семейства Windows или Linux оно будет работать.
Импорт библиотек
В данном решении не требуется устанавливать сторонние библиотеки. Необходимо лишь импортировать в скрип те, что нужны для его работы. Выполним их импорт:
Получение IP-адреса активной сетевой карты
Уже очень давно, около 15 лет назад на Stack Overflow был дан ответ по поводу получения «основного», имеющего маршрут по умолчанию, IP-адреса. Как описывает его автор скрипта, он работает под всеми основными ОС: Windows, Linux, OSX. Вот ссылка на данный пост.
Несмотря на то, что скрипту уже довольно много лет, он работает до сих пор. Потому, вместо изобретения велосипеда я использую его, за неимением лучшего. Тем более что он ни разу не давал сбоев. Вот сам скрипт:
Теперь, когда мы определились с тем, каким способом будем получать IP-адрес, приступим к написанию скрипта для получения IPv6-, MAC- адресов, а также имени сетевого интерфейса.
Получение информации об активном сетевом интерфейсе
Создадим класс NetInfo,который при инициализации будет получать необходимые данные в зависимости от операционной системы. Здесь мы определяем платформу с помощью модуля system библиотеки platform и в зависимости от этого запускаем тот или иной скрипт.
Двигаемся дальше. Создадим функцию для получения локального IP-адерса и объявим ее статическим методом, так как в ней не используются переменные класса.
Напишем функцию mac_iface_win(self) в которой выполним получение нужных нам параметров. Для этого мы будем использовать возможности командной строки Windows, с частности инструмент командной стоки wmic. В частности будем использовать псевдоним NICCONFIG, который используется для управления сетевыми адаптерами. Отфильтруем только активные сетевые адаптеры. А их может быть в системе несколько, включая виртуальные: IPEnabled=true . После этого получим MAC – и IP – адреса используя GET MACAddress, IPAddress /FORMAT:csv, с указанием вывода полученных значений в формате csv для того, чтобы нам было проще их распарсить.
Вот полный вид данной команды:
wmic NICCONFIG WHERE IPEnabled=true GET MACAddress, IPAddress /FORMAT:csv
После того, как мы получим список активных сетевых адаптеров, поитерируемся по нему в цикле и проверим, есть ли в данном списке адаптер, IP-адрес которого равен полученному ранее локальному адресу. Если есть, забираем MAC-адрес, а также IPv6 адрес, если он не отключен в системе.
После того, как мы получим необходимые данные, выполним команду getmac /FO csv /NH /V с помощью которой получим список сетевых интерфейсов. Также в цикле проитерируемся по нему и будем проверять, есть ли уже полученный MAC-адрес в строке с параметрами интерфейса. Если есть, забираем название сетевого интерфейса.
Если в предыдущей функции мы получили данные для сетевого интерфейса в ОС Windows, то следует также написать аналогичную функцию и для Linux. Поэтому создадим функцию mac_iface_lin(self). В ней кода будет поменьше, так как в командах Linux содержится больше информации в одном месте и ее легче распарсить. Команда, которую мы будем использовать выглядит следующим образом:
ip -h -br a | grep UP
Здесь мы получим название сетевого интерфейса и IPv6-адрес. В Linux данный адрес можно получить, даже если он отключен в настройках адаптера.
После этого выполним похожую команду, но уже отфильтруем из ее вывода MAC-адрес:
ip a | grep ether | gawk '{print $2}'
Осталось только свести написанный код, если вы этого еще не сделали воедино.
Итак, продолжим. Полный код скрипта выглядит следующим образом:
Теперь необходимо протестировать его в операционных системах. В данном случае у меня доступны две системы: Windows 10 и Linux Mint.
Создадим в данном скрипте вызов нашего класса и выведем в терминал полученные параметры:
Для начала, запустим в ОС Windows:
А теперь то же самое в Linux Mint:
Как видим, скрипт справляется со своей работой. Для чего он может пригодиться? Ну, например, для автоматической установки активного сетевого интерфейса по умолчанию в Scapy при прослушивании пакетов с активного сетевого интерфейса. Но о Scapy поговорим немного позже.
Спасибо за внимание. Надеюсь, данная информация будет вам полезна
Ответ на пост «Настройка 3xui. part 2»
А кто-то пробовал домен для подписки подвешивать на Cloudflare?
У меня чет не получается такой трюк, чтобы не палить айпишник сервера.
Если в хостс прописать айпи-домен, то страничка подписки открывается, если выключить проксирование на Cloudflare и оставить DNS only, то тоже открывается. Как только включаю проксирование, то ничего не открывается и соединение отваливается по таймауту.
Из важного:
- На VPS порт подписки слушается 60000/tcp для соединений отовсюду.
- Сертификат получаю через certbot certonly --dns-cloudflare
- Файерволом наружу открыто два порта 443/tcp и 60000/tcp
- На сервере не стоят никакие web сервера и ставить не хочется.
Что-то у меня в CF неправильно настроено, но все очевидные настройки я уже перепробовал:
По SSL выставлял все 4 пункта, сейчас стоит Flexible. Редирект с http на https выключал. TLS 1.3 минималка включена.
Так же пробовал настроить правило в CF чтобы все запросы на сайт редиректились на порт 61000, но это тоже не помогло.
В разделе EDGE Certificates пробовал удалять сертификат, который дает сам CF. Возможно здесь собака и зарыта, ибо если включить обратно universal certificates, то он выдает свой, а не использует мой от LE.
Короче, если у кого-то есть готовый вариант настроек Cloudflare, поделитесь, пожалуйста.
Работа с UART в LINUX + PHP
требуется помощь лиги IT
Делаю небольшую поделку - проект умного дома.
В основе ардуино + одноплатник orangepi zero
на одноплатнике стоит armbian и поднят httl сервер.
на сервере страничка с кодом ajax по таймеру делает запрос через php и соответственно получает ответ. все работает до тех пор, пока есть ответ.
если ответа нет, то на третьем-четвертом запросе сервер наглухо виснет.
запрос делаю так (пробовал все три варианта):
$bufft = fgets($fp,7);
//$bufft = fread($fp,7);
//$bufft = stream_get_line($fp,7); + //stream_set_timeout($fp, 0, 15000);
(где: $filename = "/dev/ttyS1"; //порт $fp = fopen($filename, "w+"); )
Насколько я понимаю, проблема в том, что при отсутствии ответа в буфере /dev/ttyS1 нет вообще ничего, те нет в файле даже символа конца строки (файла). и считывание идет по бесконечному циклу, пока не повесит процесс.
Экспериментально установлено, что при запросе $bufft = fgets($fp,1); , те при попытке считать только первый символ строки ничего не виснет, но возвращается строка из 0 символов. те полностью пустая.
Посоветуйте, как перед считыванием буфера определить, что он пуст (при попытке считывания он стирается) или как считывать пустой буфер/dev/ttyS1 без последующего зависания?
Топ-5 лучших Hex редакторов для Linux
1. Hexedit - это простой редактор в командной строке. Он предлагает базовые функции редактирования:
• Поддержка работы в командной строке.
• Возможность работать с файлами любого размера.
2. Ghex - это простой в использовании редактор рабочего стола Gnome:
• Поддержка базавого редактирования
• Поддержка плагинов
3. Okteta - это универсальный редактор, который может редактировать разные типы файлов:
• Поддержка плагинов
• Сравнение файлов
• Возможность редактирования файлов в сжатом виде
4. Bless - это легкий и быстрый редактор с минималистичным интерфейсом:
• Поддержка основных функций редактирования
• Поиск и замена
• Небольшой размер
5. xxd - это мощный hex редактор, входящий в состав большинства дистрибутивов Linux:
• xxd имеет интерфейс командной строки
• Является частью vim
+ Бонус:
Бесплатный онлайн hex редактор - HexEd.it. Инструмент, который работает в веб-браузере. Он позволяет анализировать и редактировать бинарные файлы где угодно.
Avanpost.IDM Linux
Кто-нибудь разбирается в системе avanpost.idm и как правильно настроить конфиги для веб-сервера nginx?
Несколько причин поставить log2ram
Общеизвестно, количество циклов чтения-записи для SSD (NVRAM) диска ограничено, чем меньше на него пишем, тем дольше он живет, да и ресурс HDD так же не безграничен. Есть простое решение, позволяющее значительно продлить жизнь дисков, заодно немного ускорить систему (не всегда), но для RaspberryPi очень актуально.
Вы скажете, есть же Rsyslog, зачем плодить сущности? А я Вам отвечу, у них разный механизм и они гармонично дополняют друг-друга.
Размер кольцевого буфера: Rsyslog использует кольцевой буфер в ОЗУ для временного хранения входящих логов перед их обработкой и записью на диск. Размер этого буфера задается параметром $WorkingDirectory в конфигурации.
Тип буфера: Существует два типа буферов - фиксированного и динамического размера. Фиксированный устанавливается вручную. Динамический автоматически подстраивает размер под входящий поток логов до максимума.
Макcимальный размер динамического буфера: Задается параметром $WorkingDirectoryMaxStaticDiskSpace для ограничения максимального размера динамического буфера в байтах или мегабайтах.
Количество активных потоков логирования: Каждый входящий поток логов использует отдельный экземпляр буфера. Таким образом, общий объем используемой памяти зависит от количества активных источников логирования.
Типичные значения размера кольцевого буфера rsyslog:
1 Мб - для низкого трафика логов
16-64 Мб - для среднего трафика
1+ Гб - для очень высокой интенсивности логирования
Максимальный размер не ограничен, но зависит от доступной оперативной памяти системы. Слишком большой буфер может истощить ресурсы ОЗУ.
Log2Ram - это небольшая утилита с открытым исходным кодом, которая перенаправляет системные логи Linux с жесткого диска (HDD или SSD) в оперативную память RAM. Использование Log2Ram для логирования в RAM имеет свои плюсы и минусы, о которых следует знать системным администраторам Linux.
Преимущества логирования в ОЗУ с Log2Ram:
Высокая производительность: Запись логов в RAM происходит гораздо быстрее, чем на жесткий диск, что особенно важно при высокой нагрузке на систему логирования.
Снижение износа SSD: Частая запись логов на твердотельные накопители SSD может ускорить их износ и деградацию. Log2Ram позволяет уменьшить запись на SSD диски.
Экономия дискового пространства: Все журналы системы Linux хранятся во временной области оперативной памяти ОЗУ, не занимая место на диске.
Легкость настройки: Log2Ram просто установить и настроить для различных Linux дистрибутивов.
Недостатки использования Log2Ram для логирования:
Временное хранение: Системные логи хранятся только до перезагрузки системы, после чего данные в ОЗУ теряются. Важные логи необходимо сохранять другим способом.
Потребление ОЗУ: В зависимости от объема системных журналов, Log2Ram может использовать значительный объем оперативной памяти, особенно на загруженных Linux серверах.
Отсутствие резервного копирования: Логи в RAM не сохраняются при внезапном отключении питания, что может представлять проблему для аудита.
Безопасность: Конфиденциальные данные в системных логах хранятся в незащищенной области оперативной памяти.
В целом, Log2Ram для Linux является эффективным инструментом для повышения производительности логирования и уменьшения износа SSD на системах с подходящей конфигурацией оперативной памяти RAM. Однако он имеет свои ограничения и не рекомендуется в качестве единственного способа хранения важных системных логов.