Официальная возможность получить лицензионный софт бесплатно.
Giveaway of the Day
Это не реклама!

Щелкните для получения прогноза по Биробиджану


среда, 13 июня 2018 г.

И снова о просмотре логов squid и выводе полей в awk.

Очередной способ получить человеко-читаемое время в логах прокси-сервера.

awk '{print strftime("%Y-%m-%d %H:%M:%S",$1) " " substr($0, index($0,$2))}' FILENAME

Основная идея: по умолчанию поля в этом логе отделяются пробелами. Awk преобразует первое поле (дата и время в юникс-формате) в читаемый вид и выводит его. Далее печатается пробел, после которого печатается всё от начала второго поля до конца строки.

Как выяснилось, это самый быстрый способ заставить awk вывести "всё остальное", не перебирая поля последовательно в цикле.

Решение найдено здесь.

воскресенье, 10 июня 2018 г.

bash: поиск и замена

Sed, awk, grep - всё это здорово. Но это внешние программы, а что же по части встроенных? Их есть у меня!

${переменная/что/на что} - меняем первое вхождение "что" на "на что"
${переменная//что/на что} - меняем все вхождения "что" на "на что"

Например, есть переменная, в которой хранится путь:

filNam="sambas/samba201/shares.conf"

но из этого пути мне надо сформировать имя файла. Не выделить собственно имя из пути, а просто как-то изменить путь. Легко! Заменим все слэши на дефисы.

$ echo ${filNam/\//-}
sambas-samba201/shares.conf

$ echo ${filNam//\//-}
sambas-samba201-shares.conf

суббота, 9 июня 2018 г.

bash: сравнение строк без учета регистра

Понадобилось сравнить строки, конкретно - атрибуты CN и SAMAccountName в AD. Только не спрашивайте, на кой чёрт мне в баше надо сравнивать виндовые данные. Просто удобнее, чем километровые команды в PS.

Можно, конечно, сначала эти строки преобразовать к верхнему или нижнему регистру с помощью tr [:upper:] [:lower:], но это лишние команды и лишнее время выполнения скрипта, особенно если надо сравнивать много таких строк.
Чтобы избежать вызова этих лишних команд, воспользуемся встроенными возможностями:

${переменная,,} - (две запятых) привести переменную к нижнему регистру
${переменная^^} - (два циркумфлекса) привести переменную к верхнему регистру

Найдено здесь.

p.s. для вытаскивания нужных атрибутов из AD я пользуюсь как самбовской net, так и adtool, про которую уже рассказывал.