Авторская информация о системном администрировании.
API_KEY=822e086fd27e546ffe323554
read -p 'Enter ip address: ' IP
curl -s "https://api.iploka.com/${IP}?api_key=${API_KEY}" | jq
Можно вывести только необходимую информацию с помощью фильтра в jq:
# curl -s "api.iploka.com/77.88.8…7.88.8.8" | jq '.ip, .country_name, .region_name, .connection.isp'
Вывод:
"77.88.8.8"
"Russia"
"Volgograd Oblast"
"YANDEX LLC"
Подобный сервис удобно использовать в мониторинге, где есть контроль за авторизацией. Например, я частенько делаю оповещение в Zabbix на логин по ssh к какому-то серверу. В почту приходит уведомление, включающее в себя информацию об ip адресе, с которого было успешное подключение. Для Mikrotik делаю уведомления об авторизации через Winbox.
В Zabbix можно сделать предобработку данных с помощью JavaScript. А в нём уже сделать проверку ip адреса примерно так:
var apiKey = '{$API_KEY}';
var ip = 'value';
fetch(`https://api.iploka.com/${ip}?api_key=${apiKey}`)
.then(response => response.json())
.then(data => console.log(data));
За основу взял пример из документации iploka, добавил значение IP адреса в виде value, а api передал через макрос $API_KEY. Данный пример не отлаживал и не уверен, что заработает в таком виде. Я не проверял.
#сервис #zabbix #мониторинг #бесплатно# nc logstash.local 5044 < /var/log/nginx/access.log
Очень актуально при отладке своего grok фильтра. Там придётся постоянно перепроверять, что-то менять и заново генерировать данные.
Можно и в обратную сторону выполнить передачу. Открыть у себя локально с помощью Netcat сетевой порт 8082, принять через него данные и сохранить в текстовый файл:
# nc -l 8082 > /tmp/file.txt
Можно с помощью первого примера отправить файл на эту систему. То есть полностью через nc перелить какие-то данные. Вариант просто чтобы протестировать работу.
Я описал функционал, который использую сам. С помощью Netcat можно выполнять множество других действий, таких как сканирование портов, передача данных, в том числе архивов и целых образов дисков, отображать статическую веб страницу как веб сервер и др. Но по мне это всё баловство и есть более удачные инструменты для этих действий. А вот пульнуть куда-то лог весьма удобно.
С помощью юниксовой магии в виде именованных каналов можно даже локальный редирект запросов на внешний хост сделать. Например, все локальные запросы на порт 1234 перенаправлять на адрес 1.2.3.4:80
# mkfifo proxy
# while true; do nc -l 1234 0<proxy | nc 1.2.3.4 80 1> proxy; done
Последний пример специально проверил на своём веб сервере. Реально работает редирект, если обратиться на локальный адрес 1234:
# wget http://localhost:1234
На удалённый сервер запрос прилетает с заголовком домена localhost:
4.3.2.1 - localhost [12/Jan/2022:16:40:53 +0300] "GET / HTTP/1.1" 403 146 "-" "Wget/1.14 (linux-gnu)"
Ещё один необычный пример с Netcat - потоковая передача видео.
# cat film.avi | nc -l 4321
Теперь к этому потоку на порту 4321 можно подключиться каким-нибудь видео проигрывателем, например mplayer.
# nc 1.2.3.4 4321 | mplayer -vo x11 -cache 3000 -
Не проверял, как это работает.
Если знаете еще какое-то полезное или необычное применение Netcat, делитесь в комментариях.
#terminal