На днях заморочился и на своей рабочей системе добавил алиасы и функции для упрощения рутинных операций. Расскажу про них на примере сервиса по получению информации об IP адресах ifconfig.co.
Делаем простой алиас для проверки своего внешнего IP адреса. Нужно, в основном, когда пользуешься VPN, иногда для временного открытия доступа через свои фаерволы. Добавляем в ~/.bashrc:
alias myip='curl ifconfig.co'
Применяем изменения:
# source .bashrc
Проверяем:
# myip195.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