LINUX.ORG.RU
ФорумTalks

Библиотека для скриптов на bash'е sysfunc обновилась до версии 2.2.6

 , sysfunc, ,


1

1

Сабж. Предыдущая версия 2.2.5 выходила в апреле 2017-го года.

Домашняя страница библиотеки находится на tekwire.net по адресу http://sysfunc.tekwire.net .

Библиотека позиционируется как must have для юниксовых сисадминов. На github её выкладывает Francois Laupretre - французский линуксовый сисадмин/девопс, а также инженер автоматизации.

Readme доступно здесь: https://github.com/flaupretre/sysfunc/blob/master/README.md
Скачать новую версию можно здесь: https://github.com/flaupretre/sysfunc/archive/2.2.6.tar.gz

Changelog'ов найти не удалось.

★★★★★
Ответ на: комментарий от beastie

Не нужно оскорблять человека, может он верующий

Shulman
()
Ответ на: комментарий от beastie

За автора библиотеки можно порадоваться. Он выложил свои наработки в открытый доступ. У каждого нормального админа есть кучка скриптов для автоматизации рутинных задач.

Другое дело, что реальные неосиляторы будут пользоваться этими наработками, не понимая, что и как они делают. Но неосиляторы есть неосиляторы. Не возьмут это, скопипастят в другом месте

Dao_Dezi
()

Ого! Хорошо структурированный и читабельный код на баше. Достаточная редкость, автору респекты.

ncrmnt ★★★★★
()
Ответ на: комментарий от ncrmnt

Хотел написать «+1», но на самом деле чёт не очень. Проблема стандартная — portability over readability.

Мой личный эталон кода на bash — это исходники тулз (devtools, mkinitcpio, makepkg) арча.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

Проблема стандартная — portability over readability.

Действительно проблемой оно будет только в том случае, когда можно сохранить переносимость без потери читаемости.

Если же нет — нет смысла в читаемости, если оно не будет работать.

Deleted
()
Ответ на: комментарий от Deleted

Переносимость в ущерб чему-то ещё не нужна.

нет смысла в читаемости, если оно не будет работать.

Нет смысла в переносимости, если для её обеспечения код нужно превратить в write-only кашу.

intelfx ★★★★★
()
Ответ на: комментарий от vodz

А, лол, и действительно.

Ну тогда всё встаёт на свои места, для POSIX sh вполне себе ничего :)

intelfx ★★★★★
()
Ответ на: комментарий от Deleted

Ровно столько же, сколько толку от кода работающего, но никому нахер ненужного ввиду неподдерживаемости.

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

Ровно столько же, сколько толку от кода работающего, но никому нахер ненужного ввиду неподдерживаемости.

Нет, не ровно столько же.

В первом случае (когда код читаемый, но не работает) — ты не можешь решить никакой своей задачи, и смысла в этом читаемом коде не оказывается никакого.

Во втором случае (когда код нечитаемый, но работает) — ты испытываешь сложности с поддержкой, но свои задачи ты решаешь.

Deleted
()
Ответ на: комментарий от IPR

Во что? В то, что POSIX Shell не Bash?

Вопрос был «если ли такое-же». Собственно ответ был чуть выше к ТС.

vodz ★★★★★
()
Ответ на: комментарий от Dao_Dezi

Неосиляторы не осилят решение без кучи экземплов разжеванных где-нибудь на so, осиляторам же вообще не вполне понятно предназначение такого рода велосипедов.

phoen ★★
()

вспомнил тут, как я пытался распарсить шелловыми утилитами файл с 300к ип подсетями. надо было превратить из диапазонов в сидр, затем скормить ipset. все это на роутере с процем 500мгц делалось за около час. написал софтину на С - вышло за ~10 секунд. такие дела.

Rost ★★★★★
()

А такое всратое форматирование, оно для переносимости, или читаемости?

function _sf_cfg_def_exec
{
cat $SF_CFG_DEF_DIR/* 2>/dev/null | SF_DB_PATH='<stdin>' $*
}

Deleted
()
Ответ на: комментарий от vodz

Это не на bash, а на любом bourne-совместимом shell-e написано.

Не совсем. Например, typeset — это расширение Korn и bash, в Bourne отсутствует.

Да и с переносимостью там всё плохо — полно GNU-измов, множество функций работает только в Linux, некоторые подразумевают Linux без проверки, ограничены типы ФС. Да и «Linux» там весьма условный: rhel, centos и suse с yum.

PS. Порадовало, как он копирует stdin в файл: сперва dd в /tmp/ (создание имен временных файлов — отдельный маразм), а потом cp из временного файла. :)

baka-kun ★★★★★
()
Ответ на: комментарий от baka-kun

typeset без опций как бы и непонятно, накой вообще. Наверное, они всё же хотели «local».

Да и с переносимостью там всё плохо — полно GNU-измов

Не, какие GNU-измы при заявленной работоспособности в «Solaris, HP-UX, and AIX»?

vodz ★★★★★
()
Ответ на: комментарий от vodz

Наверное, они всё же хотели «local».

Именно. При этом local было бы более переносимым, поскольку работает в ash и других реализациях Bourne Shell, а typeset — фишка Korn.

Не, какие GNU-измы … ?

Много, все даже лень разбирать. Например, считает, что язык sed по умолчанию «недо-ERE», поскольку GNU sed использует несколько более широкий синтаксис, чем BRE. Или stat -c (ЕМНИП stat отсутствует в POSIX). Сразу взгляд натыкается.

baka-kun ★★★★★
()
Ответ на: комментарий от baka-kun

Сразу взгляд натыкается

Оно там натыкается наверное потому, что при каждом вызове в каждой функции проверяется наличие, вместо того, чтобы сделать либо один my_stat либо конкретные реализации подфункций через ls. :)

vodz ★★★★★
()
Ответ на: комментарий от vodz

проверяется наличие

Наличие исполняемого файла, но не ключей. Смотрим sf_file_age:

ftime=`stat -c "%Y" "$source"`
Нужно говорить, что stat не из GNU coreutils имеет другие ключи, а в некоторых системах (Солярка, кстати) его из коробки нет? Например,
ftime=`stat -f "%m" "$source"`
Это пример утилиты, которая не стандартизирована в POSIX, поэтому переносимый код полагаться на неё не может.

baka-kun ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.