LINUX.ORG.RU

Применение Bash-скриптов в повседневности

 , ,


2

5

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

первого скрипта я написал в 16 лет.

в основном это массовые действия над файлами через find -exec, рекурсивный поиск по содержимому grep -r, а таких чтобы прям специально файл скрипта писать — нет, пишется однострочник и хранится в .bash_history, затем дёргается через ctrl + r. удобно управлять системой, например, когда надо удалить все пакеты из системы кроме репозитория core чтобы получить снова чистый дистрибутив без переустановки. затем делается сравнение файлов на ФС и неконтролируемых ПМом и тоже удаляются.

Spoofing ★★★★★
()

Не совсем баш-скрипт.

«User menu» в Midnight commander считаю самым удобным местом для таких мелочей. Это и среда разработки и место хранения и запуск. Синтаксис почти соответствует БАШ. Сколько знаю линукс столько времени и потратил. Но это не значит, что только этот скрипт и писал. Появилась идея или возникла необходимость, начал сочинять. Некоторые разрастаются и(или) по другим причинам выношу в самостоятельные баш-скрипты. Самое простое пожалуй запуск какой-нибудь программы.

andytux ★★★★★
()

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

buratino ★★★★★
()

Я с помощью скриптов почистил свою фототеку от битых файлов. Еще был скрипт для поиска по содержимому doc/odt.

anti_win ★★
()

https://github.com/grznych/dotfiles/tree/master/.local/bin

Тут мой набор скриптов (в основном zsh).

  • galc — запускает rofi-calc.
  • galen — календарь на rofi с возможностью навигации.
  • gattery — уведомление о низком заряде батареи (запускается сервисом systemd, который висит на таймере, который запускается при отключении питания через udev).
  • gcrotscrot с уведомлением.
  • geck — проверка обновлений с уведомлением (запускается сервисом, который висит на таймере).
  • gehfeh с рандомным выбором пикч (то же самое).
  • genu — меню приложений на rofi (подробно рассказывал тут).
  • glight — регулировка яркости экрана (с уведомлением).
  • glock — блокировка экрана.
  • gmpv — запускает mpv, передавая ему в качестве параметра содержимое PRIMARY буфера или, если он пуст, то CLIPBOARD (очень удобно открывать видосы с ютуба, например: достаточно выделить ссылку и нажать сочетание клавиш).
  • golume — регулировка громкости (с уведомлением).
  • gourly — часовой сигнал (сервис, таймер).
  • gstatus — небольшой фильтр вывода i3status: меняет поведение после получения сигнала USR1 (выводит либо укороченную версию статусной строки, либо полную).
  • gtrans — переводит выделенный текст и выводит через уведомление.

Жизнь упрощает значительно. Вещи, которые раньше могли занимать несколько секунда (иногда даже минут), теперь делаются мгновенно. Большинство скриптов написаны минут за пять. genu, gstatus, galen писа́лись пару дней каждый.

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

Я с помощью скриптов почистил свою фототеку от битых файлов. Еще был скрипт для поиска по содержимому doc/odt.

Ого, заинтересовал. Расскажи, что имеется в виду под битой фоткой? Я это понимаю как внешне часть изображения «артефактами» испорчена (квадратики, полосочки)? Сталкивался с таким. Обычно, если не докачать файл. Но как такое можно определить с технической стороны? Наверняка ты использовал готовую программу для этого в скрипте. Программа должна быть из области компьютерного зрения, либо «сканирует» внутренности графического файла на предмет артефактов, т.е. последовательность битов особую ищет?

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

Эти фотографии когда-то были восстановлены с отформатированного диска. Большая часть восстановилась правильно, но некоторые оказались частично затерты нулями. Если открыть такую фотографию в HEX-редакторе, у нее бужет правильное начало, но по большей части она будет состоять из нулей. Я посмотрел размеры фотографий. У большынства битых фоток размер был очень небольшой, порядка 5 килобайт. Плюс, во время восстановления образовалась куча копий фотографий в низком разрешении. Эти копии тоже были ненужны. Я почистил все это дело небольшым скриптом, проверяющим размер файлов. Потом я написал еще один скрипт, который проверял конец файла в 16-ричном коде. Если последние несколько байт были нулями, фотография удалялась. Опробовал его на резервной копии той фототеки — результат был удовлетворительный.

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

Битая фотография просто не открывается просмотрщиком изображений, так как не содержит в себе определенного стандартом формата 16-ричного окнчания. Это в моем случае.

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

Довольно интересно, аж захотелось скачать hex-редактор и открыть чего-нибудь такое, посмотреть что у разных файлов внутри. Наверно спектр применения такого редактора куда более широк (слышал для низкоуровневого программирования он нужен), но после твоего рассказа прям руки зачесались. Не подскажешь что прикольного с ним можно сделать?

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

Да я даже не помню, как так получилось. Помню, что мне нужны были имена, которые не пересекались бы с именами из /usr/bin. Повлиял либо gnome, либо мой ник на github’е. Гномом уже давно не пользуюсь — только отдельными приложениями: evince, eog, baobab, gnome-disk-utility. Недавно вот пересел с nautilus’а на ranger.

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

Лично я не знаток областей применения HEХ-редакторов. Полагаю, что они нужны в том числе и для этого. К тому же, они исполюзуются в ПО для восстановления данных. С помощью HEX-редактора можно посмотреть содержимое таблицы разделов, например, или зашифрованные трояном файлы. Поищи на хабре статьи про восстановление данных, в них есть скриншоты, на которых видно такой редактор.

anti_win ★★
()
Последнее исправление: anti_win (всего исправлений: 1)

простейший скриптик который скачивает с моего же сайта картинку счетчика столько то visitors всего столько то уникальных и открывает картинку в gwenview. Раньше больше использовал.

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

Чёт ты поздно начал скрипты писать.

Дома много чего на bash-е и python-е, начиная от массовой обработки файлов, заканчивая записью видео с экрана.

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

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

Он и для высокоуровнего нужен. Я в нём смотрю, например, переносы строк в текстовых документах, если что-то не так с ними работает. Много интересного может быть, например, самая экзотика в юникоде мне встретилась в виде U+2028 (E2 80 A8)... Хотя именно её отображает большинство текстовых редакторов. Ещё по сути единственный инструмент для ковыряния многих бинарных форматов, порой твоего собственного производства.

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

Не лучший способ определения битых изображений. Есть identify, которое умеет делать это более корректно.

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 1)

Из того что не относится к грепанью логов и пр.

Пример 1. Туннель до прокси поднимается автоматом и реконнектится при отвале.

Пример 2. Было дело хотел сводить жену в кино на премьеру - поставил скрипт на проверку началась ли продажа билетов, в середине рабочего дня открыли продажу и скрипт поднял мне браузер, в результате выбирал места в пустом зале.

ya-betmen ★★★★★
()
  1. бекапилки крутятся. Сохраняется /home еженощно и любимая флешка при втыкании

  2. проверяется баланс у интернет-провайдера

  3. мониторится доступность этого самого интернета

  4. собирается статистика по одной криптовалютной программулине

  5. скриншоты из игр пережимаются из png в jpg

  6. ну и всякое по мере надобности

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

захотелось скачать hex-редактор и открыть чего-нибудь

Midnight commander > F3. Формально это просмотрщик, в том числе и в шестнадцатиричном виде. Есть элементарные команды редактирования. Для того, чтобы посмотреть, что есть и подправить пару байт более чем достаточно.

открыть чего-нибудь такое

Например открываешь снап и видишь, что это тот-же самый squashfs. И его можно так-же примонтировать и смотреть, что внутри.

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

Так это индивидуально для каждого провайдера.

#!/bin/sh

/usr/bin/curl -sS http://balance.lpk.sumtel.ru/ |
        /usr/bin/sed 's#</td>#\t#g;s# *<[^>]*>##g' |
        /usr/bin/awk -v THRESH=${1:-100} -F'\t' '
                $1~/договор/ {
                        id=$2;
                }
                $1~/баланс/ {
                        balance=$2;
                }
                END {
                        ACC=1234567890;
                        if (id!=ACC)
                                printf("Получен неверный номер договора ``%s'', ожидался `
`%s''!\n", id, ACC) > "/dev/stderr"
                        if (THRESH==0)
                                printf("Баланс %d руб.\n",balance);
                        else if (balance<THRESH)
                                printf("Баланс %d руб. меньше порога в %d руб.!\n",balance
,THRESH);
                }'
legolegs ★★★★★
()
Ответ на: комментарий от legolegs

Благодарю. Про индивидуальность понятно, просто хотел посмотреть, как это выглядит. Может для себя когда-нибудь осилю. Что-нибудь может ещё понадобиться, кроме перечисленных в срипте пакетов?

Prosto_user ★★★
()

Монтирование сетевой шары по требованию, например.

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

Это по вкусу всё. У меня 3/4 скрипта на awk, но то же самое можно сделать на чистом sh или на питоне/перле и т.п. Вместо curl можно взять wget или просто через nc послать запрос http.

legolegs ★★★★★
()

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

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

проверяется баланс у интернет-провайдера

А здесь наверняка надо входить в личный кабинет с помощью какой-то консольной программы, если это скрипт? Т.е. мало того, что она должна зайти через консоль на страницу, выделить нужное поле, ввести данные и нажать ввод. Так еще и логин/пароль придется хранить в каком-то файле в открытом виде. Безопасно ли это?

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

Провайдер без авторизации меня узнает и отдает нужные данные. Это же все через его провода и маршрутизаторы проходит, и адрес ip он выдаёт.

legolegs ★★★★★
()

Из именно башевских скриптов у меня осталась переделка музыки в формат моей коллекции — всё, что с cue переделать во флак и нарезать на треки, не забыв натравить enconv на cue, обозвать все файлы согласно стандарту, при виде mp3 выдать варнинг «ты что, бухой был, когда mp3 качал?». Времени потратил мало, польза ощущается.

gremlin_the_red ★★★★★
()

Опишите примеры вашего применения баш-скриптов в повседневности

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

YAR ★★★★★
()

Скрипт распознавалка текста выделенной области на экране, затем кладет в буфер обмена и показывает через уведомления.

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