Админские угодья
1.46K subscribers
458 photos
40 videos
220 links
Всё для системного администратора

По всем вопросам : @Sofiia_artamonova
Download Telegram
Полезные команды Linux. Работа с RPM пакетами ( Fedora, Red Hat и им подобные дистрибутивы )

# rpm -e [ package ]
Удалить пакет package

# rpm -qa | grep httpd
Вывести список установленных в системе пакетов и отобрать, содержащие в своем имени httpd

# rpm -qa
Вывести список всех установленных в системе пакетов

# rpm -qi [ package ]
Вывести информацию о пакете package

# rpm -ivh [package.rpm]
Установить пакет с выводом сообщений и прогресс-бара

# rpm -U [package.rpm]
Обновить пакет без изменений конфигурационных файлов, в случае отсутствия пакета, он будет установлен

# rpm -ivh --nodeeps [package.rpm]
Установить пакет с выводом сообщений и прогресс-бара без контроля зависимостей

# rpm -F [package.rpm]
Обновить пакет только если он установлен

# rpm -q [package] --whatprovides
Список предоставляемой функциональности

# rpm -q [package] --changelog
Вывести историю ревизий пакета

# rpm -q [package] --scripts
Отобразит скрипты, запускаемые при установке/удалении пакета

# rpm -qf /etc/httpd/conf/httpd.conf
Проверить какому пакету принадлежит указанный файл. Указывать следует полный путь и имя файла

# rpm -qg "System Environment/Daemons"
Отобразить пакеты входящие в группу пакетов ( fedora, redhat )

# rpm -qc [package]
Вывести список конфигурационных файлов, входящих в пакет

# rpm -ql [package]
Вывести список файлов, входящих в пакет

# rpm -q [package] --whatrequires
Вывести список пакетов, необходимых для установки конкретного пакета по зависимостям

# rpm -qp [package.rpm] -l
Отображает список файлов, входящих в пакет, но ещё не установленных в систему

# rpm -Va
Проверить содержимое всех пакеты установленные в систему. Выполняйте с осторожностью!

# rpm -ivh /usr/src/redhat/RPMS/`arch`/[package.rpm]
Установить пакет, собранный из исходных кодов

# rpm -Vp [package.rpm]
Проверить пакет, который ещё не установлен в систему

# rpm2cpio [package.rpm] | cpio --extract --make-directories *bin*
Извлечь из пакета файлы содержащие в своём имени bin

# rpm --import /media/cdrom/RPM-GPG-KEY
Импортировать публичный ключ цифровой подписи

# rpm --checksig [package.rpm]
Проверит подпись пакета

# rpm -qa gpg-pubkey
Проверить целостность установленного содержимого пакета

# rpm -V [package]
Проверить размер, полномочия, тип, владельца, группу, MD5-сумму и дату последнего изменения пакета

# rpmbuild --rebuild [package.src.rpm]
Собрать пакет из исходных кодов
Команда nslookup, получение информации от DNS

Команда nslookup — инструмент сетевого администрирования для запросов в доменной системе имен (DNS) с целью получения доменного имени, IP-адреса или другой информации из записей DNS.

Кроме того, эта команда используется для поиска и устранения проблем с DNS. В данном руководстве мы рассмотрим наиболее типичные примеры ее применения.

Команда nslookup может работать в интерактивном и неинтерактивном режимах. Интерактивный режим позволяет пользователю в режиме диалога отправлять DNS-серверу запросы о различных узлах и доменах. Неинтерактивный режим позволяет отправить один запрос об одном узле или домене.

https://telegra.ph/Komanda-nslookup-poluchenie-informacii-ot-DNS-09-26
👍3
Шпаргалка по iptables в Linux
This media is not supported in your browser
VIEW IN TELEGRAM
Linux Kernel Manager and Activity Monitor 🐧💻

Утилита отображает информацию о текущем состоянии ядра, выводит данные о загруженных в ядро модулях и позволяет работать с ними.

https://github.com/orhun/kmon
1
Если у вас возникли проблемы с чтением каталогов в переменной $PATH , вы можете использовать команду tr, чтобы заменить двоеточия символами новой строки, чтобы каждый каталог отображался на отдельной строке.

$ echo $PATH | tr ":" "\n"
1
PowerShell скрипт смены пароля в AD у всех пользователей. Меняет всем пароль в AD и ставит галку о смене при первом входе.

Import-Module ActiveDirectory

$users = Get-ADUser -Filter * -SearchBase "OU=Пользователи,DC=flammlin,DC=local"
foreach ($user in $users)
{
$password = ConvertTo-SecureString -String "Qwerty123" -AsPlainText –Force
Set-ADAccountPassword -Identity $user -NewPassword $password -Reset -PassThru | Set-ADuser -ChangePasswordAtLogon $True
}
2
Наглядное руководство по SSH-туннелям

Автор статьи рассматривает практические сценарии и примеры организации SSH-туннелей. А для более наглядного объяснения того, как это работает, графически показывает потоки трафика.

Туннели SSH — это зашифрованные TCP-соединения между клиентами и серверами SSH. Трафик входит с одной стороны туннеля и прозрачно выходит с другой. Изначально этот термин относился к туннелям на виртуальных сетевых интерфейсах TUN/TAP, однако сейчас так обычно называют проброс портов SSH.

https://habr.com/ru/companies/flant/articles/691388/

original https://robotmoon.com/ssh-tunnels/
1
This media is not supported in your browser
VIEW IN TELEGRAM
Yoink.vim

Плагин Vim, который поддерживает историю yank для переключения между ними при вставке.

https://github.com/svermeulen/vim-yoink
Создание уведомлений и напоминаний на рабочем столе из Linux терминала

Иногда полезно получить визуальную обратную связь от скрипта. Например, когда завершается работа скрипта или задание cron, или, когда долгоиграющая сборка терпит неудачу. Или, когда во время выполнения скрипта возникает срочная проблема.

https://letsdebug.it/post/30-linux-desktop-notifications/
1
Libtree

Утилита, позволяющая получить список разделяемых библиотек (shared libraries) в виде дерева, либо в виде путей до этих библиотек в системе.


1. Скачиваем libtree:

$ wget https://github.com/haampie/libtree/releases/download/v3.0.1/libtree_x86_64 -O libtree
$ chmod +x libtree


2. Проверяем нужный нам файл:

$ ./libtree /bin/nano
/bin/nano
├── libmagic.so.1 [default path]
│ └── libz.so.1 [default path]
├── libtinfo.so.6 [default path]
└── libncursesw.so.6 [default path]
└── libtinfo.so.6 [default path]


При необходимости углубиться и получить зависимости для отображаемых библиотек просто добавляем -v, -vv или -vvv соответственно.

$ ./libtree -vvv /bin/nano
/bin/nano
├── libmagic.so.1 [default path]
│ ├── libz.so.1 [default path]
│ │ └── libc.so.6 [default path]
│ │ └── ld-linux-x86-64.so.2 [default path]
│ └── libc.so.6 [default path]
│ └── ld-linux-x86-64.so.2 [default path]
├── libc.so.6 [default path]
│ └── ld-linux-x86-64.so.2 [default path]
├── libtinfo.so.6 [default path]
│ └── libc.so.6 [default path]
│ └── ld-linux-x86-64.so.2 [default path]
└── libncursesw.so.6 [default path]
├── libtinfo.so.6 [default path]
│ └── libc.so.6 [default path]
│ └── ld-linux-x86-64.so.2 [default path]
└── libc.so.6 [default path]
└── ld-linux-x86-64.so.2 [default path]


Отобразить полный путь до файла на сервере можно с помощью опции -p:

$ ./libtree -p -vvv /bin/ping
/bin/ping
├── /lib64/libcap.so.2 [default path]
│ └── /lib64/libc.so.6 [default path]
│ └── /lib64/ld-linux-x86-64.so.2 [default path]
├── /lib64/libc.so.6 [default path]
│ └── /lib64/ld-linux-x86-64.so.2 [default path]
└── /lib64/libidn2.so.0 [default path]
├── /lib64/libunistring.so.2 [default path]
│ └── /lib64/libc.so.6 [default path]
│ └── /lib64/ld-linux-x86-64.so.2 [default path]
└── /lib64/libc.so.6 [default path]
└── /lib64/ld-linux-x86-64.so.2 [default path]


По умолчанию, информация о некоторых библиотеках не выводится в libtree. Подробнее об этом в выводе команды:

$ ./libtree --help


https://github.com/haampie/libtree
1
Как отлаживать 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";
👍31
Mikrotik Manual:System/Backup

Функция резервного копирования в RouterOS позволяет сохранить текущую конфигурацию вашего устройства, которую затем можно восстановить на том же или другом устройстве (с тем же названием/номером модели). Это очень удобно, так как позволяет легко восстановить конфигурацию устройства или повторно применить ту же конфигурацию на резервном устройстве. Файл резервного копирования системы также содержит MAC-адреса устройства, которые также восстанавливаются при загрузке файла резервного копирования.

❗️Предупреждение: если на маршрутизаторе установлены The Dude и user-manager, то системная резервная копия не будет содержать конфигурацию этих сервисов, поэтому необходимо дополнительно позаботиться о сохранении их конфигурации. Используйте предоставленные инструменты для сохранения/экспорта конфигурации, если хотите её сохранить.

📌Примечание: системные резервные копии содержат конфиденциальную информацию о вашем устройстве и его настройках, поэтому всегда рассматривайте возможность шифрования файла резервной копии и хранения его в безопасном месте.


Сохранение резервной копии

Sub-menu: /system backup save

dont-encrypt (yes | no; Default: no) Отключить шифрование файла резервной копии. Обратите внимание, что начиная с версии RouterOS v6.43, без указанного пароля файл резервной копии не будет зашифрован.

encryption (aes-sha256 | rc4; Default: aes-sha256) Алгоритм шифрования, используемый для шифрования файла резервной копии. Обратите внимание, что RC4 не считается безопасным методом шифрования и доступен только для обеспечения совместимости со старыми версиями RouterOS.

name (string; Default: [identity]-[date]-[time].backup) Имя файла для резервной копии.

password (string; Default: ) Пароль для зашифрованного файла резервной копии. Обратите внимание, что начиная с версии RouterOS v6.43, без указанного пароля файл резервной копии не будет зашифрован.



❗️Предупреждение: если пароль не указан в версиях RouterOS, предшествующих v6.43, то файл резервной копии будет зашифрован паролем текущего пользователя, за исключением случаев, когда используется свойство dont-encrypted или пароль текущего пользователя пуст.

Файл резервной копии будет доступен в меню /file и его можно скачать с помощью FTP или через Winbox.


Загрузка резервной копии

Sub-menu: /system backup load

name (string; Default: ) Имя файла резервной копии.

password (string; Default: ) Пароль для зашифрованного файла резервной копии.


Пример

Чтобы сохранить конфигурацию маршрутизатора в файле test, введите пароль:


[admin@MikroTik] > /system backup save name=test password=<YOUR_PASSWORD>
Configuration backup saved
[admin@MikroTik] > /system backup


Чтобы просмотреть файлы, хранящиеся на маршрутизаторе:


[admin@MikroTik] > /file print
# NAME TYPE SIZE CREATION-TIME
0 test.backup backup 12567 sep/08/2018 21:07:50
[admin@MikroTik] >


Чтобы загрузить сохраненный файл резервной копии, выполните тест:


[admin@MikroTik] > /system backup load name=test
password: <YOUR_PASSWORD>
Restore and reboot? [y/N]:
y
Restoring system configuration
System configuration restored, rebooting now


Облачное резервное копирование
Начиная с версии RouterOS v6.44, можно безопасно хранить файл резервной копии вашего устройства на облачных серверах MikroTik.
👍31
Копируем структуру директорий в Linux

В этой статье мы расскажем как в две команды скопировать структуру директорий без файлов через командрую строку Linux.

Сначала необходимо перейти в директорию, где находятся нужная структура
# cd /dir1

Затем выполняем команду, которая находит директории и сохраняет пути к ни в файл
# find . -type d > dirs.txt

Теперь необходимо перенести этот файл в директорию, где мы хотим воссоздать структуру
# mv ./dirs.txt /dir2

Переходим туда
# cd /dir2

И используя xargs читаем из файла пути и создаем по ним структуру директорий
# xargs mkdir -p < dirs.txt
2
Команда curl. Синтаксис. Примеры использования

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

https://telegra.ph/Komanda-curl-Sintaksis-Primery-ispolzovaniya-09-26
👩‍💻 Шпаргалка по PowerShell / Краткий справочник

https://gist.github.com/pcgeek86/336e08d1a09e3dd1a8f0a30a9fe61c8a
Please open Telegram to view this post
VIEW IN TELEGRAM
2
Изменение порта для подключения по SSH

Чтобы изменить порт для подключения по SSH необходимо отредактировать файл конфигурации SSH демона. Откроем данный файл текстовым редактором:
vim /etc/ssh/sshd_config
Найдем строку Port 22 и изменим её, указав новый порт для подключения. Например Port 25022.

Выходим, сохраняем файл и перезагружаем SSH следующей командой:
service sshd restart

После перезапуска SSH, он станет доступен по новому порту, а текущая сессия на старом останется активной. Поэтому не отключаясь для проверки попробуем подключится по новому порту - если не пускает, то возможно в системе работает фаервол и нужно в нем разрешить новый порт, например в iptables это делается так (где 25022 наш новый порт):
iptables -A INPUT -p tcp --dport 25022 -j ACCEPT

Можно разрешить средствами iptables подключение к SSH только с указанного диапазона IP адресов:
iptables -A INPUT -d 192.168.0.0/24 -p tcp --dport 25022 -j ACCEPT

где 192.168.0.0/24 - IP адрес сети и маска сети, с которых разрешено подключение по SSH. Далее проверяем подключение по SSH на новом порту ssh <user>@<ip> -p <port> - если подключение выполняется, то можем удалить правило iptables подключения по SSH по старому порту:
iptables -D INPUT -p tcp --dport 22 -j ACCEPT

Посмотреть в системе на каком порту и на каких сетевых интерфейсах работает SSH можно следующей командой:
netstat -tulpan | grep ssh
👍3
Общие сетевые протоколы
👍71
Определение прошивки и версии драйвера устройств в ESXi

Очень часто у администратора vSphere возникает потребность проверить оборудование физического сервера (да и сам сервер) на предмет совместимости с определенной версией ESXi, удостовериться в совместимости версии Firmware определенного компонента, например сетевой карты с версией драйвера, присутствующего в ESXi ну или просто найти подходящий драйвер.

https://telegra.ph/Opredelenie-proshivki-i-versii-drajvera-ustrojstv-v-ESXi-07-03
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
jless — CLI-просмотрщик JSON с подсветкой синтаксиса 🔧

https://jless.io/
Автоматизация AWS SSO с помощью Terraform

Использование Terraform для автоматизации установки и настройки ресурсов SSO, упрощения управления пользователями и повышения уровня безопасности.

https://medium.com/cloud-native-daily/automate-aws-sso-using-terraform-2f219a45c16f
2
Работа с архивами

Создать .tar.gz:
tar -czvf file.tar.gz /full/path — создать .tar.gz (архив)
tar -cjvf file.tar.bz2 /full/path — создать .tar.bz2 (архив)

Распаковать .tar:
tar -xvf file.tar.gz

Распаковать gz:
gunzip yourfile.gz

Распаковать многотомный архив:
7za x arch.7z.001

Получить листинг файлов в архиве:
tar -tf <path_to_tarfile>

Извлечь конкретный файл из архива:
tar -xf <path_to_tarfile> [<file_1_in_archive> <file_2_in_archive> ..]

Скопировать файл на сервер:
scp -P 12322 file.tar [email protected]:/home/user
3