ym104432846
Вставьте ссылку на видео из Youtube, Rutube, VK видео
Задайте вопрос по видео
Что вас интересует?
00:00:30
Основы Bash и создание простого скрипта:
  • 1. Разработана концепция автоматизации вывода текста через создание простого bash-скрипта, использующего команду `echo`
  • 2. Создан простой файл с именем `hello.sh`, содержащий строку `echo hello world` и комментарий
  • 3. Обсужден вопрос изменения прав доступа файла для возможности выполнения скрипта командой `chmod`
00:03:03
Автоматизация задач с использованием скриптов:
  • 1. Обсудили создание полезного скрипта для автоматизации рутинных задач и бэкапа файлов
  • 2. Решено использовать файловый менеджер и консольные утилиты для работы с файлами и датами
  • 3. Создано видеоурок по использованию утилит, ссылка размещена в описании
00:03:49
Использование переменных и функций в скриптах:
  • 1. Копирование скрипта произошло автоматически вместе с передачей прав доступа
  • 2. Предложено использовать переменные для повторного применения одинаковых фрагментов кода
  • 3. Определена необходимость описания названия переменной справа от её назначения
00:04:19
Создание архива файлов и использование переменных:
  • Создан скрипт для регулярного автоматического бэкапа проекта GoFibre
  • В скрипте используется команда `tar` для сжатия файлов и сохранения текущей даты в названии архива
  • Разработан способ хранения только содержимого текущей рабочей директории, исключая полное дерево каталогов
00:08:10
Генерация паролей с помощью цикла:
  • 1. Создан скрипт для генерации пяти паролей длиной 12 символов каждый, используя случайные строки формата Base64
  • 2. В скрипте применяется цикл, начинающийся с переменной `i`, принимающей значения от 1 до 5, каждая итерация генерирует пароль
  • 3. Используются разрешенные символы (например, буквы и цифры), однако возможность исключения некоторых символов отсутствует
00:10:27
Проверка статуса сайта с помощью curl:
  • Разработан простой скрипт для проверки статуса сайта с использованием curl и условий if-else
  • В скрипте планируется использование переменных-констант для упрощения изменения настроек
  • Созданная утилита позволяет принимать аргументы (url), что делает её универсальной для разных случаев
0: Привет, сегодня разберём, как автоматизировать рутинные задачи с помощью bash скриптов, а также познакомимся с их синтаксисом, начнём, начнём с основ баш это комонлайн интерфейс для того, чтобы взаимодействовать с unix системой, он присутствует в macos.
1: В linux и windows если вы, например, установите windows систем linux или используете гитбаш отдельно устанавливаемый интерфейс для взаимодействия с bash консолью задача скриптов же bash это автоматизировать.
2: Какие-то рутинные задачи, которые бы вы так или иначе вводили бы руками в ваш консоль команд, например, если мы хотим вывести какое-нибудь слово, то мы будем использовать команду echo и затем передадим что-то в результате нам.
3: Света команд это 1 из пример простейших утилит, которые у нас уже установлены в системе, которые позволяет нам выводить просто переданный текст. При этом мы с вами можем теперь не просто делать вручную выполнение этой команды.
4: Ну и написать небольшой скрипт, который будет его выводить. Большое преимущество таких скриптов в том, что мы с вами можем там уже работать не только с 1 командой, а с группой команд. Можем выполнять команду над несколькими файлами, использовать циклы, функции и так далее. Для того, чтобы создать
5: 1 баш скрипт ну, допустим, давайте его назовём хеллоу. Имеет расширение sh для того, чтобы мы могли его просто выполнить, как Шёл скрипт любой bash, скрипт начинается с нотации, обозначающей тем нам необходимо исполнить данный скрипт, потому что не всегда.
6: Скрипты, которые будем исполнять, они могут быть именно bash. Это может быть, например, скрипт для ноды, который написан, если это, например, какое-нибудь нодовское приложение. Поэтому наша задача указать, что мы хотим использовать Бинбаш для этого видео я буду работать в неов.
7: Ну, соответственно, для простоты вашего восприятия. Итак, здесь у нас есть простейший файл, в которых мы как раз выводим echo hello world. Как мы видим, мне ещё здесь подсказало, что на самом деле мы можем также писать комментарии по аналогии, начиная с решётки любой коммен.
8: Комментарий будет игнорироваться в рамках работы приложения оно позволит вам комментировать написанный код, но давайте для простоты мы хотим исполнить с помощью bash команду hello, world и для того, чтобы мы с вами продемонстрировали, что на самом деле мы можем выполнять сразу несколько коман.
9: Давайте мы с вами ещё напишем здесь привет, теперь мы сохраняем файл и выходим теперь у нас есть 1 файл hello если мы его выведем, то мы увидим, что пока у него права исключительно на read если я попробую его испол.
10: Как скрипт для работы приложения, то я увижу пермишен динай, что необходимо, конечно же, поменять ему права с помощью команды чмот мы модифицируем права. И если теперь мы по
11: Смотрим полный вывод команды. Мы увидим, что мы теперь можем его экзекьютить, выполнять наш скрипт для того, чтобы выводить, выполнять те или иные команды. Теперь, просто выполнив хэллоу эсаш, мы выведем 2 строки в команды хэллоу ворлд.
12: И соответственно, привет это наш самый 1 скрипт, который позволит нам в дальнейшем развиться и автоматизировать какие-то рутинные задачи с этим основам понимания. Перейдём к примерам, теперь напишем более полезный скрипт, который будет бкк.
13: Папку, складывать её в архив и заодно познакомимся с переменными, а также с, например, преобразованием дат, потому что нам это нужно будет для бэкапа, для того, чтобы заново не писать, я возьму и скопирую в hello, вставлю его, а теперь
14: Переименую его на бэкап. Тот, кому интересно, файловый менеджер язи, который я сейчас использую. У меня есть отдельное видео. Ссылка будет в описании, где я рассказываю про консольные утилиты, которыми я регулярно пользуюсь. Окей, теперь у нас есть
15: Скрипт и давайте его. Он скопировался вместе с правами, поэтому нам теперь не нужно будет делать никакой чоу. Мы с вами поговорим о том, как мы можем переиспользовать какие-то вещи с помощью переменных. Обычно, когда у нас в нескольких местах требуется повторить 1 и то,
16: Тоже лучше всего это поместить в переменную переменная. В данном случае это будет на самом деле 1 раз выдающаяся константа сорс дир директория, которую мы хотим получить слева. Мы описываем название нашей переменной справа. Что мы хотим в неё поместить?
17: И здесь мы хотим поместить нашу домашнюю директорию внутри я могу без проблем использовать переменные окружения. Хо, у меня будет ссылаться на мою домашнюю директорию. Оттуда я могу в папочку документ зайти, затем из папочки документс давайте сделаем.
18: Source и сделаем бэкап проекта го файбер, который я делаю для курса по го. Кстати, 3 курс по го у нас скоро выйдет 1, 2 уже есть на платформе. Теперь моя задача взять эти файлы, положить в
19: Архив и этот архив. Соответственно, куда-то сложить. Для этого мы будем использовать tar. Он опять-таки встроен в большинстве операционных систем linux также Макус, поэтому мы можем использовать бэкап, но называть
20: Как мы будем следующим образом, у нас будет бэкап, нижнее подчёркивание. И здесь я хочу, чтобы у меня была дата. Для этого я снова использую доллар для того, чтобы написать здесь некое выражение и беру текущую дату, которую буду преобра.
21: Образовывать к формату год. Давайте сделаем месяц и давайте сделаем день. Я не буду уже секунды, минуты брать и закрываем выражение. Теперь, когда мы будем исполнять у меня, например,
22: Значение, backup. Соответственно, текущий год, месяц, день, ну и, соответственно, тар гзет. Кроме этого, вместо того, чтобы просто взять исходную директорию, мы с вами сейчас будем бэкапить, взяв в качестве того,
23: То, что мы будем в результате складывать, мы возьмём только текущую нашу директорию, чтобы не копировать полный путь, а в качестве базовой директории возьмём, соответственно, бейз ней. Поэтому мы берём здесь, используем снова выражение, в котором
24: Мы берём дирнейм, текущую директорию. Тоже самое, как у нас есть внутрь строки. Мы можем встраивать какие-то дополнительные утилиты, переменные и прочее для того, чтобы мы могли их использовать. Ну и соответственно, здесь он нам правильно подсказывает сортир.
25: И base name source dir с такой записью мы позволяет нам скопировать именно внутренность нашего кофай с этим же названием и положить в бэкап при этом нам не нужно будет, он не будет копировать всю структуру папок от самого начала.
26: Home ну что же, давайте, если все правильно мы написали, сохраним, и теперь у нас появился бэкап эсаш, давайте я выйду отсюда и исполню бэкап эсаш. После выполнения все выполнилось отлично. Давайте, кстати, что было уж покраси.
27: Мы с вами в конце выведем ещё сообщение. Эхо бэкап завершён для того, чтобы пометить, что мы завершили. Бэкап бэкап завершён, сохраняем, удаляем.
28: Текущий бэкап и давайте ещё раз выполним бэкап у нас появилась теперь папочка, точнее архив бэкап саш, и если я открою этот backup sh внутренности, то, соответственно, после разархивации опен.
29: Файндере. И вот наш бэкап откроем его внутри. Мы увидим, что располагается как раз проект ко файбер, который мы забекапили. Тем самым мы создали сжатый бэкап для определённого файла и, конечно же, на определён
30: Год, месяц или день. И плюс с вами мы с вами познакомились с тем, как мы объявляем переменные. Затем как ich используем через, соответственно, колор в кавычках и мы используем дополнительное выражение для получения даты дирнейм, а также
31: Кстати, не забывайте подписываться на наш telegram, мы там периодически публикуем интересные новости, обновления, промокоды, а также новые материалы кроме того, у нас есть там уютный чатик, где вы можете пообщаться и поговорить о том, что сейчас происхо.
32: Ходит в мире java script и не только ссылка как обычно в описании теперь посмотрим как работают циклы и как с помощью них например сделать генерацию нескольких паролей одновременно для того, чтобы можно было использовать для этого мы с вами
33: Снова создадим тот же самый скрипт давайте возьмём хэллоу, вставим и переименуем на этот раз на password и теперь, в рамках пасворда, мы будем исполнять следующее значение цикл, цикл как
34: Во многих языках программирования мы начинаем с for для каждого i. Соответственно, наш текущий индекса из определённой, например, последовательности. Для последовательности. Мы можем использовать сик для того, чтобы сказать, что мы хоти
35: Последовательность, последовательность от 1, ну, скажем, до 5. Мы хотим сгенерить 5 паролей. И дальше, что мы должны выполнить дду. И после этого в конце, когда мы заканчиваем выполнение, нам нужно выполнить, да, то есть для
36: Каждого из от единицы до 5 цифр. Вот здесь у нас будет находиться этот ай, ну, единица, 1, 2, 3, 4, 5 в каждой итерации. Но нам он здесь не нужен. Мы будем выполнять какую-то команду, которая располагается между дду. И, да, например, мы хотим сгенерить
37: Некоторую случайную строку можем сделать это с помощью open эссель опять-таки нужно понимать, что open эссель у нас должен при этом стоять на операционной системе. Мы хотим сделать случайный б 64.
38: 12 длины. Тем самым, когда мы выполним её, мы получим 5 паролей, которые будут состоять из случайных 12 символов, которые мы с вами сгенерируем. Ну и давайте проверим, как это работает для того, чтобы выполнить это
39: Паспорт и sash мы получили наборы паролей понятно, что здесь такой записи мы не можем исключить какие-то символы, например, там слыши, если мы хотим более сложную генерацию, то здесь нужно тогда давать список разрешённых символов, и из него уже случай.
40: Брать, но даже в такой простейшей операции мы получаем полезный скрипт и заодно разбираемся, как работает с циклом. С точки зрения циклов. Все достаточно просто. Мы с вами описываем цикл, получаем от 1 до 5, получаем перемен.
41: И выполняем какой-то код внутри, в данном случае i у нас даже не используется, теперь рассмотрим управление потоком, а это именно условия if else и сделаем простейший скрипт, который позволит нам пинговать сайт и проверять его статус ответа делать мы.
42: Это будем с помощью курл. Если мы выполним, соответственно, запрос курл, затем с параметрами as i heard для того, чтобы получить исключительно хэд, то мы получим некую информацию об ответе странички, например, в в google точка ком.
43: Нам выдаст аштитипи 2 200, означающие, что у нас все хорошо и мы с вами будем проверять, что у нас сайт отвечает 200 по http 2, то есть проверяем наличие вот этого в ответе. Как нам это написать? Этот скрипт. Снова начнём с
44: Переменных. Лучше всего выносить переменные константы. Как называйте то, что мы будем использовать в последующем, потому что это потом можно будет быстро изменить в 1 месте. Например, там ping сайт, который мы будем пинговать, в данном случае google com и можем
45: Его использовать. Теперь мы будем проверять, проверять мы будем с помощью условия if и дальше используем курл с
46: Head потому что нам нужен только head и передаём доллар, доллар url куда мы хотим вытащить оттуда результат ответа так вот и здесь нам нужно из вот этого url вытащить.
47: Именно 200. Нам как раз немножко подсказывает наш айдие, что мы можем взять хэд хэд н, соответственно, минус н 1. Это будет 1 строка. Мы можем это снова проверить.
48: Давайте сделаем так, выйдем и теперь сделаем предыдущий запрос head and 1 тем самым мы вытащим как раз 1 статус ответа, и если здесь будет 200, то, значит.
49: Все хорошо, мы, соответственно, правильно, на правильном пути. Так, давайте я возьму редактирование. То есть, если мы вытащили вот это, и здесь присутствует 200, это можем проверить с помощью утилиты grep, которая вы
50: Этой строки, то, соответственно, все хорошо единственное, что нам нужно отправить, перенаправить вывод в death нал, чтобы у нас не выводился верхняя строка, тогда снова точка с запятой зен и дал.
51: Мы можем какое-то условие else, снова какое-то условие, и когда мы закончили эф ай для того, чтобы обозначить, что у нас закончилось условие. Итак, у нас есть if, если что
52: Здесь на самом деле будет проверяться код ответа сейчас покажу, как они будут отличаться, тогда мы выполняем команду, описанную здесь, если нет, тогда выполняем здесь и f l обозначает окончание условия если мы будем теперь делать тоже самое, например, там давайте мы сделаем.
53: Grep 200. Сейчас я просто в консоли выполняю её, то мы получим вот ответ. И вот эта штуку вот здесь секундочка показывает нам успешный неуспешный код ответа. Ну то есть код ответа положительный.
54: Там 0, что все хорошо или какой-то код ответа ошибки. Если, например, я здесь положу 400, то мы увидим то, что у нас вот здесь появился крестик, означающий, что код ответа был не 0. То есть мы получили какую-то о
55: Ошибку это как раз мы e используем в нашем скрипте, что если, соответственно, у нас все хорошо, то тогда у нас мы можем вывести эхо, давайте сделаем у нас там
56: Доступен, доступен. Если нет, то мы можем сделать эхо ошибка, чтобы они отличались. Сохраняем. У меня здесь не стоит форматтер. Для него тоже рекомендую поставить форматтер для удобства.
57: И теперь попробуем его выполнить. Пинк точка. Давайте текущий скрипт пинг эс аш сайт доступен, потому что код 200, ну давайте теперь поменяем его. Сейчас мы откроем сразу на
58: Наш пинг, ну, допустим, просто google, он на самом деле выдаст редирект, поэтому код будет ответа будет 301, и если мы теперь выполним его, то получаем ошибка соответственно, он не прошёл соответствующий пинк, но тут мы
59: Видим, что передавать каждый раз вот этот url не очень удобно, поэтому теперь перейдём к дополнительным аргументам, которые мы можем получить в баш скриптах. У нас в комментариях видео часто спрашивают, с чего начать обучение. Именно поэтому мы подготовили
60: Для вас совершенно бесплатные карты развития по различным направлениям, где вы можете посмотреть все технологии, которые вам нужны для того, чтобы освоить ту или иную дисциплину, а также последовательность прохождения и освоения материалов. Все карты доступны по ссылке в описании.
61: А если вы ещё не определились с тем, что вы хотите, то у нас есть бесплатный курс основы разработки, где вы сможете определиться с направлением, а также пописать код вместе со мной на java script ну и конечно есть у нас и другие бесплатные материалы, например курс по flex.
62: Ссылка на все это будет в описании, для этого переходим к редактированию нашего пинк и вместо того, чтобы захардкодить здесь google, мы с вами будем использовать доллар 1, обозначающий 1.
63: Переданный аргумент в наше приложение, то здесь можно использовать доллар 2, доллар 3 если вдруг аргументов он принимает несколько, тем самым url мы обязываем того, кто будет использовать нашу утилиту, передать в качестве аргумента как же это?
64: Происходит. Мы используем соответственно, пинк. Саш, давайте просто попробуем без аргументов его выполнить и мы увидим ошибку, что, соответственно, бланк аргументс, который никак не содержит курл, должен иметь какой-то url. Но давайте
65: После пинга через пробел мы передадим наш 1 пример. Https, www, google, точка ком. Если я теперь это сделаю, то сайт будет доступен, если я передам, не знаю, например, там.
66: Скул точка ру, он будет недоступен не потому, что сайт недоступен, а потому, что там стоит защита от Ботов и дедос, поэтому такой выдаст нам ошибку. Будет код 304, что, соответственно, доступ заблокирован, потому что мы бот, так сайт доступен, не пережи.
67: Тем самым мы получаем возможность теперь исполь переиспользовать нашу утилиту для различных аргументов, будь то аргумент url, или параметры, или путь до папки, или ещё что-то в этом поможет в дальнейшем использовать.
68: Не просто для какого-то 1 конкретного случая, а использовать их полноценно, чтобы мы могли динамически передавать наборы аргументов, для которых нужно использовать этот скрипт. Я надеюсь, это видео было вам полезно. Если так, то не забывайте подписываться и ставьте лайк, а также
69: Если вы не видели предыдущий выпуск новостей об разработки, то здесь где-то будет подсказка, а также ссылка в описании.