BashMaster
前往频道在 Telegram
Удобные консольные наработки на каждый день для разработчиков, девопсов и сисадминов. Реклама: @Kone4noVasya Канал на бирже: https://telega.in/c/bash_help
显示更多8 733
订阅者
+124 小时
+27 天
+21330 天
帖子存档
8 732
Операторы Bash if: if, elif, else, then, fi
Если вы только начинаете изучать скриптовой язык программирования Bash, вы скоро обнаружите, что вам надо использовать условные операторы.
Другими словами, условные операторы определяют «если условие истинно или ложно, то сделать то или это, а если верно противоположное, сделать что-нибудь еще». Это самая основная функция любого условного оператора.
Эта статья познакомит вас с пятью основными предложениями оператора if , а именно if, elif, else, then и fi.
Первый просто открывает оператор if, затем вводит раздел, какие команды выполнять, если условие оператора было истинным, а else вводит, какие команды выполнять, если условие оператора было ложным. Наконец, fi закрывает оператор.
У нас также есть специальный elif, о котором мы узнаем больше далее. Начнем с простого примера.
В этом руководстве вы узнаете:
1. Как реализовать оператор if в командной строке Bash
2. Как такие операторы if также могут использоваться внутри скриптов Bash
3. Примеры, демонстрирующие работу if, elif, else, then и fi в Bash
Пример 1: простой оператор if в командной строке
$ if [ 1 -eq 1 ]; then echo "Matched!"; fi
Matched!
В этом примере мы сравниваем один к одному.
Обратите внимание, что -eq означает равно.
Чтобы сделать обратное, можно использовать -ne, что означает не равно, как показано в следующем примере:
$ if [ 0 -ne 1 ]; then echo "Matched!"; fi
Matched!
В этом случае мы проверили неравенство, и, поскольку 0 не равно 1, оператор if верен, и команды после then будут выполнены.
Давайте немного изменим это:
$ if [ 1 -ne 1 ]; then echo "Matched!"; else echo "Not Matched!"; fi
Not Matched!
Здесь мы ввели оператор else; какие команды выполнять, если условие в инструкции if оказалось ложным (или неверным).
Когда мы пытаемся запросить, не равно ли 1 (-ne) на этот раз 1, и поскольку 1 действительно равно 1, условие, сформулированное в этом операторе if, ложное, и мы сталкиваемся с нашим оператором else с выведенным совпадающим текстом.
🖼️ Дочитать статью
🔨 bash_help8 732
Bash скрипт для отправки электронной почты со списком учетных записей пользователей, срок действия которых истекает через «X» дней
Политика принудительного применения пароля будет применяется большинством компаний, но период времени будет отличаться.
Обычно каждый админ использует 90-дневный цикл паролей.
Пользователь будет изменять пароль только на тех серверах, которые он использует, и он не будет менять пароль на серверах, которые он использует не часто.
В частности, большинство разработчиков забывают изменить пароль учетной записи службы, что может привести к нарушению обычных заданий, даже если они настроены для работы с аутентификацией на основе ключей SSH.
Аутентификация на основе ключей SSH и cronjobs не будут работать, если срок действия пароля учетной записи пользователя истечет.
Чтобы избежать этой ситуации, мы создали скрипт на bash, который отправляет вам список учетных записей, срок действия которых истекает в течение 10 дней.
В это руководство включены два скрипта bash, которые помогут вам собрать информацию о сроках действия пользователей в вашей системе.
🖼️ Ссылка на скрипт
🔨 bash_help
8 732
Использование команды Sleep в скриптах Bash в Linux
Команда sleep в Linux — одна из самых простых команд. Как видно из названия, его единственная функция — спать. Другими словами, он вводит задержку на указанное время.
Таким образом, если вы используете команду sleep с x, то следующая команда может быть запущена только через x секунд.
Команда Sleep имеет простой синтаксис:
sleep Number[Suffix]
Здесь суффикс может быть:
s. Это по умолчанию.
m. минуты.
h. час.
d. день.
Команда sleep без суффикса считается в секундах
Предположим, вы хотите приостановить ваш bash-скрипт на 5 секунд, вы можете использовать режим sleep следующим образом:
sleep 5
В примере скрипта bash это может выглядеть так:
!/bin/bash
echo "Sleeping for 5 seconds…"
sleep 5
echo "Completed"
Если вы запустите его с помощью команды time, вы увидите, что скрипт bash на самом деле работал (немного) более 5 секунд.
time ./sleep.sh
Sleeping for 5 seconds…
Completed
real 0m5.008s
user 0m0.000s
sys 0m0.007s
Команда Sleep с суффиксом m, h или d
Вы можете указать время sleep в минутах следующим образом:
sleep 1m
Это приостановит скрипт/оболочку на одну минуту. Если вы хотите отложить сценарий на несколько часов, вы можете сделать это с помощью опции h:
sleep 2h
Даже если вы хотите приостановить скрипт на несколько дней, вы можете сделать это с помощью суффикса d:
sleep 5d
Это может помочь, если вы хотите работать в разные дни или дни недели.
Команда sleep с комбинацией секунд, минут, часов и дня
Вы не обязаны использовать только один суффикс за раз. Вы можете использовать более одного суффикса, и продолжительность sleep является суммой всех суффиксов.
Например, если вы используете следующую команду:
sleep 1h 10m 5s
Это заставит скрипт ждать 1 час 10 минут и 5 секунд. Обратите внимание, что суффикс s здесь по-прежнему необязателен.
🔨 bash_help8 732
Перезагрузка Asterisk по расписанию
В версиях Asterisk начиная с версии 1.4 периодически наблюдались проблемы с утечкой памяти, которые лечились с помощью перезагрузки сервера. Так как никто не застрахован от вероятных неизвестных багов, лучше для перестраховки перезагружать сервер IP - АТС раз в неделю (или чаще) с помощью скрипта.
По факту, в скрипте достаточно одной команды перезагрузки. Сделаем немного информативной нагрузки – добавим запись в лог – файл: мы будем записывать дату и время ребута с лог – файл. Итак, создаем файл reboot.sh:
[root@asterisk ~]# touch reboot.shДалее открываем этот файл для редактирования через vim редактор:
[root@asterisk ~]# vim reboot.shОткрыв файл, нажмите «О» для редактирования. Вставьте код, указанный ниже:
#!/bin/sh
LOGFILE=/home/admin/log_mail.txt
DATE="`date +%d.%m.%Y" "%H:%M:%S`"
echo "REBOOT :: $DATE :: Reboot is in progress" >> "$LOGFILE"
shutdown -r now
После нажимаем комбинацию «:x!» для сохранения конфигурации. В данном скрипте:
LOGFILE - переменная, которая указывает на лог – файл;
DATE - записываем дату и время в указанную переменную;
echo "…" - записываем в лог – файл отметку о перезагрузке;
shutdown -r now - команда перезагрузки сервера
Осталось только сделать работу скрипта по расписанию. Для этого мы воспользуемся планировщиком cron:
* * * * * команда для выполнения - - - - - | | | | | | | | | +----- день недели (0 - 6) (Воскресенье=0) | | | +------- месяц (1 - 12) | | +--------- день месяца (1 - 31) | +----------- час (0 - 23) +------------- минута (0 - 59)Зашедулим скрипт на выполнение каждую полночь в воскресение. Для этого, открываем для редактирования crontab файл:
[root@asterisk ~]# crontab -eВ открывшийся файл добавляем:
0 0 * * 0 /bin/bash /home/reboot.sh >/dev/null
Где /home/reboot.sh - полный путь к скрипту перезагрузки сервера. Нажимаем F2 и далее Yes. Задача на выполнение сохранена.
🖼️ Дочитать статью
🔨 bash_help8 732
Простой и удобный шаблон для bash-скриптов выполняемых по расписанию
С самого начала моей работы системным администратором linux, я обнаружил, что cron не очень удобный планировщик задач. При этом практически безальтернативный. Чем больше становился мой парк серверов и виртуальных машин, тем больше я получал абсолютно бесполезных почтовых сообщений "From: Cron Daemon". Задание завершилось с ошибкой - cron напишет об этом. Задание выполнено успешно, но напечатало что-нибудь в STDOUT/STDERR - cron всё равно напишет об этом. При этом даже нельзя отформатировать тему почтового сообщения для удобной автосортировки. Сначала были годы борьбы с использованием разных вариаций из > /dev/null, 2> /dev/null, > /dev/null 2>&1, | mail -E -s '<Subject>' root@. Потом я нашёл Cronic - обёртку на bash, которая скрывает вывод запускаемой задачи, если она завершена успешно. Стало полегче, но обнаружилось, что от некоторых заданий всё же лучше получать сообщение "Task OK", чтобы не столкнуться в самый неподходящий момент с тем, что выполнение задания тихо сломано месяц назад. Постепенно копились и другие хотелки:
1. иногда требуется, чтобы задание было автоматически принудительно остановлено, если выполняется больше определённого времени;
2. иногда нужны гарантии, что в каждый момент времени запущена только одна копия задания;
3. бывает так, что запускать задачу нужно с рандомной задержкой по времени (такая дисперсия иногда нужна, чтобы не положить какой-нибудь сервис одновременными запросами с большого количества машин).
В какой-то момент я отложил в сторону cronic и написал свой шаблон для запуска периодических заданий, в котором реализовано всё, что перечислено выше.
🖼️ Ссылка на шаблон
🔨 bash_help
8 732
Cracker-Tool
Это инструмент на основе Python и Bash созданный для взлома и пентеста.
Доступен следующий функционал:
1. IP-инструмент 2. Сканер субдоменов 3. Инструмент для Ddos-атак 4. Поиск админки 5. Has Cracker 6. Скачивание видео 7. SQL Injection 8. Конвертер текста в голос 9. Обфускатор Python 10. Набор для работы с Telegram 11. Termux Framework 12. Kali Nethunter Installer 13. Termux Tool 14. Смена URL 15. Сокращение ссылок 16. WEB-инструмент 17. Временная почта 18. Генератор Gmail 19. Генератор идентичности 20. Multi Ddos 21. Anon Share 22. Инструмент электронной почты 24. Инструмент CC🐙 Перейти на Github 🔨 bash_help
8 732
Запуск Bash в деталях
Смысл этой заметки — как можно проще изложить процедуру запуска bash, чтобы вы могли справиться с проблемами.
Login Shell?
Сперва нужно выбрать, находитесь вы в командной оболочке входа (login shell) или нет.
Оболочка входа — это первая оболочка, в которую вы попадаете при входе в систему для интерактивного сеанса. Оболочка входа не требует ввода имени пользователя и пароля. Вы можете форсировать запуск оболочки входа, добавив флаг --login при вызове bash, например:
bash --loginОболочка входа настраивает базовую среду при первом запуске оболочки bash. Интерактивный? Затем вы определяете, является оболочка интерактивной или нет. Это можно проверить по наличию переменной PS1 (она устанавливает функцию ввода команд):
if [ "${PS1-}" ]; then
echo interactive
else
echo non-interactive
fi
Или посмотреть, установлен ли параметр -i, с помощью специальной переменной дефиса - в bash, например:
$ echo $-
Если в выдаче есть символ i, то оболочка является интерактивной.
В оболочке входа?
Если вы находитесь в оболочке входа, то bash ищет файл /etc/profile и запускает, если он существует.
Затем ищет любой из этих трёх файлов в следующем порядке:
~/.bash_profile
~/.bash_login
~/.profile
Когда находит один, то запускает его и пропускает другие.
В интерактивной оболочке?
Если вы находитесь в интерактивной оболочке без входа в систему (non-login shell), предполагается, что вы уже побывали в оболочке входа, окружение настроено и будет унаследовано.
В этом случае выполняются по порядку следующие два файла, если они существуют:
/etc/bash.bashrc ~/.bashrcНи один вариант? Если вы не находитесь ни в оболочке входа, ни в интерактивной оболочке, то ваше окружение действительно будет пустым. Это вызывает большую путаницу (см. ниже о заданиях cron). В этом случае bash смотрит на переменную BASH_ENV вашей среды и выполняет соответствующий файл, который там указан. 🖼️ Дочитать статью 🔨 bash_help
8 732
Дедлайны горят, а твои глаза уже нет. Что делать айтишнику, если от за#бался.
🔵 Все чаще откладываешь задачи на потом и находишь тысячу поводов не подходить к компу.
🔵 Пинаешь себя “Хватит лениться”, но от этого становится только хуже.
🔵 В семье разлад и отношения не складываются.
🔵 От мыслей о работе появляется дикая тревожность и напряжение.
🔵 Ничего не хочется, кроме как сутками залипать в телефоне.
Узнал себя хотя бы в 2 пунктах? Поздравляю - ты выгорел.
И пока ты не потерял работу, друзей и семью, надо из этого состояния выкарабкиваться.
Как? Подписаться на канал ПСИХОЛОГ ВЗРОСЛОГО ЧЕЛОВЕКА.
⚡️ Автор канала, Вадим, точно знает, как IT-специалисту выйти из застоя и вернуть себе силы и энергию.
А чтобы уже сейчас сделать первый шаг к радостям жизни и работе без надрыва, переходи в закреп канала.
Там тебя ждет бесплатный мини-курс “Как избежать выгорания, если постоянно вкалываешь?”.
Ты найдешь причины упадка сил, апатии и выгорания. И поймешь, как из этого выйти.
Подписывайся 👉🏻 https://t.me/+Tf_rd40FOagzMzMy
8 732
5 простых шагов по отладке сценария оболочки Bash
При программировании существует три основных типа ошибок.
1. Синтаксическая ошибка
Обычно синтаксические ошибки легче всего устранить в сценарии Bash. Их часто можно обнаружить без выполнения сценария оболочки.
К наиболее распространенным синтаксическим ошибкам относятся:
**Неправильное использование квадратных скобок в операторе
If
**Неправильный синтаксис при использовании цикла Bash или массива Bash
**Неправильное использование составной команды при определении функции Bash
2. Ошибка во время выполнения
Сценарий оболочки выполняется без синтаксических ошибок, но не может надежно выполнять определенные задачи.
Наиболее распространенные ошибки во время выполнения сценария оболочки включают:
**Деление на ноль или использование переменной string/float в арифметическом выражении Bash
**Неверный нижний индекс при динамическом заполнении ассоциативного массива Bash
**Неправильный синтаксический анализ вывода файла или команды, например, при обработке CSV-файла в Bash или подсчете файлов в каталоге
**Запуск с неправильными разрешениями sudo или настройками tty
3. Логическая ошибка
Логические ошибки часто сложнее всего устранить, поскольку они связаны с недостатками дизайна и логическими ошибками. Отладка таких ошибок может быть затруднена, если не иметь полного понимания сквозного выполнения скрипта и ожидаемого поведения.
К наиболее распространенным логическим ошибкам в сценарии оболочки относятся:
**Неправильное использование оператора test в условном операторе, например, использовать -z вместо -n в условии if
**Неправильное использование арифметического оператора, такого как умножение, вместо ввода числа
**Неправильное условие для выхода из цикла Bash, например, при использовании while цикла вместо цикла until
**Неправильное манипулирование датами Linux с разными часовыми поясами
**Отображение неправильного сообщения в командной строке или в журналах
🖼️ Дочитать статью
🔨 bash_help8 732
Admin Guides - полезные заметки от сисадмина
Гайды по OS Windows & Linux, лайфхаки и полезные Open Source решения.
Подписывайтесь @admguides
8 732
Как удалить файл в bash
Любой файл можно удалить временно и навсегда в bash. Когда файл временно удаляется с помощью графического пользовательского интерфейса, он сохраняется в папке «Trash» и при необходимости может быть восстановлен. Файл, который был удален безвозвратно, не может быть восстановлен позже обычным образом. Команда
rm используется для окончательного удаления файла с компьютера. Если какой-либо файл был случайно удален этой командой, его можно восстановить из резервной копии. В этой статье показано, как удалить любой файл из терминала и графический интерфейс пользователя.
Удаление файла с помощью команды rm
Команда rm может использоваться с опцией и без опции для различных типов удаления. Синтаксис команды rm приведен ниже.
rm [option] filename
Параметр ‘-i’ может использоваться с командой rm для вывода подсказки перед удалением любого файла, чтобы предотвратить случайное удаление. Параметр ‘-f’ может использоваться с командой rm для принудительного удаления любого файла. Ниже показаны различные варианты использования команды rm.
Пример-1: Удаление файла с помощью команды rm без опции
Вы можете применить команду ‘rm’, чтобы удалить существующий файл. В следующем сценарии пустой файл создается с помощью команды touch для проверки команды rm. Затем используется команда ‘rm’ для удаления файла test.txt.
#!/bin/bash
# Установить имя файла
filename = 'test.txt'
# Создать пустой файл
touch $filename
# Проверить, существует ли файл,
if [ -f $filename ]; then
rm test.txt
echo "$filename удален"
fi
Пример-2: Удалите файл с помощью команды `rm` с параметром -i
Следующий сценарий запросит разрешение у пользователя перед удалением файла для параметра «-i». Здесь имя файла будет взято у пользователя в качестве ввода. Если файл существует и пользователь нажимает «n», то файл не будет удален, иначе файл будет удален.
#!/bin/bash
# Считайте имя файла
read -p 'Введите имя файла для удаления: ' filename
# Проверьте, существует ли файл,
if [ -f $filename ] ; then
# Удалить файл с разрешением
rm -i " $filename "
# Проверить, удален ли файл,
if [ -f $filename ] ; then
echo " $filename не удаляется"
else
echo " $filename удален"
fi
else
echo "Файл не существует"
fi
Пример-3: Удалите файл с помощью команды `rm` с параметром -v
Следующий скрипт получит имя файла с помощью аргумента командной строки. Если файл существует, он напечатает сообщение об удалении с именем файла для параметра ‘-v’.
#!/bin/bash
# Проверить, существует ли файл
if [[ $1 != "" && -f $1 ]]; then
# Вывести сообщение об удалении
rm -v $1
else
echo "Имя файла не указано или имя файла не существует"
fi
Пример-4: Удалить несколько файлов с помощью команды `rm`
Более одного файла можно удалить, используя команду ‘rm’ и разделяя имена файлов пробелом. В следующем скрипте несколько имен файлов будут взяты из аргументов командной строки. Если какой-либо файл не существует, он покажет сообщение, иначе имена файлов будут объединены пробелом и сохранены в переменной с именем files. Затем будет выполнена команда rm с переменной files для удаления нескольких файлов.
#!/bin/bash
files=""
space=""
# Проверить, указано ли несколько имен файлов,
if [ $# > 2 ]; then
# Чтение значений аргументов с использованием цикла
for argval in "$@"
do
if [ -f $argval ]; then
files+=$argval$space
else
echo "$argval не существует"
fi
done
# Удалить файлы
rm $files
echo "файлы удалены."
else
echo "Имена файлов не указаны или имя файла не существует"
fi
В приведенных выше примерах показаны различные типы способов удаления файла с помощью сценария bash, чтобы помочь пользователям bash легко выполнять этот тип задачи.
🔨 bash_help8 732
Гибридный ChatGPT версии 3.5 - 4 с высокой скоростью ответа уже доступен бесплатно!
отлично подходит программистам, аналитикам, студентам и вообще всем тем, кто сидит за компьютером. Поможет найти книги или рассказать краткий пересказ.
Бот помнит контекст, то есть историю вашей переписки и будет отвечать точно.
На данный момент реализована:
Генерация текста по вашему тексту(text-to-text)
Генерация текста по вашей картинке(image-to-text)
Что будет реализовано:
генерация картинок по описанию (text-to-image)
Никаких ограничений и подписок
https://t.me/gpt_lama_bot
8 732
Пример скрипта для создания резервной копии файлового сервера
Данный скрипт написан на bash под управлением операционной системы семейства Linux. Он будет работать по следующему сценарию:
Ежедневная актуализация данных в каталоге резервный копий daily.
Еженедельная актуализация данных в каталоге резервный копий weekly.
Создание полного архива с данными раз в 30 дней.
Старые архивы (которым более 370 дней) будут удаляться.
Скрипт будет сравнивать файлы в рабочем каталоге и папке резервного копирования с помощью rsync. Это позволит нам сэкономить на времени выполнения задания. Долго будет выполняться только задание создания архива с помощью tar.
Создаем каталог для скриптов и сам скрипт:
mkdir /scripts
vi /scripts/samba_backup.sh
#!/bin/bash
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
source="/data"
destination_root="/backup"
fdate=$(date +%Y-%m-%d)
# Clean old archives
find ${destination_root}/archive -type f -name "*.tar.gz" -ctime +370 -exec rm -R {} \; 2>&1
# Daily
rsync -a --partial --inplace --append --delete-after ${source}/ ${destination_root}/daily/
# Weekly
if [[ $(date +%u) -eq 0 ]]
then
rsync -a --partial --inplace --append --delete-after ${source}/ ${destination_root}/weekly/
fi
# Archive
count_last_archives=$(find ${destination_root}/archive/ -name "*.tar.gz" -mtime -30 | wc -l)
if [[ $count_last_archives -eq 0 ]]
then
cd ${source}
tar zcf ${destination_root}/archive/samba_${fdate}.tar.gz ./*
fi
Задаем права скрипту на выполнение:
chmod +x /scripts/samba_backup.sh
Скрипт готов к работе.
🖼️ Ссылка на скрипт
🔨 bash_help8 732
Как ловить и обрабатывать ошибки в bash
Оболочка bash не имеет какого-либо причудливого механизма проглатывания исключений, такого как конструкции
try/catch. Некоторые ошибки bash могут быть просто проигнорированы, но могут иметь последствия в будущем. В оболочке bash нет даже надлежащего отладчика.
В этом руководстве я познакомлю вас с основными советами по отлову и обработке ошибок в bash. Хотя представленные методы обработки ошибок не так причудливы, как доступные в других языках программирования, мы надеемся, что, приняв эту практику, вы сможете более изящно обрабатывать потенциальные ошибки bash.
Совет № 1 по обработке ошибок Bash: проверьте статус выхода
В качестве первой линии защиты всегда рекомендуется проверять статус выхода команды, поскольку ненулевой статус выхода обычно указывает на какой-то тип ошибки. Например:
if ! some_command; then
echo "some_command returned an error"
fi
Другой (более компактный) способ инициировать обработку ошибок на основе статуса выхода — использовать список ИЛИ:
<command1> <command2>
С этим оператором ИЛИ выполняется тогда и только тогда, когда возвращает ненулевой статус выхода. Таким образом, вы можете заменить своей собственной процедурой обработки ошибок. Например:
error_exit()
{
echo "Error: $1"
exit 1
}
run-some-bad-command error_exit "Some error occurred"
Bash предоставляет встроенную переменную с именем $?, которая сообщает вам статус выхода последней выполненной команды. Обратите внимание, что при вызове функции bash $? считывает статус выхода последней команды, вызванной внутри функции. Поскольку некоторые ненулевые коды выхода имеют особое значение, вы можете обрабатывать их выборочно. Например:
# run some command
status=$?
if [ $status -eq 1 ]; then
echo "General error"
elif [ $status -eq 2 ]; then
echo "Misuse of shell builtins"
elif [ $status -eq 126 ]; then
echo "Command invoked cannot execute"
elif [ $status -eq 128 ]; then
echo "Invalid argument"
fi
🖼️ Дочитать статью
🔨 bash_help8 732
ITGLOBAL.COM выпустили книгу «Публичное облако 2023»
Команда ITGLOBAL.COM подготовила объемный материал — книгу «Публичное облако 2023». Это руководство для тех, кто заинтересован в переходе на облачные решения.
В книге:
🔹 представлен обзор экспертов о состоянии отечественного рынка
🔹 описаны технологии на базе российских платформ виртуализации
🔹 обозначены риски перехода на них
🔹 предложены шаги по минимизации рисков.
Книга будет полезна для руководителей, технических директоров и ИТ-специалистов, заинтересованных:
➖ в оптимизации работы компании
➖ развитии облачных инфраструктур
➖ минимизации рисков ИБ.
Заполните форму на сайте, чтобы получить ссылку на книгу.
Реклама. ООО "ИТГЛОБАЛКОМ РУС". ИНН 7838413489. erid: LjN8KJkpF
8 732
Шесть полезных трюков в работе с Linux
Если вы администрируете сервер c Linux-based операционной системой и вам часто приходится работать с bash - небольшие трюки ниже вам обязательно пригодятся, если вы с ними еще не знакомы :)
Табуляция
Первый трюк - табуляция. Многие, когда только начинают работать с Linux системами не знают об этой фиче, но она очень сильно упрощает жизнь. Табуляция - это завершение команд и названий файлов после нажатия на Tab. Когда это может быть полезно? К примеру, вы забыли как пишется команда или файл имеет длинное название, содержащее в себе много информации- номер версии, разрядность и так далее - начните писать название файла и нажмите на клавишу Tab - и сразу все получится!
Пайпирование
Второй трюк - пайпирование. Пайпом в Linux системах называется символ
| - он позволяет отправлять вывод одной команды в другую. К примеру, команда ls выводит список файлов в директории и команда grep возвращает результаты поиска по заданным параметром. С помощью пайпа эти две команды можно скомбинировать - например если вам нужно найти в директории конкретный файл (в данном случае - некую аудиозапись, которая начинается как recording010101:
ls | grep recording010101
Маска
Третий трюк - использование маски, которая обозначается символом * - звездочка. К примеру, если нужно удалить все файлы, которые начинаются на слово recording01, то можно ввести следующую команду:
rm recording01*
Это может быть очень полезным при написании скриптов, которые удаляют по крону старые логи или файлы аудио-записей. Но с данной командой нужно быть очень аккуратным - если забыть проставить критерии поиска, то команда вида rm * удалит всё содержимое директории.
Вывод команды в файл
Четвертый трюк - вывод команды в файл. Это делается с помощью символа >. Сценариев использования масса, как пример приведу вывод команды ls в текстовый файл (ниже) - если у вас в директории очень большое количество файлов, то, для общего понимания что же именно в ней находится будет проще работать с текстовым файлом или же можно запустить рекурсивный скрипт с занесением содержимого всех каталогов в текстовые, например:
ls > testfile.txt
Быстрая смена директории
Пятый трюк - смена директории на домашнюю директории конкретного юзера с помощью символа ~. Просто введите cd ~ и вы попадете в директорию /home/user.
Фоновые процессы и запуск по условию
Шестой трюк - это запуск команды по условию и запуск команды в бэкграунде (фоновый процесс). Для этого служит символ & .
Если хотите запустить, к примеру, Wireshark в бэкграунде, необходимо написать wireshark & - по умолчанию Bash запускает каждую программу в текущем терминале. Поэтому это может очень пригодиться, если вам нужно выполнять какую-то программу и все ещё пользоваться тем же терминалом. А если нужно запустить Wireshark через какое-то время, то можно воспользоваться командой && - к примеру, sleep 360 && wireshark - это запустит wireshark через 6 минут. Сама команда sleep не делает ничего, это, грубо говоря, просто условный таймер.
🔨 bash_help8 732
🖥 Курс «Специалист центра мониторинга инцидентов информационной безопасности (SOC)»
Старт: 18 декабря
Длительность: 3,5 месяца
ℹ️ Курс охватывает ключевые процессы в Security Operation Center (SOC), включая Threat Intelligence, Threat Hunting, Vulnerability Management, моделирование угроз, реагирование на инциденты и основы администрирования СЗИ, используемых в SOC.
🎓 Кому будет полезен курс:
— Энтузиастам в области ИБ, с базовыми знаниями
— Системным администраторам, программистам, желающим стать специалистами по ИБ
— Начинающим сотрудникам SOC или ИБ-подразделений для более полного понимания процессов
Выдаём УПК/сертификат при успешной сдаче экзамена! Доступна рассрочка до 24 мес.
🎁 По промокоду CODEBY вы получите скидку 10%!
📌 Узнать подробнее о курсе
Реклама. ООО "АКАДЕМИЯ КОДЕБАЙ". ИНН 9706020333.
8 732
Как провести стресс-тестирование вашей системы Linux
Есть несколько полезных методов, которые вы можете использовать, и есть инструменты, которые вы можете использовать, чтобы упростить этот процесс. В этой статье мы рассмотрим несколько вариантов.
Создаем циклы своими руками
Данный первый метод предполагает запуск некоторых циклов в командной строке и наблюдение за тем, как они влияют на систему. Этот метод нагружает ЦП, значительно увеличивая нагрузку. Результаты можно легко увидеть с помощью команды uptime или аналогичных команд.
В приведенной ниже примере мы начинаем четыре бесконечных цикла. Вы можете увеличить количество циклов, добавляя цифры или используя выражение bash, например {1..6} вместо «1 2 3 4».
for i in 1 2 3 4; do while : ; do : ; done & done
В примере выше, команда, запускает четыре бесконечных цикла в фоновом режиме.
$ for i in 1 2 3 4; do while : ; do : ; done & done
[1] 205012
[2] 205013
[3] 205014
[4] 205015
В этом случае были запущены задания 1-4. Отображаются как номера заданий, так и идентификаторы процессов.
Чтобы увидеть влияние на средние значения нагрузки, используйте команду, подобную показанной ниже. В этом случае команда uptime запускается каждые 30 секунд:
$ while true; do uptime; sleep 30; done
Если вы собираетесь периодически запускать подобные тесты, вы можете поместить команду цикла в скрипт:
#!/bin/bash
while true
do
uptime
sleep 30
done
В выходных данных вы можете увидеть, как средние значения нагрузки увеличиваются, а затем снова начинают снижаться после завершения циклов.
Поскольку показанные нагрузки представляют собой средние значения за 1, 5 и 15 минут, потребуется некоторое время, чтобы значения вернулись к нормальным для системы значениям.
Чтобы остановить циклы, выполните команду kill, подобную приведенной ниже - при условии, что номера заданий равны 1-4, как было показано ранее в этой статье. Если вы не уверены, используйте команду jobs, чтобы проверить ID.
🖼️ Дочитать статью
🔨 bash_help8 732
Как запустить Bash скрипт в Linux
Прежде чем вы сможете запустить ваш скрипт, вам нужно, чтобы ваш скрипт был исполняемым. Чтобы сделать исполняемый скрипт в Linux, используйте команду
chmod и присвойте файлу права execute. Вы можете использовать двоичную или символическую запись, чтобы сделать ее исполняемой.
$ chmod u+x script
$ chmod 744 script
Если вы не являетесь владельцем файла, вам необходимо убедиться, что вы принадлежите к правильной группе или что права доступа предоставлены «другой» группе в вашей системе.
В некоторых дистрибутивах ваш файл будет выделен другим цветом, когда он исполняемый.
Теперь, когда ваш файл исполняемый, давайте посмотрим, как можно легко запустить скрипт Bash.
Запустить Bash скрипт из пути к скрипту
Чтобы запустить Bash скрипт в Linux, просто укажите полный путь к скрипту и укажите аргументы, которые могут потребоваться для запуска Bash скрипта.
$ /path/to/script <arg1> <arg2> ... <argn>
В качестве примера, скажем, у вас есть Bash-скрипт, расположенный в вашем домашнем каталоге.
Чтобы выполнить этот скрипт, вы можете указать полный путь к скрипту, который вы хотите запустить.
# Абсолютный путь
$ /home/user/script
# Абсолютный путь с аргументами
$ /home/user/script "john" "jack" "jim"
Кроме того, вы можете указать относительный путь к скрипту Bash, который вы хотите запустить.
# Относительный путь
$ ./script
# Относительный путь с аргументами
$ ./script "john" "jack" "jim"
Запустить Bash скрипт, используя bash
Чтобы запустить скрипт Bash в вашей системе, вы должны использовать команду bash и указать имя скрипта, который вы хотите выполнить, с необязательными аргументами.
$ bash <script>
Кроме того, вы можете использовать sh, если в вашем дистрибутиве установлена утилита sh.
В качестве примера, скажем, вы хотите запустить скрипт Bash с именем script. Чтобы выполнить его с помощью утилиты bash, вы должны выполнить следующую команду
$ bash script
This is the output from your script!
Выполнить скрипт Bash, используя sh, zsh, dash
В зависимости от вашего дистрибутива, в вашей системе могут быть установлены другие утилиты оболочки.
Bash - интерпретатор оболочки, установленный по умолчанию, но вы можете захотеть выполнить ваш скрипт с использованием других интерпретаторов. Чтобы проверить, установлен ли интерпретатор оболочки в вашей системе, используйте команду which и укажите нужный интерпретатор.
$ which sh
/usr/bin/sh
$ which dash
/usr/bin/dash
Когда вы определили интерпретатор оболочки, который хотите использовать, просто вызовите его, чтобы легко запустить скрипт.
Запуск скрипта Bash из любого места
В некоторых случаях вы можете запускать скрипты Bash, где бы вы ни находились в вашей системе.
Чтобы запустить скрипт Bash из любой точки вашей системы, вам нужно добавить свой скрипт в переменную среды PATH.
$ export PATH="<path_to_script>:$PATH"
Благодаря тому, что путь к скрипту добавлен в PATH, вы можете вызывать его там, где хотите в своей системе.
Кроме того, вы можете изменить переменную среды PATH в вашем файле .bashrc и использовать команду source для обновления вашей текущей среды Bash.
$ sudo nano ~/.bashrc
export PATH="<path_to_script>:$PATH"
Выйдите из файла и используйте команду source для файла bashrc для внесения изменений.
$ source ~/.bashrc
$ echo $PATH
/home/user/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Запуск Bash скриптов из графического интерфейса
Последний способ выполнения Bash скриптов - это использование графического интерфейса, в данном случае интерфейса GNOME.
Чтобы запустить ваши скрипты с использованием GNOME, вы должны установить в проводнике Ask what to do для исполняемых файлов.
🔨 bash_help
现已上线!2025 年 Telegram 研究 — 年度关键洞察 
