Обложка канала

ServerAdmin.ru

12437 @srv_admin

Авторская информация о системном администрировании.

ServerAdmin.ru

4 года назад
Открыть в
​​На днях заморочился и на своей рабочей системе добавил алиасы и функции для упрощения рутинных операций. Расскажу про них на примере сервиса по получению информации об IP адресах ifconfig.co. Делаем простой алиас для проверки своего внешнего IP адреса. Нужно, в основном, когда пользуешься VPN, иногда для временного открытия доступа через свои фаерволы. Добавляем в ~/.bashrc: alias myip='curl ifconfig.co' Применяем изменения: # source .bashrc Проверяем: # myip 195.196.228.171 Теперь сделаем алиас для получения информации о случайном IP адресе, который, к примеру, попался где-то в логе. Я иногда делаю уведомления от Zabbix о подключении к некоторым серверам по SSH, где не должно быть посторонних людей, и куда в принципе очень редко кто-то подключается напрямую. Как-то раз прилетает оповещение, проверяю IP и вижу, что это Сербия. Тут же блокирую доступ, начинаю смотреть, что сделано. Вижу какие-то изменения в исходниках, смысл которых не могу понять. Через некоторое время пишет разработчик и говорит, что не может подключиться к серверу, а ему там надо срочно что-то поправить через консоль. Оказалось, что он временно уехал в Сербию и работает оттуда. Вернул ему доступ. Чтобы быстро проверить страну IP адреса, надо использовать запрос вида: # curl 'https://ifconfig.co/json?ip=1.1.1.1' То есть нам в алиас (например ipc) нужно передать значение из ввода консоли, примерно так: # ipc 1.1.1.1 Но алиасы не поддерживают передачу переменных. Для этого надо использовать функцию. Добавляем туда же, в .bashrc: function ipc {   curl https://ifconfig.co/json?ip=$1   } Проверяем: # ipc 1.1.1.1 {  "ip": "1.1.1.1",  "ip_decimal": 16843009,  "country": "Australia",  "country_iso": "AU",  "country_eu": false,  "latitude": -33.494,  "longitude": 143.2104,  "time_zone": "Australia/Sydney",  "asn": "AS13335",  "asn_org": "CLOUDFLARENET",  "hostname": "one.one.one.one",  "user_agent": {   "product": "curl",   "version": "7.81.0",   "raw_value": "curl/7.81.0"  } Мне столько информации не надо, поэтому решил сделать пару функций. Одна выводит информацию только о стране, вторая полную информацию об IP, за исключением информации о user_agent. Я и так знаю, что это мой curl. В итоге получились две функции с использованием утилиты jq: function ipa {   curl -s https://ifconfig.co/json?ip=$1 | jq 'del(.user_agent)'   } function ipc {   curl -s https://ifconfig.co/json?ip=$1 | jq '.country'   } Проверяем: # ipc 1.1.1.1 "Australia" # ipa 1.1.1.1 {  "ip": "1.1.1.1",  "ip_decimal": 16843009,  "country": "Australia",  "country_iso": "AU",  "country_eu": false,  "latitude": -33.494,  "longitude": 143.2104,  "time_zone": "Australia/Sydney",  "asn": "AS13335",  "asn_org": "CLOUDFLARENET",  "hostname": "one.one.one.one" } Подобными подходами с помощью алиасов и функций можете упростить свои рутинные операции. Обычно это различные утилиты копирования сразу с ключами, создание новой директории и сразу же переход в неё и т.д. У каждого будет свой набор. #bash