fa
Feedback
Системный администратор

Системный администратор

رفتن به کانال در Telegram

Канал для системных администраторов. Linux, Windows, Active Directory, GPO, PowerShell. Виртуализация Hyper-V, VMWare. Облака Azure, AWS. По всем вопросам @evgenycarter

نمایش بیشتر
2 097
مشترکین
-924 ساعت
-227 روز
-14530 روز
آرشیو پست ها
Файловый сервер SFTPGo Полнофункциональный и высококонфигурируемый SFTP-сервер с дополнительной поддержкой HTTP/S, FTP/S и We
Файловый сервер SFTPGo Полнофункциональный и высококонфигурируемый SFTP-сервер с дополнительной поддержкой HTTP/S, FTP/S и WebDAV - S3, Google Cloud Storage, Azure Blob https://github.com/drakkan/sftpgo 👉 @i_linux

Кошмар системного администратора 👉 @i_linux
+4
Кошмар системного администратора 👉 @i_linux

Шпаргалка по RAID mdadm — утилита для работы с программными RAID-массивами различных уровней. В данной инструкции рассмотрим примеры ее использования. Информация о RAID cat /proc/mdstat - состояние всех RAID mdadm -D /dev/md0 - подробная инфа о конкретном RAID lsblk - список дисков с разделами, местом, типом df -hT - свободное место, тип файловой системы, точки монтирования Сборка RAID mdadm —zero-superblock —force /dev/sd{b,c} - обнуление суперблоков на дисках sdb sdc (для удаления инфы о других RAID) при получении ответа mdadm: Unrecognised md component device - /dev/sdb значит, что диск не использовался для RAID, продолжаем mdadm —create —verbose /dev/md0 -l 1 -n 2 /dev/sd{b,c} * где /dev/md0 — устройство RAID, которое появится после сборки; -l 1 — уровень RAID; -n 2 — количество дисков, из которых собирается массив; /dev/sd{b,c} — сборка выполняется из дисков sdb и sdc. Создание файловой системы и монтирование массива mkfs.ext4 /dev/md0 - создание файловой системы ext4 на md0 mount /dev/md0 /mnt - разово примонтировать md0 к /mnt nano /etc/fstab, прописать /dev/md0 /mnt ext4 defaults 1 2 - постоянное монтирование, работает после перезагрузки Восстановление RAID Замена жесткого диска При выходе из строя, команда mdadm -D /dev/md0 выдаст: State : clean, degraded mdadm /dev/md0 —remove /dev/sdc - удалить сбойный диск mdadm /dev/md0 —add /dev/sde - добавить новый диск в массив Статус должен стать Rebuild Status : 40% complete и так до полного восстановления Пересборка массива Если нам нужно вернуть ранее разобранный или развалившийся массив из дисков, которые уже входили в состав RAID, вводим: mdadm —assemble —scan - команда сама найдет необходимую конфигурацию и восстановит RAID. mdadm —assemble /dev/md0 /dev/sdb /dev/sdc - с указанием из каких дисков пересобрать Запасной диск (Hot Spare) Если в массиве будет запасной диск для горячей замены, при выходе из строя одного из основных дисков, его место займет запасной. mdadm /dev/md0 —add /dev/sdd - Диском Hot Spare станет тот, который просто будет добавлен к массиву Добавить диск к массиву, расширить массив Добавление активного диска к RAID, который будет использоваться для работы, а не в качестве запасного. mdadm /dev/md0 —add /dev/sde mdadm -G /dev/md0 —raid-devices=3 - расширяем RAID * в данном примере подразумевается, что у нас RAID 1 и мы добавили к нему 3-й диск. Установка mdadm Если каким-то образом в дистрибутиве нет этого пакета apt-get install mdadm Удаление массива Если нам нужно полностью разобрать RAID, сначала размонтируем и остановим его: umount /mnt * где /mnt — каталог монтирования нашего RAID. mdadm -S /dev/md0 Затем очищаем суперблоки на всех дисках, из которых он был собран: mdadm —zero-superblock /dev/sdb mdadm —zero-superblock /dev/sdc mdadm —zero-superblock /dev/sdd 👉 @i_linux

Жесткий диск 👉 @i_linux
+6
Жесткий диск 👉 @i_linux

Как пробросить порт в Linux на другой сервер Необходимо пробросить с 8821 порта сервера 10.10.10.10 на 21 порт сервера 12.12.12.12: iptables -A FORWARD --dst 10.10.10.10 -p tcp --dport 8821 -j ACCEPT iptables -A FORWARD --src 10.10.10.10 -p tcp --sport 8821 -j ACCEPT iptables -t nat -A PREROUTING -d 10.10.10.10 -p tcp --dport 8821 -j DNAT --to-destination 12.12.12.12:21 iptables -t nat -A POSTROUTING -d 12.12.12.12 -p tcp --dport 21 -j SNAT --to-source 10.10.10.10:8821 👉 @i_linux

Скриптик переустановки пароля пользователя MikroTik # Скрипт смены пароля пользователя # только для исполнения в терминале RO
Скриптик переустановки пароля пользователя MikroTik # Скрипт смены пароля пользователя # только для исполнения в терминале ROS # by Sertik 09/06/2020 { :global EnterString do={ :local cont 0; :local string "" :while ($cont!=13) do={ :local key ([:terminal inkey]) :if ($key!=13) do={ :local char [[:parse "(\"\\$[:pick "0123456789ABCDEF" (($key >> 4) & 0xF)]$[:pick "0123456789ABCDEF" ($key & 0xF)]\")"]] :set string ("$string"."$char")} :set cont $key } :return $string} ; :put "Please, enter Username:" :local RegUser [$EnterString]; :put ""; :if ([:len [/user find disabled=no name=$RegUser]]!=0) do={:put "Ok, a user with this name was found"; :put ""; :put "Please, enter new password for this user:" :local newPass [$EnterString]; [/user remove $RegUser]; [/user add name=$RegUser password=$newPass group=full]; :put ""; :put "The user has been re-created, the password has been changed"; :put ("New user`s password: "."$newPass"); :put "Don't forget to set up access restrictions based on ip addresses"; } else={:put ("User "."$RegUser "."not found"); :put ""; } } Скрипт интересен строкой преобразования кода символа из переменной $key, сграбленного с клавиатуры терминала, в сам символ. :local char [[:parse "(\"\\$[:pick "0123456789ABCDEF" (($key >> 4) & 0xF)]$[:pick "0123456789ABCDEF" ($key & 0xF)]\")"]] 👉 @i_linux

Когда устроился на 1 линию техподдержки и отработал первый день⁠⁠ 😀 👉 @i_linux

Как работает DNS 👉 @i_linux
Как работает DNS 👉 @i_linux

Обложки компьютерных журналов 80-90-х годов 👉 @i_linux
+9
Обложки компьютерных журналов 80-90-х годов 👉 @i_linux

Как отлаживать bash-script-ы по шагам Мне всегда хотелось иметь возможность отлаживать bash-scripts так же, как и любой друго
Как отлаживать 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"; 👉 @i_linux

Руководство по командам Linux (rus version) 👉 @i_linux

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 👉 @i_linux

Скрипт проверки активности всех 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 сек). 👉 @i_linux

🎥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 👉 @i_linux

+2
Как работает CPU, память, процессы ОС (на примере Linux)? Инструкции, регистры, режимы, многозадачность, системные вызовы, прерывания Запуск программы, execve, shebang, обработчики, ELF Память, paging, fork, CoW, порождение процессов источник 👉 @i_linux

Как правильно уничтожать данные на диске 😀 👉 @i_linux
+1
Как правильно уничтожать данные на диске 😀 👉 @i_linux

Systemd. Мир IT с Антоном Павленко. Процесс загрузки Linux. Systemd, Kernel, GRUB2, Bios Что такое systemd? Управление демонами linux c помощью systemctl Основные параметры unit systemd linux. Создание unit systemd. Изменение и создание unit systemd. Как написать свою службу в Linux? Все видео на youtube 👉 @i_linux

Cамые нужные команд SSH Запускай команды быстро Чтобы выполнить всего одну удаленную команду, совсем не обязательно подключаться к SSH, вводить команду, а затем отключаться. Можно сделать это сразу. Например, так можно посмотреть заполненность ФС удаленной машины: $ ssh user@host df -h А так — перезагрузить ее: $ ssh user@host sudo reboot Составляй списки команд и запускай их разом Если у тебя есть целый список команд, которые следует выполнить, их можно записать в файл и скормить этот файл SSH: $ ssh user@host "`cat file.txt`" Редактируй удаленные файлы локальным редактором Чтобы отредактировать файл на удаленной машине, не требуется заходить на нее и использовать консольный редактор. На самом деле файл можно открыть в твоем любимом текстовом редакторе на локальной машине (gvim заменяем на свой редактор): $ gvim scp://user@host//путь/к/файлу Копируй содержимое удаленного файла в буфер обмена Если необходимо скопировать содержимое удаленного файла или вывод команды в буфер обмена, не обязательно выводить его на экран или открывать в текстовом редакторе и копировать вручную. Можно использовать следующую команду: $ ssh user@host cat /путь/к/файлу | xclip А так можно скопировать вывод команды: $ ssh user@host uname -a | xclip Сравнивай удаленный и локальный файл без копирования Похожий прием можно использовать для сравнения двух файлов: $ ssh user@host cat /путь/к/удаленному/файлу | diff /путь/к/лoкальному/файлу - Работай с удаленными файлами с помощью локального файлового менеджера Не всегда удобно работать с большим количеством файлов с помощью консольных команд или mc, запущенного на удаленной машине. Но всегда можно подключить любой каталог удаленной машины как сетевой диск. Для этого достаточно установить sshfs: $ sudo apt-get install sshfs Создать каталог для подключения «сетевого диска»: $ mkdir remote_files И подключить его: $ sshfs user@host:/home/user ~/remote_files/ Теперь все файлы удаленного каталога /home/user будут видны в каталоге ~/remote_files/ и с ними можно работать, как с обычными. Копируй ключи быстро Хоть и копирование публичного ключа на удаленный сервер — задача простая, но она требует выполнения нескольких действий вручную. Если тебя это напpягает, скопировать ключ можно в автоматическом режиме: $ ssh-copy-id user@host При этом не обязательно копировать основной ключ, с помощью флага -i можно указать любой другой: $ ssh-copy-id -i ~/my_key.pub user@host Создай постоянное соединение с машиной Если в течение дня ты часто подключаешься к одной машине, в том числе на несколько минут или секунд (чтобы просто запустить одну команду, например), есть смысл создать с ней постоянное соединение. Твой комп будет держать соединение открытым и использовать его для каждого подключения к машине. Это намного быстрее и экономичнее с точки зрения трафика и нагрузки на процессор. Добавь следующие строки в ~/.ssh/config: Host host ControlPath ~/.ssh/master-%r@%h:%p ControlMaster no А затем создай соединение: $ ssh -MNf user@host 👉 @i_linux

Основные команды 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 – процессорное время 👉 @i_linux

+9
Как работает Linux Обзорная иллюстрация компонент и интерфейсов Linux Основы Linux: пользователи и вход в систему Основы Linux: командная строка Основы Linux: дерево каталогов, файловые системы и файлы Основы Linux: разграничение прав доступа и потоки ввода-вывода Основы Linux: процессы и их свойства Основы Linux: сигналы и управление процессами Загрузка и дерево процессов Linux и Windows. Параллельные программы: процессы, нити и волокна Программирование на bash в Linux Команды bash: ветвеления, условия, циклы, функции источник 👉 @i_linux