LINUX.ORG.RU

Bash задачи, приближенные к боевым

 


1

1

Всем доброго времени суток.
Пару месяцев назад столкнулся с bash скриптингом. Стало интересно - почитал пару гайдов, накидал несколько несложных скриптов. Не знаю, куда дальше податься.
Работаю разработчиком, поэтому взять фул или парт-тайм работу админом не могу. Но начать писать что-нибудь на bash'е интересное хочется.
Собственно вопрос: есть ли какие-нибудь ресурсы по bash-скриптингу? Сразу оговорюсь, что гугл в основном выдает либо гайды, либо какие-то совсем простые задачи. Может быть контесты какие-нибудь?
Есть ли смысл искать небольшие разовые заказы на скрипты где-нибудь на фриланс биржах?


традиционно каждый админ (по крайней мере вебовый) в какой-то момент жизни пишет свой мониторинг, систему резервного копирования и хреновину, которая будет создавать юзеров/сайты/ящики и т.п.

leave ★★★★★
()

Стало интересно - почитал пару гайдов, накидал несколько несложных скриптов. Не знаю, куда дальше податься.

Это называется: «создал для себя сущность, теперь не знаю что с ней делать и как её поймать обратно...»

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

Видел, но задач не нашел, как писал выше в основном гайды. Возможно, чего-то не увидел, гляну внимательнее. Спасибо.

serfeo
() автор топика

есть ли какие-нибудь ресурсы по bash-скриптингу?

http://www.opennet.ru/docs/RUS/bash_scripting_guide/
Качай сразу «Архив руководства в html-формате (~380Кб)»

Есть ли смысл искать небольшие разовые заказы на скрипты где-нибудь на фриланс биржах?

Нет.

Не знаю, куда дальше податься.

Если ты работаешь в командной строке, то задачи сами придут.

Примеры моих скриптов:
- Преобразовать один формат файлов (ape) в другой (flac), желательно с сохранением тегов. Для всех файлов в каталоге.
- Для всех jpg в текущем каталоге - переименовать их в <дата>-<время>; исправить расширение с jpg, Jpg, jpeg и т. п. на .jpg
- Бекап системы (rsync) при условии что список каталогов для бекапа задается в отдельной переменной
- Сделай скрипт, который скачивает LOR «Уведомления» и выводит новые.
Другие слишком узкоспециализированные.

И, да, подпишись здесь на тег bash и помогай людям.

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

По близким мне задачам я написал скрипт для создания дифферентного билда проекта, чтобы делать апдейты и в дальнейшем их накатывать. Но bash автоматизации в java разработке мало, разве что разные continuous integration с использованием jenkins, да мелкие скрипты деплоя. Хочется для себя какие-нибудь более интересные скрипты поразрабатывать.

serfeo
() автор топика
Ответ на: комментарий от Kroz

С гайда на opennet.ru собственно и начинал - очень дельно написано. В командной строке работаю, но всякие старт скрипты для запуска tomcat'ов, ide и поднятия vpn итак написал уже - не люблю набивать одни и те же команды постоянно) По поводу подписки не тег bash - хорошая мысль, спасибо.

serfeo
() автор топика

Традиционный таск. Напиши бекапилку с нормальным конфигом и поддержкой инкрементальных, дифференциальных бекапов.

generator ★★★
()

попробуй сразу начни с обработчика возвратного кода ошибки из вложенного sub-шелла через trap или хотя-бы найти достойную альтернативу subshell-у

anonymous
()

Работаю разработчиком

Сделай так, чтобы любой таргет твоих проектов собирался по одной-единственной команде на любой (в идеале) машине, а все ошибки выводились в некий summary в человекочитаемом виде.

E ★★★
()

Не знаю, куда дальше податься.

В питон, го, руби, перл - в куда угодно. Баш-скрипты размером больше 20 строк - треш, угар, содомия, ужас мира и стыд природы.

писать что-нибудь на bash'е интересное хочется.

Не надо. Пожалуйста.

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

Баш-скрипты размером больше 20 строк - треш, угар, содомия, ужас мира и стыд природы.

Тебе просто лень вникать в баш, отсюда и реакция такая :)

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

Если я правильно понял смысл, то сейчас вроде так и есть, но без использования bash. Это обеспечивается другими кросплатформенными инструментами сбокри и управления зависимостями вроде ant с ivy, maven, gradle и иже с ними.

serfeo
() автор топика
Ответ на: комментарий от Amet13

Я видел реализации http сервера на некоторых языках: nodeJS, java, scala. Bash действительно подходящий для этих целей инструмент?

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

Не надо. Пожалуйста.

Имхо от задач зависит. С задачами автоматизации каких-то действий bash справляется хорошо с учетом того, что из-под консоли можно сделать практически все, что угодно.

В питон, го, руби, перл

Языков много - за всеми не угнаться) Bash мне показался уже очень устоявшимся и хорошо зарекомендовавшим себя скриптовым языком для целей администрирования и автоматизации. Хочется добавить этот скил к другим.

serfeo
() автор топика
Ответ на: комментарий от generator

Для тренировки и правда звучит хорошо. Спасибо.

serfeo
() автор топика

Не знаю, куда дальше податься.

На perl, например.

Не надо использовать bash для сложных задач, такой код трудно писать из-за неприятных особенностей языка (например, отсутствия полноценных функций и строковых операций), а еще труднее потом поддерживать. И тормозит, конечно, так как каждая строка скрипта интерпретируется в момент выполнения

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

Тебе просто лень вникать в баш, отсюда и реакция такая

Можно и на sed'е игры писать, вопрос в целесообразности

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

Не, пока только http сервер и браузер)

serfeo
() автор топика
Ответ на: комментарий от annulen

А как можно очертить круг задач именно bash'а? Может быть я правда не тот инструмент выбрал для изучения.

serfeo
() автор топика

Мне бы твои проблемы...

По сабжу - пиши автотесты, скрипты развертывания системы, взаимодействия с БД при развертывании.

Для Java и ее сборки сейчас весьма хорош Gradle - там довольно таки неплохой язык, на котором удобно делать многие вещи при сборке проекта.

Я сейчас пили небольшую системку на Bash. Мысль одна - уговорить клиентов поставить на всех целевых тачках хотя бы Perl.Уже стало бы намного легче...

TheKnight ★★★
()

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

из реальных задач напишите 2 скрипта:

1) мониторит список хостов по ip адресам, как только один из них меняет состояние, например с up на down или наоборот, присылайте себе письмо на почту или смс на телефон.

2) есть 2 сетевых устройства, каждое подключено к интернету, как только основное из них перестает работать, меняете маршрут по умолчанию на резервное, как только основное начинает работать, меняете маршрут обратно.

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

Тебе просто лень вникать в баш, отсюда и реакция такая :)

Нет, это просто у тебя недостаточно опыта разбора и отладки чужих стокилобайтных баш-простыней, отсюда и отсутствие реакции.
Даже брейнфак перловый код можно сделать понятным и сопровождаемым. Баш - нельзя.

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

Возможно, баш не расчитан для того, чтобы на нем писали простыни кода. Отсюда и такое безапелляционное отрицание. В Bash scripting Guide, например, код компактный и простой.

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

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

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

Языков много - за всеми не угнаться)

За всеми и не надо.

Bash мне показался уже очень устоявшимся и хорошо зарекомендовавшим себя

показался

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

баш не расчитан для того, чтобы на нем писали простыни кода.

Код имеет тенденцию разрастаться. Когда садишься писать, думаешь - фигня, там же сотня строк всего будет, можно и на баше. А потом появляется надобность прикрутить туда ещё чуть-чуть функциональности. А потом ещё чуть-чуть. И в результате у тебя на руках размахивая костылями корчится очередной монстр. А потом в один прекрасный момент ты теряешь понимание что куда передается, а он делает rm -rf $dir1/$dir2, где обе переменные оказываются неинициализированными...

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

важно видеть границу когда баш, а когда вовремя переключиться на пайтон или что-либо удобоваримое...

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

Тут не давно хотели всем ЛОРом переписать portage то ли на С++ то ли на баш, но так и не решились. Видимо никто не осилил вникнуть в запутанный питоний код. А ты тут один только баш поливаешь.

Код имеет тенденцию разрастаться

И это не только к башу относится :)

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

важно видеть границу когда баш, а когда вовремя переключиться

Если стоит вопрос «что бы написать эдакое» - граница пройдена уже давно.

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

хотели всем ЛОРом
никто не осилил

Нашёл чему удивляться.

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