Как сделать снимок с помощью веб-камеры
Скрипт использует видеоплеер mpv, чтобы записать первые три кадра, снятые камерой, в JPEG-файлы с именами 0000000.jpg, 00000002.jpg, 00000003.jpg, затем переименовывает третий снимок в файл photo.jpg, а остальные удаляет. Три снимка необходимы для того, чтобы камера успела провести инициализацию, обычно первые два получаются просто черными.
🔨 bash_help
Скрипт использует видеоплеер mpv, чтобы записать первые три кадра, снятые камерой, в JPEG-файлы с именами 0000000.jpg, 00000002.jpg, 00000003.jpg, затем переименовывает третий снимок в файл photo.jpg, а остальные удаляет. Три снимка необходимы для того, чтобы камера успела провести инициализацию, обычно первые два получаются просто черными.
!#/bin/bashИногда изображение выходит перевернутым; чтобы это исправить, mpv следует запускать с флагом -vf flip:
mpv tv:// -frames 3 -vo jpeg
mv 00000003.jpg photo.jpg
rm -f 0000*.jpg
$ mpv tv:// -frames 3 -vf flip -vo jpeg
Please open Telegram to view this post
VIEW IN TELEGRAM
Скрипт Bash для мониторинга использования процессора и памяти на Linux
Скрипт может собирать информацию об использовании из файла /proc/stat, а затем сохранять ее в файле лога. Его также можно настроить на отправку предупреждения по электронной почте, когда использование процессора или памяти превышает определенный порог.
Кроме того, скрипт можно использовать для запроса у системы такой информации, как модель процессора, использование и средние значения нагрузки.
iostat: Эта команда сообщает статистику центрального процессора (CPU) и статистику ввода/вывода для устройств и разделов.
🔨 bash_help
Скрипт может собирать информацию об использовании из файла /proc/stat, а затем сохранять ее в файле лога. Его также можно настроить на отправку предупреждения по электронной почте, когда использование процессора или памяти превышает определенный порог.
Кроме того, скрипт можно использовать для запроса у системы такой информации, как модель процессора, использование и средние значения нагрузки.
#!/bin/bash
# This script monitors CPU and memory usage
while :
do
# Get the current usage of CPU and memory
cpuUsage=$(top -bn1 | awk '/Cpu/ { print $2}')
memUsage=$(free -m | awk '/Mem/{print $3}')
# Print the usage
echo "CPU Usage: $cpuUsage%"
echo "Memory Usage: $memUsage MB"
# Sleep for 1 second
sleep 1
done
Ниже перечислены другие инструменты/команды, которые можно использовать для мониторинга использования ЦП и памяти в системе Linux:free
: Эта команда показывает общий объем свободной и используемой физической памяти и памяти подкачки в системе, а также буферов и кэшей, используемых ядром.top
: Эта команда обеспечивает динамическое представление работающей системы в реальном времени. Она может отображать сводную информацию о системе, а также список задач, которыми в данный момент управляет ядро Linux.htop
: Это интерактивный просмотрщик процессов для Linux. Это приложение в текстовом режиме, которое отображает информацию о процессах в удобном для пользователя виде.vmsta
t: Эта команда выдает информацию о процессах, памяти, подкачке, блочном вводе-выводе, ловушках и активности процессора.ps
: Эта команда используется для отображения информации о текущих запущенных процессах.iostat: Эта команда сообщает статистику центрального процессора (CPU) и статистику ввода/вывода для устройств и разделов.
ps
: Эта команда используется для отображения информации о текущих запущенных процессах.iostat
: Эта команда сообщает статистику центрального процессора (CPU) и статистику ввода/вывода для устройств и разделов.Please open Telegram to view this post
VIEW IN TELEGRAM
Полезные сочетания клавиш в оболочке bash для навигации по командной строке
Давайте разберем полезные хоткеи, которые смогут оптимизировать вашу работу в терминале Linux/Unix.
^a, ^e – Переместить курсор.
^-a переместит курсор в начало строки.
^-e переместит курсор в конец строки.
^d – конец файла или EOF.
Сообщает консольному приложению, что вы закончили вводить текст.
^i – Очистить буфер терминала.
Это означает, что в терминале не будет истории для прокрутки назад.
Однако это не работает в терминале MATE.
^z, – приостановка и возобновление вывода.
Это означает, что программа должна прекратить вывод на ваше терминальное устройство.
Если вы наберете fg, программа вернется на передний план.
^l – Очистить экран.
Команда очистит экран и оставит чистый терминал для других команд.
^c – Остановить команду.
Это сочетание клавиш остановит выполнение текущей команды в терминале.
Перемещение по строке терминала
Alt-B. Отправляет курсор на одно слово назад.
Alt-F. Посылает курсор вперед на одно слово.
По символам
^-b. Перемещает курсор на один символ назад.
^-f. Перемещает курсор на один символ вперед.
^-_. Отменяет последнее нажатие клавиши.
Удалить/Вставить
^-w. Вырезать слово перед курсором и переместить его в буфер обмена.
^+k: Вырезать часть строки после курсора, добавив ее в буфер обмена.
^+u: Вырезать часть строки перед курсором, добавив ее в буфер обмена.
^+y: Вставить последнее, что вы вырезали из буфера обмена. Буква “y” здесь означает “вырезать”.
🔨 bash_help
Давайте разберем полезные хоткеи, которые смогут оптимизировать вашу работу в терминале Linux/Unix.
^a, ^e – Переместить курсор.
^-a переместит курсор в начало строки.
^-e переместит курсор в конец строки.
^d – конец файла или EOF.
Сообщает консольному приложению, что вы закончили вводить текст.
^i – Очистить буфер терминала.
Это означает, что в терминале не будет истории для прокрутки назад.
Однако это не работает в терминале MATE.
^z, – приостановка и возобновление вывода.
Это означает, что программа должна прекратить вывод на ваше терминальное устройство.
Если вы наберете fg, программа вернется на передний план.
^l – Очистить экран.
Команда очистит экран и оставит чистый терминал для других команд.
^c – Остановить команду.
Это сочетание клавиш остановит выполнение текущей команды в терминале.
Перемещение по строке терминала
Alt-B. Отправляет курсор на одно слово назад.
Alt-F. Посылает курсор вперед на одно слово.
По символам
^-b. Перемещает курсор на один символ назад.
^-f. Перемещает курсор на один символ вперед.
^-_. Отменяет последнее нажатие клавиши.
Удалить/Вставить
^-w. Вырезать слово перед курсором и переместить его в буфер обмена.
^+k: Вырезать часть строки после курсора, добавив ее в буфер обмена.
^+u: Вырезать часть строки перед курсором, добавив ее в буфер обмена.
^+y: Вставить последнее, что вы вырезали из буфера обмена. Буква “y” здесь означает “вырезать”.
Please open Telegram to view this post
VIEW IN TELEGRAM
Как запустить небольшой код Python в Bash
1. Как выполнить код Python в Bash
В командной строке Bash для выполнения кода используйте конструкцию вида:
Для выполнения программы Python в скрипте Bash используйте команду вида:
Если вам нужно запустить скрипт Python, а затем вывод программы присвоить переменной Bash, то используйте конструкцию вида:
Если код Python невозможно использовать в одной строке и вы не хотите использовать для вызова внешний скрипт, тогда вам подойдёт следующая конструкция:
Ещё один вариант этой конструкции:
🔨 bash_help
1. Как выполнить код Python в Bash
В командной строке Bash для выполнения кода используйте конструкцию вида:
python -c "КОД"
Ещё один вариант, который может пригодиться в более экзотических обстоятельствах:bash -c 'python -c "print (\"КОД\")"'
2. Как в скрипте Bash запустить программу на PythonДля выполнения программы Python в скрипте Bash используйте команду вида:
python СКРИПТ.py АРГУМЕНТ1 АРГУМЕНТ2 АРГУМЕНТ3Пример запуска скрипта extractor.py с передачей ему двух аргументов: значение переменной $line и 8080:
python extractor.py $line 8080
3. Как в скрипте Bash запустить программу на Python и присвоить её вывод переменнойЕсли вам нужно запустить скрипт Python, а затем вывод программы присвоить переменной Bash, то используйте конструкцию вида:
ПЕРЕМЕННАЯ=`python СКРИПТ.py АРГУМЕНТ1 АРГУМЕНТ2 АРГУМЕНТ3`Пример:
response=`python extractor.py $line 8080 2>/dev/null | sed -E "s/\/\/.+:/\/\/$line:/"`
4. Как в скрипт Bash встроить код PythonЕсли код Python невозможно использовать в одной строке и вы не хотите использовать для вызова внешний скрипт, тогда вам подойдёт следующая конструкция:
#!/bin/bashТам где КОД вставьте код Python.
script=`cat <<_EOF_
КОД
_EOF_`
echo "$script" | python
Ещё один вариант этой конструкции:
python << ENDИ ещё один вариант, в котором вывод присваивается в качестве значения переменной ABC:
... КОД ...
END
ABC=$(python << END ... END)
Please open Telegram to view this post
VIEW IN TELEGRAM
Атоматизируем ssh подключение к группе хостов используя bash скрипт и expect
Expect - программная оболочка дающая возможность запрограммировать диалог с утилитами, которые в процессе использования запрашивают ввод информации у пользователя. В нашем случае такой утилитой будет выступать ssh клиент.
Краткая постановка задачи:
Есть три маршрутизатора cisco c ip-адресами 192.168.10.10, .11 и .12. Нужно подключить к ним по ssh и выполнить команду "show ver | include IOS".
Первым делом на надо установить expect.
Для ОС RedHat, CentOS, Fedora и т.п.
🔨 bash_help
Expect - программная оболочка дающая возможность запрограммировать диалог с утилитами, которые в процессе использования запрашивают ввод информации у пользователя. В нашем случае такой утилитой будет выступать ssh клиент.
Краткая постановка задачи:
Есть три маршрутизатора cisco c ip-адресами 192.168.10.10, .11 и .12. Нужно подключить к ним по ssh и выполнить команду "show ver | include IOS".
Первым делом на надо установить expect.
Для ОС RedHat, CentOS, Fedora и т.п.
sudo yum install expectДля ОС Debian, Ubuntu, Mint и т.п.
sudo apt-get install expectНу а теперь текст самого скрипта:
#!/bin/bash📖 Ссылка на статью
#Включение отладки bash:
set -x
#Учетные данные:
USER="admin"
PASSWD="123456"
#Файл логов:
LOG="ssh_conn.log"
#Список хостов:
HOSTS="
192.168.10.10
192.168.10.11
192.168.10.12
"
#Цикл переборки хостов:
for H in $HOSTS
do
#Вывод даты старта скрипта:
echo START SCRIPT: >> $LOG
date +%x-%R >> $LOG
#Команды для expect:
COMM="
#Включение и вывод отладки expect:
#log_file debug.log
#exp_internal 1
#Время ожидание expect
set timeout 1
#Соедиение ssh:
spawn ssh $USER@$H
expect \"*(yes/no)?*\" {send \"yes\r\"}
expect \"Password:\"
send \"$PASSWD\r\"
#Выполняемые команды:
expect \"*>\"
send \"show ver | include IOS\r\"
expect \"*>\"
send \"exit\r\"
#Завершение выполнения expect:
expect eof
"
#Запуск expect с набором команд:
expect -c "$COMM" >> $LOG
#Вывод разделителя:
echo ========================================================================= >> $LOG
done
Please open Telegram to view this post
VIEW IN TELEGRAM
Редактирование последней команды в истории
Вы можете использовать оператор !!, чтобы отредактировать ошибочно написанную команду в истории bash и повторно выполнить ее правильно.
Это позволяет исправить ошибку, допущенную в предыдущей команде, как показано ниже.
🔨 bash_help
Вы можете использовать оператор !!, чтобы отредактировать ошибочно написанную команду в истории bash и повторно выполнить ее правильно.
Это позволяет исправить ошибку, допущенную в предыдущей команде, как показано ниже.
ehco helloКак мы видим, это легко исправить.
-bash: ehco: command not found
!!:gs/ehco/echo/Это повторное выполнение команды, и она будет написана правильно
echo hello
hello
Please open Telegram to view this post
VIEW IN TELEGRAM
Отображение палитры цветов ANSI в оболочке bash
Очень полезно, чтобы увидеть все доступные цвета bash.
Это полезный способ получить определенный цвет, который вам нужен.
🔨 bash_help
Очень полезно, чтобы увидеть все доступные цвета bash.
e="\033["Здесь выводятся все коды цветов для создания красивой цветовой подсказки.
for f in 0 7 `seq 6`; do
no="" bo=""
for b in n 7 0 `seq 6`; do
co="3$f"; p=" "
[ $b = n ] || { co="$co;4$b";p=""; }
no="${no}${e}${co}m ${p}${co} ${e}0m"
bo="${bo}${e}1;${co}m ${p}1;${co} ${e}0m"
done
echo -e "$no\n$bo"
done
Это полезный способ получить определенный цвет, который вам нужен.
Please open Telegram to view this post
VIEW IN TELEGRAM
Bash скриптинг – парсинг аргументов в скриптах Bash с помощью getopts
Передача аргументов в программу – одна из распространенных операций в любом языке, который вы используете.
В этой статье мы рассмотрим, как разбирать аргументы в скриптах bash с помощью встроенной функции getopts.
Каждая команда, которую мы выполняем в терминале, имеет аргумент, связанный с ней.
Например, можно взять самую простую команду в Linux под названием
Она принимает такие аргументы/флаги, как
Аналогично этому, когда вы создаете скрипт оболочки, в зависимости от случая использования вам может потребоваться обработать скрипт на основе переданного аргумента.
В bash есть два способа анализа аргументов, переданных скрипту.
Один из них – написать логику для разбора аргументов вручную, используя специальные переменные
Другой способ заключается в использовании getopts.
Getopts – это POSIX-совместимая встроенная функция bash, которая принимает короткие аргументы, такие как
Вы не можете передавать длинные аргументы, такие как
Если вы хотите разобрать длинные опции, есть другая утилита
📖 Ссылка на статью
🔨 bash_help
Передача аргументов в программу – одна из распространенных операций в любом языке, который вы используете.
В этой статье мы рассмотрим, как разбирать аргументы в скриптах bash с помощью встроенной функции getopts.
Каждая команда, которую мы выполняем в терминале, имеет аргумент, связанный с ней.
Например, можно взять самую простую команду в Linux под названием
df
, которая отображает использование дискового пространства файловой системы.Она принимает такие аргументы/флаги, как
-h
, -i
, –version
и т.д.Аналогично этому, когда вы создаете скрипт оболочки, в зависимости от случая использования вам может потребоваться обработать скрипт на основе переданного аргумента.
В bash есть два способа анализа аргументов, переданных скрипту.
Один из них – написать логику для разбора аргументов вручную, используя специальные переменные
$@
, $1
, $2
… $N
.Другой способ заключается в использовании getopts.
Getopts – это POSIX-совместимая встроенная функция bash, которая принимает короткие аргументы, такие как
-h
, -v
, -b
и т.д.Вы не можете передавать длинные аргументы, такие как
–help
, –version
.Если вы хотите разобрать длинные опции, есть другая утилита
getopt
, которая является внешней программой, а не встроенной в bash.📖 Ссылка на статью
Please open Telegram to view this post
VIEW IN TELEGRAM
Как запустить bash скрипт из windows
Запустить bash скрипт из windows также просто как если бы вы использовали linux, необходимо всего лишь установить cygwin.
Cygwin — бесплатный эмулятор командной строки Unix для Windows, используется для переноса программного обеспечения из UNIX в Windows, запуска скрипов bash, sh и т.п.
Чтобы установить cygwin заходим на сайт программы - cygwin.com и закачиваем утилиту для установки.
Во время установки переходим к выбору устанавливаемых пакетов. Этот этап является наиболее важным, от него зависит работа запускаемых вами скриптов.
Тщательно изучите список предлагаемых пакетов и выберите необходимые вам. Установите из категории Net пакеты inetutils, openssh, openssl, ping, iperf, tftp, proftpd, а из раздела Utils пакеты utils-linux, mc, bzip2, ipcalc.
Для того, чтобы запустить bash скрипт, необходимо дать скрипту нужные права, используя команду:
Вот и все. Теперь можно запускать bash скрипты из windows.
🔨 bash_help
Запустить bash скрипт из windows также просто как если бы вы использовали linux, необходимо всего лишь установить cygwin.
Cygwin — бесплатный эмулятор командной строки Unix для Windows, используется для переноса программного обеспечения из UNIX в Windows, запуска скрипов bash, sh и т.п.
Чтобы установить cygwin заходим на сайт программы - cygwin.com и закачиваем утилиту для установки.
Во время установки переходим к выбору устанавливаемых пакетов. Этот этап является наиболее важным, от него зависит работа запускаемых вами скриптов.
Тщательно изучите список предлагаемых пакетов и выберите необходимые вам. Установите из категории Net пакеты inetutils, openssh, openssl, ping, iperf, tftp, proftpd, а из раздела Utils пакеты utils-linux, mc, bzip2, ipcalc.
Для того, чтобы запустить bash скрипт, необходимо дать скрипту нужные права, используя команду:
chmod 777 namescriptзатем запустить:
./namescriptnamescript - название вашего скрипта вместе с расширением.
Вот и все. Теперь можно запускать bash скрипты из windows.
Please open Telegram to view this post
VIEW IN TELEGRAM
Bash скрипт для автоматического telnet соединения и ввода команд
Надоело выполнять рутинные операции с большим парком железа? Давайте разберем, как автоматизировать процесс подключения по протоколу telnet и ввода команд для удаленной настройки железа, используя скриптовый язык программирования bash.
Первым делом, давайте сформулируем задачу. Допустим, у нас есть три маршрутизатора cisco c ip адресами 192.168.10.10, 192.168.10.11 и 192.168.10.12 и компьютер с Linux. Нам требуется подключиться к каждому маршрутизатору через протокол telnet и узнать версию IOS, используя команду "show ver | include IOS". Можно, конечно, пройтись по этим маршрутизаторам, набирая команды вручную, но когда количество железок вырастет, например, до 100, согласитесь, проделать данную процедуру уже будет довольно утомительно. Поэтому сделаем скрипт, который соберет вывод команд со всех маршрутизаторов в файл.
🔨 bash_help
Надоело выполнять рутинные операции с большим парком железа? Давайте разберем, как автоматизировать процесс подключения по протоколу telnet и ввода команд для удаленной настройки железа, используя скриптовый язык программирования bash.
Первым делом, давайте сформулируем задачу. Допустим, у нас есть три маршрутизатора cisco c ip адресами 192.168.10.10, 192.168.10.11 и 192.168.10.12 и компьютер с Linux. Нам требуется подключиться к каждому маршрутизатору через протокол telnet и узнать версию IOS, используя команду "show ver | include IOS". Можно, конечно, пройтись по этим маршрутизаторам, набирая команды вручную, но когда количество железок вырастет, например, до 100, согласитесь, проделать данную процедуру уже будет довольно утомительно. Поэтому сделаем скрипт, который соберет вывод команд со всех маршрутизаторов в файл.
#!/bin/bash
set -x
#Входные данные:
USER="admin"
PASSWD="123456"
LOG="telnnet_conn.log"
HOSTS="
192.168.10.10
192.168.10.12
192.168.10.11
"
for H in $HOSTS
do
echo START SCRIPT: >> $LOG
date +%x-%R >> $LOG
(
sleep 1;
echo -en "$USER\r";
sleep 1;
echo -en "$PASSWD\r";
sleep 1;
echo -en "show ver | include IOS\r";
sleep 1;
echo -en "exit\r";
sleep 1;
) | telnet $H >> $LOG
echo =================================== >> $LOG
done
📖 Описание telnet скриптаPlease open Telegram to view this post
VIEW IN TELEGRAM
Простой авто-кликер в Linux c помощью небольшого BASH скрипта
Авто-кликер может понадобиться в разных случаях: если нужно автоматизировать нажатие какой-нибудь кнопки, или фармить печеньки в Cookie Clicker. Что-бы без лишней траты времени это сделать, нам понадобится программа xdotool.
Затем открываем его и вставляем туда такой текст:
Кликать будет левая кнопка мыши. Чтобы эмулировать нажатия правой кнопки мыши, нужно в строке "xdotool click 1" заменить единицу на 3.
- Сохраняем файл.
- Затем нужно сделать наш файл исполняемым. Для этого нужно вписать в терминал команду:
chmod u+x название-файла
Авто-кликер готов! Чтобы его запустить, нужно ввести в терминале команду:
🔨 bash_help
Авто-кликер может понадобиться в разных случаях: если нужно автоматизировать нажатие какой-нибудь кнопки, или фармить печеньки в Cookie Clicker. Что-бы без лишней траты времени это сделать, нам понадобится программа xdotool.
sudo apt-get install xdotoolСоздаём текстовый файл с любым названием, в домашней директории(так будет удобнее в будущем запускать сам авто-кликер).
Затем открываем его и вставляем туда такой текст:
#!/bin/bash
sleep 5
for i in {1..2048}
do
sleep 1.5
xdotool click 1
echo "Cовершено $i нажатий."
done
Где "2048" в третьей строке - это количество желаемых нажатий, а "1.5" в 5 строке - это интервал в секундах между нажатиями. sleep 5 (2 строка) - это отсчёт в секундах до начала цикла. Ну и ещё прикручено echo для статистики.Кликать будет левая кнопка мыши. Чтобы эмулировать нажатия правой кнопки мыши, нужно в строке "xdotool click 1" заменить единицу на 3.
- Сохраняем файл.
- Затем нужно сделать наш файл исполняемым. Для этого нужно вписать в терминал команду:
chmod u+x название-файла
Авто-кликер готов! Чтобы его запустить, нужно ввести в терминале команду:
./название-файла
Чтобы остановить авто-кликер раньше, чем вписано в файле, нужно просто открыть окно терминала, через которое работает авто-кликер, и нажать сочетание клавиш Сtrl+C.Please open Telegram to view this post
VIEW IN TELEGRAM
Настройка приглашения командной строки в Bash
Приглашение ко вводу команд в bash — это строка, которая отображается слева от каждой команды, которую вы вводите в терминале. Обычно приглашение имеет вид
Формат строки приглашения задается в переменной окружения PS1. Чтобы настроить приглашение, необходимо изменить значение переменной PS1.
Например, переменная PS1 может иметь значение:
Для задания различных значений переменной PS1 существуют специальные символы. Комбинируя различные специальные символы можно составить свою строку приглашения.
🖼️ Дочитать статью
🔨 bash_help
Приглашение ко вводу команд в bash — это строка, которая отображается слева от каждой команды, которую вы вводите в терминале. Обычно приглашение имеет вид
пользователь@hostname:директория$Приглашение можно настраивать. Можно добавлять информацию или, например, изменить цвет приглашения.
Формат строки приглашения задается в переменной окружения PS1. Чтобы настроить приглашение, необходимо изменить значение переменной PS1.
Например, переменная PS1 может иметь значение:
PS1="\u@\h:\w$"
Можно установить переменную PS1 только для текущей сессии в терминале. Это удобно, пока вы подбираете, как будет выглядеть строка приглашения. Чтобы это сделать нужно выполнить команду export для переменной PS1, например:export PS1="\u@\w:"После выполнения команды строка приглашения в терминале сразу изменится.
Для задания различных значений переменной PS1 существуют специальные символы. Комбинируя различные специальные символы можно составить свою строку приглашения.
Please open Telegram to view this post
VIEW IN TELEGRAM
Как проверить контрольную сумму SHA с помощью bash скрипта
Во многих случаях контрольная сумма SHA предоставляется как есть, файл контрольной суммы содержит только контрольную сумму. Это создает проблему для стандартных служб, поскольку они ожидают имя файла, связанное с заданной контрольной суммой, используя формат GNU или BSD.
Решение заключается в создании простого скрипта оболочки, который будет выполнять дополнительные шаги для проверки контрольной суммы SHA.
🔨 bash_help
Во многих случаях контрольная сумма SHA предоставляется как есть, файл контрольной суммы содержит только контрольную сумму. Это создает проблему для стандартных служб, поскольку они ожидают имя файла, связанное с заданной контрольной суммой, используя формат GNU или BSD.
Решение заключается в создании простого скрипта оболочки, который будет выполнять дополнительные шаги для проверки контрольной суммы SHA.
#!/bin/bashОн автоматически проверит контрольную сумму SHA (в стиле GNU или BSD). Вы будете проинформированы в случае возникновения проблем.
# verify file checksum from a file
# checksum algorithms
algorithms=( 1 224 256 384 512 512224 512256 )
# file to check
file="$1"
# execute when there is one parameter
if [ "$#" -eq "1" ]; then
# check if file exist
if [ -f "${file}" ]; then
# find checksum file
for algorithm in "${algorithms[@]}"; do
if [ -f "${file}.sha${algorithm}" ]; then
echo "Found SHA${algorithm} checksum"
words="$(wc -w < ${file}.sha${algorithm})"
# verify checksum and pass the exit code
if [ "$words" == "1" ]; then
shasum --algorithm $algorithm --check <(echo $(cat ${file}.sha${algorithm})\ \ $file)
exit $?
elif [ "$words" == "2" ] || [ "$words" == "4" ]; then
shasum --algorithm $algorithm --check ${file}.sha${algorithm}
exit $?
fi
fi
done
fi
fi
Please open Telegram to view this post
VIEW IN TELEGRAM
Сканирование подсети
В этом примере bash скрипт просканирует сеть на предмет хостов, подключенных по IP-адресам 10.1.1.1 – 255.
Скрипт выведет сообщение Хост с с IP: IP-адрес поднят, если команда ping была успешной.
Не стесняйтесь изменять скрипт для сканирования диапазона ваших хостов.
🔨 bash_help
В этом примере bash скрипт просканирует сеть на предмет хостов, подключенных по IP-адресам 10.1.1.1 – 255.
Скрипт выведет сообщение Хост с с IP: IP-адрес поднят, если команда ping была успешной.
Не стесняйтесь изменять скрипт для сканирования диапазона ваших хостов.
#!/bin/bashВыполнение:
is_alive_ping()
{
ping -c 1 $1 > /dev/null
[ $? -eq 0 ] && echo Хост с IP: $i поднят.
}
for i in 10.1.1.{1..255}
do
is_alive_ping $i & disown
done
./bash_ping_scan.shВывод:
Хост with IP: 10.1.1.1 поднят.
Хост with IP: 10.1.1.4 поднят.
Хост with IP: 10.1.1.9 поднят.
Please open Telegram to view this post
VIEW IN TELEGRAM
Уведомление по почте, когда сервер не работает
Скрипт отправит электронное письмо на указанный адрес электронной почты, когда ping не может достичь места назначения.
Системный администратор может регулярно выполнять этот скрипт с использованием планировщика cron.
Сначала скрипт использует команду ping для проверки связи с хостом или IP-адресом, указанным в качестве аргумента.
В случае, если это место назначения недоступно, будет использована команда mail для уведомления системного администратора об этом событии.
🔨 bash_help
Скрипт отправит электронное письмо на указанный адрес электронной почты, когда ping не может достичь места назначения.
Системный администратор может регулярно выполнять этот скрипт с использованием планировщика cron.
Сначала скрипт использует команду ping для проверки связи с хостом или IP-адресом, указанным в качестве аргумента.
В случае, если это место назначения недоступно, будет использована команда mail для уведомления системного администратора об этом событии.
#!/bin/bashВыполнение:
for i in $@
do
ping -c 1 $i &> /dev/null
if [ $? -ne 0 ]; then
echo "`date`: ping не прошел, $i хост лежит !" | mail -s "$i хост лежит!" admin@itsecforu.ru
fi
done
./check_hosts.sh google.com yahoo.com 192.168.1.2 mylinuxbox N2100
Please open Telegram to view this post
VIEW IN TELEGRAM
Создаём логи мониторинга
Это модифицированная версия предыдущего примера. Если в системе не настроена почта, скрипт создаст файл логов.
Ядро скрипта заключено в бесконечный цикл while, который настроен на выполнение проверки ping каждый час (3600 секунд).
Измените скрипт в соответствии с вашими потребностями.
Удалите бесконечный цикл while, если вы собираетесь использовать этот скрипт с планировщиком cron.
🔨 bash_help
Это модифицированная версия предыдущего примера. Если в системе не настроена почта, скрипт создаст файл логов.
Ядро скрипта заключено в бесконечный цикл while, который настроен на выполнение проверки ping каждый час (3600 секунд).
Измените скрипт в соответствии с вашими потребностями.
Удалите бесконечный цикл while, если вы собираетесь использовать этот скрипт с планировщиком cron.
#!/bin/bash
LOG=/tmp/mylog.log
SECONDS=3600
EMAIL=admin@itsecforu.ru
for i in $@; do
echo "$i-UP!" > $LOG.$i
done
while true; do
for i in $@; do
ping -c 1 $i > /dev/null
if [ $? -ne 0 ]; then
STATUS=$(cat $LOG.$i)
if [ $STATUS != "$i-DOWN!" ]; then
echo "`date`: ping неудачен, $i хост лежит!" |
mail -s "$i хост лежит!" $EMAIL
fi
echo "$i-DOWN!" > $LOG.$i
else
STATUS=$(cat $LOG.$i)
if [ $STATUS != "$i-UP!" ]; then
echo "`date`: пинг прошел, $i Хост подня!" |
mail -s "$i Хост поднят !" $EMAIL
fi
echo "$i-UP!" > $LOG.$i
fi
done
sleep $SECONDS
done
Выполнение:./check-server-status.sh google.com yahoo.com 192.168.1.2 mylinuxbox N2100
Please open Telegram to view this post
VIEW IN TELEGRAM
Автоматизация начальной настройки веб-сервера
Наверняка, у многих есть собственные веб серверы. Настройка нового сервера с нуля — достаточно нудное и времяубивающее трудоемкое занятие не только для новичка, но и для бывалых.
А если к тому же по долгу службы вам приходится настраивать по несколько серверов в неделю/месяц, то невольно начинаешь задумываться об автоматизации этого процесса. Хочу поделиться bash скриптом, который я использую для начальной настройки RedHat / CentOS серверов.
Скрипт рассчитан на настройку RedHat Enterprise Linux (CentOS) версий 5 и 6, но может быть легко адаптирован для других систем.
Итак, ввиду большого количества комментариев в коде, приведу только краткое описание.
**Подключение репозиториев
**Устанавка минимального набора утилит, необходимых для нормальной работы системы, а также зависимостей для новых программ
**Настройка SSHD
**Установка NTPD, выбор временной зоны, синхронизация даты
**Монтирование
**Установка и обновление CPANminus как замены CPAN
**Отключение ненужных сервисов из автозагрузки
Большинство операций скрипт выполнит самостоятельно, но некоторые действия со стороны пользователя все же необходимы. Например, ввод данных для создания SSL сертификата и подтверждение установки Virtualmin.
🖼️ Ссылка на скрипт
🔨 bash_help
Наверняка, у многих есть собственные веб серверы. Настройка нового сервера с нуля — достаточно нудное и времяубивающее трудоемкое занятие не только для новичка, но и для бывалых.
А если к тому же по долгу службы вам приходится настраивать по несколько серверов в неделю/месяц, то невольно начинаешь задумываться об автоматизации этого процесса. Хочу поделиться bash скриптом, который я использую для начальной настройки RedHat / CentOS серверов.
Скрипт рассчитан на настройку RedHat Enterprise Linux (CentOS) версий 5 и 6, но может быть легко адаптирован для других систем.
Итак, ввиду большого количества комментариев в коде, приведу только краткое описание.
**Подключение репозиториев
epel
, ius
, nginx
. Обновление пакетов**Устанавка минимального набора утилит, необходимых для нормальной работы системы, а также зависимостей для новых программ
**Настройка SSHD
**Установка NTPD, выбор временной зоны, синхронизация даты
**Монтирование
/tmp
и /dev/shm
c атрибутами noexec
и nosuid
**Установка и настройка Virtualmin, CSF Firewall, MySQL 5.5, PHP 5.4, Nginx, Postfix, SaslAuth, phpMyAdmin**Установка и обновление CPANminus как замены CPAN
**Отключение ненужных сервисов из автозагрузки
Большинство операций скрипт выполнит самостоятельно, но некоторые действия со стороны пользователя все же необходимы. Например, ввод данных для создания SSL сертификата и подтверждение установки Virtualmin.
Please open Telegram to view this post
VIEW IN TELEGRAM
Использование двойных кавычек для ссылки на переменные
Кавычки, ограничивающие строки, нужны для предотвращения интерпретации специальных символов, которые могут находиться в строке или в названиях переменных (за исключением некоторых специальных знаков). Использование двойных кавычек при обращении к переменным предотвращает разбиение строк при наличии в них пробелов на слова, а также — другие возможные сбои.
Проделайте пример ниже:
🔨 bash_help
Кавычки, ограничивающие строки, нужны для предотвращения интерпретации специальных символов, которые могут находиться в строке или в названиях переменных (за исключением некоторых специальных знаков). Использование двойных кавычек при обращении к переменным предотвращает разбиение строк при наличии в них пробелов на слова, а также — другие возможные сбои.
Проделайте пример ниже:
#!/bin/bash
#let script exit if a command fails
set -o errexit
#let script exit if an unsed variable is used
set -o nounset
words="I love bash"
echo "Words without double quotes"
for word in $words; do
echo "$word"
done
echo
echo "Words with double quotes"
for word in "$words"; do
echo "$word"
done
exit 0
Сохраните и закройте файл, затем — запустите его при помощи следующей команды:$ ./<your-file-name>.sh
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое Bashfuscator?
Bashfuscator – это модульный и расширяемый фреймворк для обфускации Bash, написанный на языке Python 3.
Он предоставляет множество различных способов сделать однострочные фразы или скрипты Bash гораздо более сложными для понимания.
Это достигается за счет генерации запутанного, рандомизированного кода Bash, который во время выполнения оценивается по исходному вводу и выполняется.
Bashfuscator позволяет легко генерировать сильно обфусцированные команды и скрипты Bash как из командной строки, так и в виде библиотеки Python.
Для работы Bashfuscator требуется Python 3.6+.
🖼️ Как установить
🔨 bash_help
Bashfuscator – это модульный и расширяемый фреймворк для обфускации Bash, написанный на языке Python 3.
Он предоставляет множество различных способов сделать однострочные фразы или скрипты Bash гораздо более сложными для понимания.
Это достигается за счет генерации запутанного, рандомизированного кода Bash, который во время выполнения оценивается по исходному вводу и выполняется.
Bashfuscator позволяет легко генерировать сильно обфусцированные команды и скрипты Bash как из командной строки, так и в виде библиотеки Python.
Для работы Bashfuscator требуется Python 3.6+.
Please open Telegram to view this post
VIEW IN TELEGRAM
Горячие клавиши Bash
Работа с Bash была бы не такой удобной без горячих клавиш, которые позволяют упростить множество действий. Рассмотрим основные сочетания, некоторые из них вы и так используете каждый день:
Tab - автодополнение, наберите начало команды или пути и нажмите Tab, если такая команда только одна оболочка ее дополнит. Если доступно несколько вариантов, нажмите два раза Tab чтобы их увидеть;
Стрелка вверх - предыдущая команда в истории;
Стрелка вниз - следующая команда в истории;
Ctrl+R - поиск по истории. Просто нажмите эту кнопку и начните вводить нужную команду;
Ctrl+G - выйти из режима поиска;
Alt+. - предыдущее слово последней команды;
Ctrl+L - очистить вывод терминала;
Ctrl+A - перейти в начало строки;
Ctrl+E - в конец строки;
Ctrl+K - удалить символы начиная от курсора и к концу команды;
Ctrl+U - удалить символы от курсора до начала команды;
Ctrl+W - удалить все символы этого слова слева;
Ctrl+Y - удалить все символы этого слова справа;
Ctrl+S - остановить вывод на экран;
Ctrl+Q - возобновить вывод на экран.
Это все основные сочетания клавиш, которые вам понадобятся чтобы пользоваться bash. Конечно, существуют и другие, но эти основные.
🔨 bash_help
Работа с Bash была бы не такой удобной без горячих клавиш, которые позволяют упростить множество действий. Рассмотрим основные сочетания, некоторые из них вы и так используете каждый день:
Tab - автодополнение, наберите начало команды или пути и нажмите Tab, если такая команда только одна оболочка ее дополнит. Если доступно несколько вариантов, нажмите два раза Tab чтобы их увидеть;
Стрелка вверх - предыдущая команда в истории;
Стрелка вниз - следующая команда в истории;
Ctrl+R - поиск по истории. Просто нажмите эту кнопку и начните вводить нужную команду;
Ctrl+G - выйти из режима поиска;
Alt+. - предыдущее слово последней команды;
Ctrl+L - очистить вывод терминала;
Ctrl+A - перейти в начало строки;
Ctrl+E - в конец строки;
Ctrl+K - удалить символы начиная от курсора и к концу команды;
Ctrl+U - удалить символы от курсора до начала команды;
Ctrl+W - удалить все символы этого слова слева;
Ctrl+Y - удалить все символы этого слова справа;
Ctrl+S - остановить вывод на экран;
Ctrl+Q - возобновить вывод на экран.
Это все основные сочетания клавиш, которые вам понадобятся чтобы пользоваться bash. Конечно, существуют и другие, но эти основные.
Please open Telegram to view this post
VIEW IN TELEGRAM
Подготовка эффективной среды для написания bash сценариев
Если вам приходится писать bash скрипты или вы только планируете этим заняться, данная статья написана для вас.
Bash, он же возрождённый shell, является по-прежнему одним из самых популярных командных процессоров и интерпретаторов сценариев. Как бы его ненавидели и не пытались заменить, всё равно он присутствует вокруг нас и никуда не собирается исчезать.
Начнем с выбора среды разработки, именно она позволяет объединять различные аспекты написания программы, повышая продуктивность за счет объединения общих действий по написанию программного обеспечения в одном приложении.
Консольные текстовые редакторы. Vim, Emacs и Nano - классическая троица, сейчас уже редко кто использует на рабочих станциях как основной инструмент, но vi и nano незаменимы для быстрого редактирования файлов в удаленных ssh сессиях. Если вы еще не работали с ним, рекомендую освоить такие вещи как поиск, замена и форматирование, хотя бы в nano.
Графические текстовые редакторы. Mousepad, Gedit, Notepad++ и т.п. Легковесные редакторы, с подсветкой синтаксиса, автозаменой и прочим, что уже есть в консольных редакторах, но они всё еще не являются полноценной интегрированной средой разработки.
IDE. Geany, Atom, IntelliJ IDEA, Sublime Text и Visual Studio Code - это уже полноценные и расширяемые среды разработки. Долгие годы я пользовался Geany и пробовал все перечисленные варианты, но только с появлением VSCode мне удалось сменить основную IDE для большинства задач.
Далее в статье про утилиты и расширения, настройку окружения и многое другое.
🖼️ Дочитать статью
🔨 bash_help
Если вам приходится писать bash скрипты или вы только планируете этим заняться, данная статья написана для вас.
Bash, он же возрождённый shell, является по-прежнему одним из самых популярных командных процессоров и интерпретаторов сценариев. Как бы его ненавидели и не пытались заменить, всё равно он присутствует вокруг нас и никуда не собирается исчезать.
Начнем с выбора среды разработки, именно она позволяет объединять различные аспекты написания программы, повышая продуктивность за счет объединения общих действий по написанию программного обеспечения в одном приложении.
Консольные текстовые редакторы. Vim, Emacs и Nano - классическая троица, сейчас уже редко кто использует на рабочих станциях как основной инструмент, но vi и nano незаменимы для быстрого редактирования файлов в удаленных ssh сессиях. Если вы еще не работали с ним, рекомендую освоить такие вещи как поиск, замена и форматирование, хотя бы в nano.
Графические текстовые редакторы. Mousepad, Gedit, Notepad++ и т.п. Легковесные редакторы, с подсветкой синтаксиса, автозаменой и прочим, что уже есть в консольных редакторах, но они всё еще не являются полноценной интегрированной средой разработки.
IDE. Geany, Atom, IntelliJ IDEA, Sublime Text и Visual Studio Code - это уже полноценные и расширяемые среды разработки. Долгие годы я пользовался Geany и пробовал все перечисленные варианты, но только с появлением VSCode мне удалось сменить основную IDE для большинства задач.
Далее в статье про утилиты и расширения, настройку окружения и многое другое.
Please open Telegram to view this post
VIEW IN TELEGRAM