Linux
الذهاب إلى القناة على Telegram
Все для системного администратора, новости и информация из мира Linux По всем вопросам @evgenycarter
إظهار المزيد3 326
المشتركون
-1624 ساعات
-807 أيام
-1 65530 أيام
أرشيف المشاركات
3 325
Как отлаживать bash-script-ы по шагам
Мне всегда хотелось иметь возможность отлаживать bash-scripts так же, как и любой другой код, т.е. по шагам, и bash такую возможность предусмотрел, но о ней не все знают. Несмотря на довольно большой опыт использования Linux, я дошёл до неё только недавно.
Волшебная строчка, которую нужно добавить после
#!/bin/bash, чтоб скрипт можно было отлаживать по шагам
#!/bin/bash
trap 'echo "# $BASH_COMMAND";read' DEBUG
echo line1
echo line2
echo line3
Процесс отладки
Запускаем скрипт, перед выполнением каждой команды выводится то, что будет исполняться, затем интерпретатор начинает ожидать нажатия клавиши <ENTER>.
Если понимаем, что что-то пошло не так, нажимаем Ctrl+C и выходим из отладки.
Ингредиенты
команда trap, которая умеет перехватывать разные сигналы и в нашем случае она перехватывает сигнал DEBUG, посылаемый перед выполнением команды
команда read, которая умеет ожидать ввода чего-нибудь с клавиатуры (в данном случае нам нужно только либо ENTER либо Ctrl+C
переменная окружения $BASH_COMMAND, валидная внутри обработчика команды trap.
# Online Bash Shell.
# Code, Compile, Run and Debug Bash script online.
# Write your code in this editor and press "Run" button to execute it.
trap 'echo "# $BASH_COMMAND";read' DEBUG
echo line1
echo line2
echo line3
echo "Hello World";
👉@linuxchmod3 325
Sniffer - современный альтернативный сниффер сетевого трафика.
Sniffer предназначен для поиска и устранения неисправностей в сети. Он может быть запущен в любое время для анализа процессов или соединений, вызывающих увеличение сетевого трафика, без загрузки каких-либо модулей ядра. Кстати, пользовательский интерфейс программы отзывчив, что позволяет автоматически подстраиваться под терминалы любого размера.
Sniffer использует библиотеку
libpcap для перехвата пакетов пользовательского уровня, поэтому сначала необходимо установить ее.
Debian/Ubuntu
$ sudo apt-get install libpcap-dev
CentOS/Fedora
$ sudo yum install libpcap libpcap-devel
Windows
https://npcap.com/
После этого установите sniffer командой go get
$ go get -u github.com/chenjiandongx/sniffer
MacOS
$ brew install sniffer
Использование
❯ sniffer -h
# A modern alternative network traffic sniffer.
Usage:
sniffer [flags]
Examples:
# bytes mode in MB unit
$ sniffer -u MB
# only capture the TCP protocol packets with lo,eth prefixed devices
$ sniffer -b tcp -d lo -d eth
Flags:
-a, --all-devices listen all devices if present
-b, --bpf string specify string pcap filter with the BPF syntax (default "tcp or udp")
-d, --devices-prefix stringArray prefixed devices to monitor (default [en,lo,eth,em,bond])
-h, --help help for sniffer
-i, --interval int interval for refresh rate in seconds (default 1)
-l, --list list all devices name
-m, --mode int view mode of sniffer (0: bytes 1: packets 2: plot)
-n, --no-dns-resolve disable the DNS resolution
-u, --unit string unit of traffic stats, optional: B, Kb, KB, Mb, MB, Gb, GB (default "KB")
-v, --version version for sniffer
https://github.com/chenjiandongx/sniffer
👉@linuxchmod3 325
Скрипт проверки активности всех ppp-соединений Mikrotik
# если по тоннелю пинга нет, то осуществляется разрыв тоннеля для переподключения
# внимание ! скрипт будет отключать активное vpn-соединение с админом, т.к. до него пинга не будет !
# поэтому в скрипте сделан обход удаления данного соединения (задаётся в adminClient, должен соответствовать ppp secret)
:local adminClient "you ppp secret admins` name"
:local pppTest value=[/ppp active find];
:local pingNumber value=2;
:local pingMin value=1;
:foreach userTest in=$pppTest do={
:local pingOk value=[:ping [/ppp active get $userTest value-name=address] count=$pingNumber]
:if (($pingOk < $pingMin) && ([/ppp active get $userTest value-name=name]!=$adminClient)) do={
:log warning message=([/ppp active get $userTest value-name=service] . " auto disconnected: ". $pingOk . " ping ok over " . $pingNumber . " " . [/ppp active get $userTest value-name=name] . " " . [/ppp active get $userTest value-name=address])
/ppp active remove $userTest
}
}
если нужно проверять только определенный вид ppp замените строку :
# :local pppTest value=[/ppp active find];
на строку, например
# :local pppTest value=[/ppp active find where service=pptp];
Для использования поставьте этот скрипт в Планировщик с нужным интервалом (оптимально не менее 30 сек).
👉@linuxchmod3 325
🎥Bash Scripting Essentials
01 - Getting Started
02 - Hello World
03 - Intro to Variables
04 - Executing Commands
05 - Basic Math Functions
06 - A Simple "If" Statement
07 - Checking the Existence of Files
08 - Universal Update Script
09 - Standard Input, Output, & Error
10 - Creating a While Loop
11 - Correcting Laptop Insomnia
12 - Filesystem Locations For Bash Scripts
13 - The Case Statement
14 - Sending Email with sendEmail
15 - Sending Email (Part 2)
16 - Sending Email (Part 3)
Все видео доступны на youtube
👉@linuxchmod
3 325
Создание уведомлений и напоминаний на рабочем столе из Linux терминала
Иногда полезно получить визуальную обратную связь от скрипта. Например, когда завершается работа скрипта или задание cron, или, когда долгоиграющая сборка терпит неудачу. Или, когда во время выполнения скрипта возникает срочная проблема.
https://letsdebug.it/post/30-linux-desktop-notifications/
👉@linuxchmod
3 325
Systemd. Мир IT с Антоном Павленко.
Процесс загрузки Linux. Systemd, Kernel, GRUB2, Bios
Что такое systemd? Управление демонами linux c помощью systemctl
Основные параметры unit systemd linux. Создание unit systemd.
Изменение и создание unit systemd. Как написать свою службу в Linux?
Все видео на youtube
👉@linuxchmod
3 325
Основные команды Linux: Управление пользователями и группами
-b – Базовый каталог по умолчанию, в котором создаются домашние каталоги пользователей. Обычно это / home, а пользовательские каталоги — /home/$ USER.
-c “text text” – Текстовая строка для описания id, содержащая, например, полное имя пользователя.
-e YYYY-MM_DD – Дата, когда учетная запись потеряет силу или будет заблокирована.
-G gr1,gr2,gr3 – Список дополнительных групп, которым принадлежит пользователь.
-o – Позволяет создать пользователя с неуникальным id.
-u – Неотрицательное цифровое значение id пользователя, которое должно быть уникальным, если не определено иначе опцией -o. По умолчанию используется самое маленькое значение, не меньше, чем UID_MIN, причем больше, чем id любого из существующих пользователей.
usermod user – изменение настроек пользователя с именем user в системе
аналогичны всем вышеуказанным для useradd
-L – блокировка учетной записи
-U – разблокировка учетной записи
userdel user – удаляет пользователя user из системы
-r – удаление домашнего каталога пользователя
users – Выдаются имена пользователей, которые в текущий момент зарегистрированы в системе
groupadd group – добавление (создание) новой группы group в системе
-f – Выйти со статусом успешного выполнения, если группа уже существует. Удобна при написании скриптов, когда нет необходимости проверять, существует ли группа, прежде чем пытаться ее создавать.
-g – Задать id группы вручную.
-o – Разрешить группу с неуникальным id.
groupmod group – изменение информации о группе group в системе
-n group2 задание нового имени group2
groupdel group – удаление группы group из системы
passwd user – изменяет/устанавливает пароль пользователя user
-l – блокирование учетной записи
-d – удаление пароля учетной записи (блокирование)
-f – установка даты прекращения полномочий
-n – минимальное время действия пароля в днях
-x – максимальное время действие пароля в днях
-w – число дней появления предупреждения об окончании действия пароля
-i – число дней, после которых пароль потеряет силу и учетка заблокируется.
-S – вывод сообщения о статусе пользователя
gpasswd group – изменяет/устанавливает пароль группы group (Наличие пароля группы позволяет пользователям временно войти в группу при помощи команды newgrp, если им известен пароль группы.)
id who – просмотр информации о пользователе/группе who (принадлежность к группам, UID, GID)
ulimit – ограничение пользовательских ресурсов:
-a – отображение всех возможных ресурсов
-f – ограничение размера файла
-t – процессорное время
👉@linuxchmod3 325
Внутреннее устройство Linux - доступно, но всерьез.
Уроки по Linux от Дмитрия Кетова для самостоятельного обучаения.
https://www.youtube.com/c/DmitryKetov/playlists
👉@linuxchmod
3 325
Руководство по SSH-туннелям
В этой статье описаны случаи использования и примеры туннелей SSH с наглядным представлением потоков трафика. Например, здесь представлен обратный туннель, который позволяет только пользователям с IP-адреса 1.2.3.4 получить доступ к порту 80 на SSH-клиенте через SSH-сервер.
https://robotmoon.com/ssh-tunnels/
👉@linuxchmod
3 325
VULNHUB - предоставляет образы виртуальных машин для VirtualBox, позволяющих любому желающему получить практический опыт в области цифровой безопасности, компьютерного программного обеспечения и сетевого администрирования.
Образы содержат различные уязвимости, некоторые без описания. Это могут быть виртуалки-тренажёры, чтобы вы сами попытались обнаружить уязвимость. Некоторые специально собраны в таком формате, чтобы вы как в игре, шли от одной уязвимости к другой, осуществляя поэтапные взломы.
https://www.vulnhub.com/
👉@linuxchmod
3 325
Шпаргалка по PowerShell: Команды, операторы и многое другое
Шпаргалка по PowerShell — это версия языка командной строки Windows, которая помогает вам легко выполнять и автоматизировать критически важные задачи в ваших системах. Но как выполнять эти задачи и максимально использовать PowerShell в своей системе Windows?
Мы составили шпаргалку, в которой описаны синтаксис PowerShell и все команды, чтобы помочь вам оптимизировать PowerShell и даже подготовиться к собеседованиям.
https://bookflow.ru/shpargalka-po-powershell-komandy-operatory-i-mnogoe-drugoe/
👉@linuxchmod
3 325
Nginxpwner - это простой инструмент для поиска распространенных неправильных конфигураций и уязвимостей Nginx.
Install:
cd /opt
git clone https://github.com/stark0de/nginxpwner
cd nginxpwner
chmod +x install.sh
./install.sh
Install using Docker
git clone https://github.com/stark0de/nginxpwner
cd nginxpwner
sudo docker build -t nginxpwner:latest .
Run the image
sudo docker run -it nginxpwner:latest /bin/bash
https://github.com/stark0de/nginxpwner
👉@linuxchmod3 325
Примеры полезного использования команды netsh в Windows
Команда netsh (от англ. «сетевая оболочка» или network shell) — программа, включенная в линейку продуктов операционных систем Microsoft Windows NT начиная с Windows 2000. Она позволяет осуществлять локальное или удаленное конфигурирование сетевых параметров.
https://bookflow.ru/primery-poleznogo-ispolzovaniya-komandy-netsh-v-windows/
👉@linuxchmod
3 325
Mongodb
How to run Mongodb database as a docker container in linux
How to secure mongodb database when in Docker container
How to backup and restore a mongodb database in Linux
How to export and import data to a mongodb database in Linux
How to execute simple queries in mongodb database
How to deploy a mongodb replica set using Docker
How to install and run Robo 3T a mongodb database GUI in Linux
How to install and run mongodb database in Windows
How to move mongodb database files from one server to another in Windows
Useful command line tools to monitor mongodb database
👉@linuxchmod
3 325
50 базовых команд Windows с примерами
Изучите основные команды windows, которые помогут вам в устранении неполадок, настройке и сборе информации о системе. 50 базовых команд Windows с примерами.
👉@linuxchmod
3 325
Как перенаправить папку "Документы" с помощью групповой политики
Профессор Роберт МакМиллен показывает, как перенаправить папку "Документы" с помощью групповой политики в Windows, чтобы их можно было резервировать на сервере.
👉@linuxchmod
3 325
Основные команды Linux: Системная информация
date – вывести текущую дату и время
[ммддччмм[гг]].сс – установка даты и времени (мм – месяц, дд – дата, чч – час, мм – минут, гг – год, сс – секунд)
cal – вывести календарь на текущий месяц
uptime – показать текущий аптайм
uname – показать информацию о ядре
-s – Показать имя ядра (информация выдается по умолчанию, если ни одна опция не указана)
-n – Показать имя хоста.
-r – Показать номер выпуска ядра. Эта опция часто используется с командами управления модулями.
-v – Показать версию ядра.
-m – Показать имя аппаратной платформы (CPU).
-o – Показать имя операционной системы.
-a – Показать всю возможную информацию.
cat /proc/cpuinfo – информация ЦПУ
cat /proc/meminfo – информация о памяти
df – показать инф. о использовании дисков
-t – указание типа ФС
-h – в “понятном” виде
-T – отображение типа ФС
-i – отображение информации об inode
-x fstype – исключение вывода по типу ФС
du – вывести “вес” текущего каталога
-s – с подкаталогами
-h – в “понятном” виде
-m – вывод в мегабайтах
dmidecode – информация о железе, берется из API DMI (пакет pmtools)
-t– указать тип устройства
-t 17 – информация о памяти
-q – вывод меньшей информации
free – использование памяти и swap
whereis file– отображение расположения файла file
which app – отображает путь к команде app
type app – аналог каманды which
enable – вывод встроенных в интерпретатор команд
lshw – обтображение списка устройств
lsmod – список подключенный модулей ядра
modprobe modulemane – добавления и удаления модулей ядра Linux
modinfo modulename – информация о модуле modulename
-F param – отображение только параметра param для модуля
👉@linuxchmod3 325
Администрирование с Антоном Павленко
В чем разница между OSI и TCP/IP? Зачем существуют одновременно две сетевые модели?
Куда расти сисадмину-эникею? Мое мнение и опыт
Настройка nginx wordpress php-fpm. Nginx или apache для wordpress? Почему nginx?
Что такое DDOS? Простым языком. Какие атаки я наблюдал Распределенная атака на сервера.
SSD. Архитектура. Как появляются битые сектора и что с этим делается?
Strace Linux. Когда нет другого выхода
Полный плейлист на youtube
👉@linuxchmod
