BashMaster
Open in Telegram
Удобные консольные наработки на каждый день для разработчиков, девопсов и сисадминов. Реклама: @Kone4noVasya Канал на бирже: https://telega.in/c/bash_help
Show more8 880
Subscribers
+224 hours
-117 days
+730 days
Posts Archive
8 880
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, согласитесь, проделать данную процедуру уже будет довольно утомительно. Поэтому сделаем скрипт, который соберет вывод команд со всех маршрутизаторов в файл.
#!/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 скрипта
🔨 bash_help8 880
Хотите начать разбираться в компьютерных сетях и тонкостях настройки сетевого оборудования?
Разобраться в этом вам поможет канал сертифицированных сетевых инженеров Cisco.
После ухода «Cisco Systems» из РФ, они создали проект Network Admin, в котором обучают администрировать сети.
Инженеры обучат вас до уровня CCNA и CCNP за 0₽, эти курсы самые востребованные в мире!
Подписывайтесь на канал, изучайте прибыльную профессию в IT-рынке.
8 880
Как запустить 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 скрипт, необходимо дать скрипту нужные права, используя команду:
chmod 777 namescriptзатем запустить:
./namescriptnamescript - название вашего скрипта вместе с расширением. Вот и все. Теперь можно запускать bash скрипты из windows. 🔨 bash_help
8 880
❓Заботитесь о безопасности информации?
Приходите прокачиваться на бесплатный вебинар онлайн-курса «Инфраструктура открытых ключей PKI» — «Алгоритмы асимметричной криптографии»: регистрация
На уроке мы:
— рассмотрим, как развивались криптоалгоритмы.
— познакомимся с принципами работы шифровальной машины Энигма.
— изучим, как работают алгоритмы асимметричной криптографии для обеспечения конфиденциальности, аутентичности, целостности информации.
После занятия вы сможете понимать принципы работы асимметричной криптографии для обеспечения конфиденциальности, аутентичности, целостности информации.
🔥После вебинара вы сможете продолжить обучение на курсе по спеццене, в том числе, в рассрочку.
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: LjN8Jugfo
8 880
Bash скриптинг – парсинг аргументов в скриптах Bash с помощью getopts
Передача аргументов в программу – одна из распространенных операций в любом языке, который вы используете.
В этой статье мы рассмотрим, как разбирать аргументы в скриптах bash с помощью встроенной функции getopts.
Каждая команда, которую мы выполняем в терминале, имеет аргумент, связанный с ней.
Например, можно взять самую простую команду в Linux под названием
df, которая отображает использование дискового пространства файловой системы.
Она принимает такие аргументы/флаги, как -h, -i, –version и т.д.
Аналогично этому, когда вы создаете скрипт оболочки, в зависимости от случая использования вам может потребоваться обработать скрипт на основе переданного аргумента.
В bash есть два способа анализа аргументов, переданных скрипту.
Один из них – написать логику для разбора аргументов вручную, используя специальные переменные $@, $1, $2 … $N.
Другой способ заключается в использовании getopts.
Getopts – это POSIX-совместимая встроенная функция bash, которая принимает короткие аргументы, такие как -h, -v, -b и т.д.
Вы не можете передавать длинные аргументы, такие как –help, –version.
Если вы хотите разобрать длинные опции, есть другая утилита getopt, которая является внешней программой, а не встроенной в bash.
📖 Ссылка на статью
🔨 bash_help8 880
Отображение палитры цветов ANSI в оболочке bash
Очень полезно, чтобы увидеть все доступные цвета 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
Здесь выводятся все коды цветов для создания красивой цветовой подсказки.
Это полезный способ получить определенный цвет, который вам нужен.
🔨 bash_help8 880
Редактирование последней команды в истории
Вы можете использовать оператор !!, чтобы отредактировать ошибочно написанную команду в истории bash и повторно выполнить ее правильно.
Это позволяет исправить ошибку, допущенную в предыдущей команде, как показано ниже.
ehco hello -bash: ehco: command not foundКак мы видим, это легко исправить.
!!:gs/ehco/echo/ echo hello helloЭто повторное выполнение команды, и она будет написана правильно 🔨 bash_help
8 880
🚀 В Телеграм появился новый канал, на котором бесплатно учат кибербезу
CyberSec News — тут рассказывают, как защититься от хакеров, находить уязвимости в программах и сайтах и стать белым хакером.
Его ведет гик-специалист по безопасности, который фанатеет от киберпанка и самураев. Поэтому во все посты он вписывает прикольные японские фразочки.
А еще он понятно пишет и разъясняет работу каждой уязвимости на пальцах. Поэтому будет полезно почитать специалистам любого уровня.
Да и тем, кому просто нравится кибербез и самураи — тоже зайдет ;)
Заглядывайте, если хотите стать этичным хакером → @CyberNewsSe
8 880
Атоматизируем ssh подключение к группе хостов используя bash скрипт и expect
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
📖 Ссылка на статью
🔨 bash_help8 880
❗️ Приглашаем 5 сентября в 20:00 по Москве на бесплатный вебинар “Простота и мощь автоматизации: сравнение с Puppet, Chef и Salt” от Отус.
Вебинар приурочен к старту онлайн-курса — «DevOps практики и инструменты».
✅ На вебинаре мы проведем сравнение различных систем автоматизации, таких как Ansible, Puppet, Chef и Salt.
Основное внимание уделим Ansible, выявляя его уникальные особенности, преимущества и возможности в сравнении с другими популярными инструментами.
Также рассмотрим принцип работы каждой системы автоматизации и как они реализуют конфигурационное управление и оркестрацию. Оценим различия в подходах к автоматизации задач и управлению конфигурациями.
➡️ Регистрация на вебинар: https://otus.pw/oBFo/
Нативная интеграция. Информация о продукте www.otus.ru
8 880
Как запустить небольшой код Python в Bash
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 script=`cat <<_EOF_ КОД _EOF_` echo "$script" | pythonТам где КОД вставьте код Python. Ещё один вариант этой конструкции:
python << END ... КОД ... ENDИ ещё один вариант, в котором вывод присваивается в качестве значения переменной ABC:
ABC=$(python << END ... END)
🔨 bash_help8 880
Repost from КИБЕР МЕДИА
🗣 Михаил Стюгин, Positive Technologies: Автопилот в кибербезе нужен всем – крупным компаниям и среднему и малому бизнесу
Концепция результативной кибербезопасности – это яркий тренд, у которого появляется все больше последователей в ИБ-сообществе. Одни уверяют, что можно выстроить защиту в организации так, что недопустимые события действительно могут не реализоваться никогда. Но есть и те, кто напоминает о случайностях и указывает на теорию вероятностей.
Однако обе стороны согласны в одном – для того, чтобы недопустимые события не могли быть реализованы злоумышленником, нужны технологии. Они лежат в основе продуктов для информационной безопасности.
➡️ Об отдельном классе – метапродуктах – порталу Cyber Media рассказал Михаил Стюгин, руководитель направления автоматизации информационной безопасности Positive Technologies.
8 880
Полезные сочетания клавиш в оболочке 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
8 880
Скрипт Bash для мониторинга использования процессора и памяти на Linux
Скрипт может собирать информацию об использовании из файла /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. Это приложение в текстовом режиме, которое отображает информацию о процессах в удобном для пользователя виде.
vmstat: Эта команда выдает информацию о процессах, памяти, подкачке, блочном вводе-выводе, ловушках и активности процессора.
ps: Эта команда используется для отображения информации о текущих запущенных процессах.
iostat: Эта команда сообщает статистику центрального процессора (CPU) и статистику ввода/вывода для устройств и разделов.
ps: Эта команда используется для отображения информации о текущих запущенных процессах.
iostat: Эта команда сообщает статистику центрального процессора (CPU) и статистику ввода/вывода для устройств и разделов.
🔨 bash_help8 880
В ИБ-сообществе набирают популярность 2 канала по кибербезу:
🐥 No system is safe - один из древнейших ресурсов по информационной безопасности в рунете. Книги, курсы, полезные тулсы, уроки по Linux, новости клирнета и даркнета.
🚓 Лаборатория хакера - канал кибер-детектива с 10-летним стажем. Обзоры github-инструментов для OSINT, пентеста, анонимизации и защиты.
8 880
Как сделать снимок с помощью веб-камеры
Скрипт использует видеоплеер mpv, чтобы записать первые три кадра, снятые камерой, в JPEG-файлы с именами 0000000.jpg, 00000002.jpg, 00000003.jpg, затем переименовывает третий снимок в файл photo.jpg, а остальные удаляет. Три снимка необходимы для того, чтобы камера успела провести инициализацию, обычно первые два получаются просто черными.
!#/bin/bash mpv tv:// -frames 3 -vo jpeg mv 00000003.jpg photo.jpg rm -f 0000*.jpgИногда изображение выходит перевернутым; чтобы это исправить, mpv следует запускать с флагом -vf flip:
$ mpv tv:// -frames 3 -vf flip -vo jpeg
🔨 bash_help8 880
Скрипт для включения/выключения тачпада ноутбука
Скрипт включает тачпад, если отключен, и наоборот. В своей работе использует утилиту synclient, позволяющую управлять тачпадами производства Synaptics (90% тачпадов делают они). При запуске без аргументов утилита выводит различную информацию о тачпаде, в том числе строку TouchpadOff = 1, если он активирован, и TouchpadOff = 2, если отключен. Скрипт находит это значение и в зависимости от состояния тачпада включает или отключает его.
#!/bin/sh
state=`synclient | grep TouchpadOff | cut -d '=' -f 2`
if [ $state = "1" ]; then
synclient TouchpadOff=0
else
synclient TouchpadOff=1
fi
🔨 bash_help8 880
Скачиваем Youtube плейлист в формате mp3 одним bash-скриптом
Bash-скрипт на входе получает ID плейлиста, на выходе – mp3 файлы, которые можно слушать в любимом плеере.
Скачать mp3 с Youtube нельзя, поэтому процесс делим на 3 шага:
1. скачиваем flv
2. извлекаем звуковую дорожку
3. удаляем временный flv
На всякий случай напомню, что ID плейлиста это get-параметр «list».
Зависимости:
sudo apt-get install youtube-dl ffmpeg libavcodec-extra-53
- youtube-dl для скачивания видеофайла
- ffmpeg libavcodec-extra-53 для конвертации в mp3
🖼️ Ссылка на скрипт
🔨 bash_help8 880
Как присвоить переменной вывод команды в Bash
Если вам нужно, чтобы полученное от команды значение присваивалось переменной, то это можно сделать несколькими способами.
1. Используя обратные кавычки (апострофы). Пример кода:
#!/bin/bash VAR1="$1" VAR2="$2" MOREF=`sudo run command against $VAR1 | grep name | cut -c7-` echo $MOREFДля этого варианта нужно помнить следующее: не перепутайте обратные кавычки с одиночными кавычками. А ещё использование этого синтаксиса считается теперь устаревшим (но везде работающим). 2. В дополнение к обратным кавычкам можно использовать $(). Преимуществом данного способа является возможность вложенности. Пример:
OUTPUT="$(ls -1)"
echo "${OUTPUT}"
Использование кавычек (") имеет смысл при возможности появления значений в несколько строк.
Ещё одним важным отличием $() от двойных кавычек является то, что при обращении к переменной, если ей присвоено значение $(), она пересчитывается каждый раз. А если значение переменной определено командой внутри обратных кавычек, то это значение считается только один раз (при присвоении), а затем только используется.
3. Можно создать пользовательскую функцию, содержащую необходимые команды, и использовать название функции вместо имени переменной. Пример:
func (){
ls -l
}
Вызывать нужно по имени функции (в данном случае func).
4. И ещё более экзотический вариант – использование eval:
var="ls -l" eval $var🔨 bash_help
8 880
Как управлять WireGuard VPN через bash скрипт в Linux
Перед созданием скрипта убедитесь, что У вас установлен в системе сам клиент WireGuard. Чтобы это проверить, введите команду в терминале:
sudo apt install wireguard resolvconfЕсли он уже установлен, то система об этом сообщит. Но если нет, то установите и все его зависимости. После чего просто скопируйте свой конфиг wg0.conf в папку:
sudo nano /etc/wireguard/wg0.confBash скрипт управления WireGuard
#!/bin/bash
function wgstart() {
echo ""
echo "Запустить VPN: "
echo ВАШ_ПАРОЛЬ_ОТ_ROOT | sudo -S su
sudo wg-quick up wg0
echo ""
}
function wgstop() {
echo ""
echo "Остановить VPN: "
echo ""
echo ВАШ_ПАРОЛЬ_ОТ_ROOT | sudo -S su
sudo wg-quick down wg0
echo ""
}
function wgedit() {
echo ""
echo "Редактировать VPN конфиг: "
echo ""
echo ВАШ_ПАРОЛЬ_ОТ_ROOT | sudo -S su
sudo nano /etc/wireguard/wg0.conf
echo ""
}
##
# Color Variables
##
green='\e[32m'
blue='\e[34m'
clear='\e[0m'
##
# Color Functions
##
ColorGreen(){
echo -ne $green$1$clear
}
ColorBlue(){
echo -ne $blue$1$clear
}
menu(){
echo -ne "
Управление VPN WireGuard
$(ColorGreen '1)') Запуск VPN WG
$(ColorGreen '2)') Остановка VPN WG
$(ColorGreen '3)') Редактировать VPN WG
$(ColorBlue 'Выберите, что нужно сделать:') "
read a
case $a in
1) wgstart ; menu ;;
2) wgstop ; menu ;;
3) wgedit ; menu ;;
*) echo -e $red"Неправильный вариант."$clear; WrongCommand;;
esac
}
# Call the menu function
menu
Замените фразу «ВАШ_ПАРОЛЬ_ОТ_ROOT» на пароль от Вашей учетной записи которая имеет права администратора root. Эта команда внутри скрипта сама вводит Ваш пароль перед выполнением запуска или остановки службы WG.
Создайте файл WireGuard.sh и дайте ему права на выполнение.
chmod +x ./WireGuard.shНаконец пришло время выполнить скрипт:
bash wireguard-manager.sh🔨 bash_help
