Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
371 - Telegram Web
Telegram Web
Шпаргалка по скриптам Bash

Основы написания скриптов на Bash
Условные операторы
Циклы Bash
Арифметические операторы
Арифметические условные операторы
Операторы сравнения строк
🔥31
Карта сетевых протоколов коммуникации (Network Communication Protocols Map)
3
Как провести Тех. обслуживание сервера с уведомлением пользователей?

Для начала создаем пустой файл /etc/nologin. Включаем возможность заходить под root. Теперь только root сможет авторизоваться по ssh.

Переходим к уведомлениям, возможно кто-то в данный момент работает в терминале.

Воспользуемся утилитой wall.

Wall — утилита командной строки, которая отображает сообщение на терминалах всех вошедших в систему пользователей.

Запускаем команду:


wall "... текст сообщения ..."


Все кто подключен к серверу, получают сообщение:


... текст сообщения ...


И неважно что делает человек и где находится, сообщение появится у него на экране. Через wall можно спамить определенным группам пользователей.

В указанное время запускаем ассасина:


pkill -9 -u `who | awk '{print $1}'| grep -v root|head -1


Выгнали всех с сервера, кроме root’а и проводим технические работы, удаляем /etc/nologin.

Wall можно заменить например на такое:


echo "какой-то текст" | write user


Но тут сообщение уйдет конкретному пользователю user. Конечно, если по какой-то причине, в системе отсутствует wall, можно и через цикл выгрести всех юзеров и через echo отправить им уведомление.

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

Или так:


echo "какой-то текст" > /dev/pts/1
2
Краткий курс по созданию сценариев Bash
Утилита динамического мониторинга процессов Nmon

Это утилита измерения и настройки производительности. Она может отображать информацию о ЦП, оперативной памяти, сети, дисках (в виде мини графиков или числовых данных), файловых системах, NFS, самых нагружающих процессах, ресурсах.

Устанавливается командой:
sudo pamcan -S nmon

Для запуска утилиты необходимо выполнить команду:
nmon

https://telegra.ph/Utilita-dinamicheskogo-monitoringa-processov-Nmon-03-11
2
Как работает HTTPS?

Безопасный протокол передачи гипертекста

(HTTPS) - это расширение протокола передачи гипертекста (HTTP). HTTPS передает зашифрованные данные с использованием транспортного уровня безопасности (TLS). Если данные будут перехвачены в Интернете, все, что получит угонщик, - это двоичный код.

Как шифруются и дешифруются данные?

Шаг 1 - Клиент (браузер) и сервер устанавливают TCP-соединение.

Шаг 2 - Клиент отправляет серверу " client hello". Сообщение содержит набор необходимых алгоритмов шифрования (наборов шифров) и последнюю версию TLS, которую он может поддерживать. Сервер отвечает " server hello", чтобы браузер знал, может ли он поддерживать алгоритмы и версию TLS.

Затем сервер отправляет SSL-сертификат клиенту. Сертификат содержит открытый ключ, имя хоста, дату истечения срока действия и т. д. Клиент проверяет сертификат.

Шаг 3. После проверки SSL-сертификата клиент генерирует ключ сессии и шифрует его с помощью открытого ключа. Сервер получает зашифрованный ключ сеанса и расшифровывает его с помощью закрытого ключа.

Шаг 4 - Теперь, когда клиент и сервер владеют одним и тем же сеансовым ключом (симметричное шифрование), зашифрованные данные передаются по защищенному двунаправленному каналу.

Почему HTTPS переключается на симметричное шифрование при передаче данных? Есть две основные причины:

1. Безопасность: Асимметричное шифрование работает только в одну сторону. Это означает, что если сервер попытается отправить зашифрованные данные обратно клиенту, любой сможет расшифровать их с помощью открытого ключа.

2. Ресурсы сервера: Асимметричное шифрование добавляет довольно много математических накладных расходов. Оно не подходит для передачи данных в длительных сессиях.
5👍1
Как найти и убить процессы, занявшие порт в Linux


fuser -k 8080/tcp


📌 Что делает эта команда:
- fuser — показывает, какие процессы используют файл или сокет;
- -k — убивает найденные процессы;
- 8080/tcp — порт, который проверяем (можно заменить на свой).

💡 Альтернатива с lsof:


kill -9 $(lsof -t -i:8080)


- lsof -i:8080 — находит процессы, слушающие порт;
- -t — выводит только PID;
- kill -9 — принудительно завершает процессы.

⚠️ Будь аккуратен, особенно с kill -9 — он не даёт процессу корректно завершиться.
👍31
Примеры типовых операций в bash-скриптах

Собрал для вас полезные кусочки Bash-кода, которые часто нужны при написании скриптов: арифметика, проверки, FTP, Telnet, циклы и т.д.



📌 Арифметика и цикл по количеству раз:


#!/bin/bash
A="10"
B="5"
C=`expr $A + $B`
printf "A=10 B=5 C=expr \$A + \$B C=%d \n" "$C"

# Цикл по числам от 0 до 14 (в 16-ричном формате)
I=0
while [ $I -lt 15 ]
do
printf "0x%02x " "$I"
I=`expr $I + 1`
done
echo




📌 Проверки файлов:


#!/bin/bash
# Создаем файл
touch test1

# Проверка существования файла
if [ -f test1 ]; then
echo "файл test1 существует"
fi

# Проверка отсутствия файла
if ! [ -f test2 ]; then
echo "файл test2 не существует"
fi

# Краткая шпаргалка:
# -d file — директория
# -f file — обычный файл
# -L file — символьная ссылка
# -r/-w/-x — права: чтение/запись/выполнение
# -s file — файл существует и не пустой
# f1 -nt f2 — f1 новее, чем f2
# f1 -ot f2 — f1 старше, чем f2




📌 Работа с FTP (без интерактива):


#!/bin/bash
ADDRESS=192.168.1.150
USER=root
PASSWORD=root

ftp -n -p $ADDRESS <<EoF
user $USER $PASSWORD
cd /usr/bin
put my_cool_program
quit
EoF
exit 0




📌 Работа с Telnet:


#!/bin/bash
(
sleep 1
echo "root"
echo "cd /tmp"
echo "ls"
sleep 1
echo "quit"
) | telnet 192.168.1.150


⚠️ Если требуется пароль — добавь ещё echo "mypassword" сразу после echo "root"



📌 Цикл по множеству значений:


#!/bin/bash
for A in раз два три четыре пять
do
echo "$A,"
done
echo "вышел заяц погулять"




Не забудь дать права на исполнение скрипта:


chmod a+x script.sh
2👍1
📌 Как проверить, какие процессы используют диск в Linux?

Всем доброо вечера! Сегодня разберёмся с ситуацией, когда диск в системе нагружен, а причина не ясна. Как узнать, какие процессы активно читают/пишут данные?

1. Используем iotop
Это удобная утилита, показывающая процессы, активно работающие с диском. Установить её можно так:

# Для Debian/Ubuntu:
sudo apt install iotop

# Для RHEL/CentOS/AlmaLinux/Rocky:
sudo dnf install iotop

Запускаем команду:

sudo iotop

Можно добавить флаг -o, чтобы показать только активные процессы:

sudo iotop -o


2. Анализируем с pidstat
Утилита pidstat из пакета sysstat поможет увидеть нагрузку на диск со стороны процессов:

sudo pidstat -d 1

Здесь -d — мониторинг I/O, а 1 — обновление раз в секунду.

3. Используем lsof
Чтобы узнать, какие файлы открыты процессами на диске:

sudo lsof +D /путь/к/директории

Например, чтобы посмотреть файлы в /var/log:

sudo lsof +D /var/log


4. fatrace – в реальном времени
Хотите увидеть, какие файлы изменяются? Запустите:

sudo fatrace
👍21
Как работает DHCP
2
Полезные команды Linux. Манипуляции с текстом

# cat -n file1
Вывести содержимое файла, нумеруя выводимые строки
# cat example.txt | awk 'NR%2==1'
Вывести только не четные строки файла
# echo a b c | awk '{print $1,$3}'
Вывести первую и третью колонки. Разделение, по-умолчанию, по пробельным символам или символу табуляции
# echo a b c | awk '{print $1}'
Вывести первую колонку содержимого файла. Разделение, по-умолчанию, по пробельным символам или символу табуляции
# comm -3 file1 file2
Сравнить содержимое двух файлов, удаляя строки встречающиеся в обоих файлах
# comm -1 file1 file2
Сравнить содержимое двух файлов, не отображая строки принадлежащие файлу file1
# comm -2 file1 file2
Сравнить содержимое двух файлов, не отображая строки принадлежащие файлу file2
# grep [0-9] /var/log/messages
Отобрать и вывести строки содержащие цифровые символы из файла /var/log/messages
# grep ^Aug /var/log/messages
Отобрать и вывести строки, начинающиеся с сочетания символов "Aug", из файла /var/log/messages
# grep Aug /var/log/messages
Отобрать и вывести строки, содержащие сочетание символов "Aug" из файла /var/log/messages
# grep Aug -R /var/log/*
Отобрать и вывести строки, содержащие сочетание символов "Aug", из всех файлов, расположенных в директории /var/log и ниже
# paste -d '+' file1 file2
Объединить содержимое file1 и file2 в виде таблицы с разделителем "+"
# paste file1 file2
Объединить содержимое file1 и file2 в виде таблицы: строка 1 из file1 = строка 1 колонка 1-n, строка 1 из file2 = строка 1 колонка n+1-m
# sdiff file1 file2
Сравнить содержимое двух файлов
# sed 's/string1/string2/g' example.txt
Заменить string1 на string2 в файле example.txt и вывести содержимое
# sed '/ *#/d; /^$/d' example.txt
Удалить пустые строки и комментарии из файла example.txt
# sed '/^$/d' example.txt
Удалить пустые строки и комментарии из файла example.txt
# sed -e '1d' exampe.txt
Удалить первую строку из файла example.txt
# sed -n '/string1/p'
Отобразить только строки содержащие string1
# sed -e 's/string//g' example.txt
Удалить строку string1 из текста файла example.txt не изменяя всего остального
# sed -e 's/ *$//' example.txt
Удалить пустые символы в конце каждой строки файла example.txt
# sed -n '5p;5q' example.txt
Вывести пятую строку
# sed -n '2,5p' example.txt
Вывести строки со второй по пятую
# sed -e 's/00*/0/g' example.txt
Заменить последовательность из любого количества нулей одним нулём
# sort file1 file2
Вывести отсортированное содержимое двух файлов
# sort file1 file2 | uniq
Вывести отсортированное содержимое двух файлов исключая повторные значения
# sort file1 file2 | uniq -u
Вывести уникальные значения из отсортированного содержимого двух файлов
# sort file1 file2 | uniq -d
Вывести только повторяющиеся значения из отсортированного содержимого двух файлов
# echo 'word' | tr '[:lower:]' '[:upper:]'
Перевести символы нижнего регистра в верхний
3👍1
Lexicon - утилита для управление записями DNS на различных DNS-провайдерах.

Используя её, вы можете организовать централизованное управление записями на неймсерверах провайдеров, используя их API, без необходимости ручных правок в панелях.

Поддерживает большой список популярных сервисов Cloudflare, Cloudns, Yandexcloud и т.д.

https://github.com/AnalogJ/lexicon
👍2
Увеличение дискового пространства в ОС FreeBSD

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

https://telegra.ph/Uvelichenie-diskovogo-prostranstva-v-OS-FreeBSD-09-26
3
Полезные команды Linux. Работа с правами доступа файлов и директорий

# chown vasya /file
Назначить пользователя vasya владельцем файла file
# chown -R vasya directory
Рекурсивно обойти директорию directory и назначить пользователя vasya владельцем всех вложенных файлов и директорий
# chown vasya:group /file
Назначить владельца и группу для файла /file
# chmod ugo+rwx /directory
Установить полные права доступа rwx ( Read Write eXecute ) для всех ugo ( User Group Other ) на директорию /directory. То-же самое можно сделать, используя числовой представление chmod 777 directory
# chmod go-rwx /directory
Удалить все права на директорию /directory для группы и остальных
# chgrp new_group file
Изменить группу-владельца для file на new_group
# chmod o+t /home/public
Установить так называемый STIKY-бит на директорию /home/public. Удалить файл в такой директории может только владелец данного файла
# chmod o-t /home/public
Удалить STIKY-бит с директории /home/public
# chmod u+s /bin/binary_file
Установить SUID-бит на файл /bin/binary_file. Это позволяет любому пользователю системы, запускать данный файл с правами владельца файла
# chmod u-s /bin/binary_file
Удалить SUID-бит с файла /bin/binary_file
# chmod g+s /home/public
Установить SGID-бит на директории /home/public
# chmod g-s /home/public
Удалить SGID-бит с директории /home/public
# find / -perm -u+s
Поиск всех файлов с установленным SUID битом, начиная с корня файловой системы
# ls -lh
Листинг текущего каталога с правами доступа
👍2
Полезные команды Linux. Средство управление пакетами - APT ( Debian, Ubuntu и т.д. )

# apt-cache search [ package ]
Вывести список пакетов, чье имя совпадает со строкой package

# apt-get check
Проверить зависимости

# apt-cdrom install [ package ]
Установить / обновить пакет с cdrom'а

# apt-get install [ package ]
Установить / обновить пакет

# apt-get upgrade
Обновить установленные в систему пакеты

# apt-get remove [ package ]
Удалить установленный пакет из системы, сохранив файлы конфигурации

# apt-get update
Обновить списки пакетов репозитария

# apt-get clean
Удалить загруженные архивные файлы пакетов
👍21
Команда curl. Синтаксис. Примеры использования

Сurl – утилита командной строки для скачивания и загрузки данных. Она выросла из проекта шведского программиста Даниэля Стенберга. Изначально в середине 90-х, на заре развития Интернета, он разрабатывал бота, который должен был загружать с веб-страницы курсы валют и сообщать пользователям IRC эквивалент шведских крон в долларах США. Со временем проект развивался, появлялась поддержка различных протоколов и новые функции. Теперь curl используется для передачи любых данных и ряда других полезных задач. Рассмотрим основные моменты работы с этим инструментом.

https://telegra.ph/Komanda-curl-Sintaksis-Primery-ispolzovaniya-09-26
👍3
2025/07/12 13:07:52
Back to Top
HTML Embed Code: