From ceadf1b19df5f99e09943bde4b87be40ddf03737 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=BE=D0=BB=D0=B3=D0=B8=D0=B9=20=D0=90=D1=80=D1=82?= =?UTF-8?q?=D1=91=D0=BC?= Date: Mon, 6 May 2024 14:30:14 +0300 Subject: [PATCH] mod --- linux_usefull.md | 318 ++++++++++++++++++++++++++++------------------- 1 file changed, 191 insertions(+), 127 deletions(-) diff --git a/linux_usefull.md b/linux_usefull.md index 96954e6..f56d522 100644 --- a/linux_usefull.md +++ b/linux_usefull.md @@ -1,84 +1,89 @@ -## Linux useful +# Linux useful -###### top -[Текущая директория сервера в браузере по адресу `http://server_ip:8000/`](#tip001) -[Запустить графическое приложение через ssh соединение `-Y`](#tip002) -[Отобразить все группы пользователя](#tip003) -[SSH соединение через промежуточный хост](#tip004) -[SSH соединение без проверки подлинности ключа и его сохранения](#tip005) -[Изменить первичную группу пользователя в текщем сеансе](#tip006) -[Сохранить man в pdf](#tip007) -[Прервать выполнение команды через 5 секунд](#tip008) -[Инфо об ОС](#tip009) -[Выполнить команду несколько раз в цикле](#tip010) -[Конвертировать изоражения heic в jpg](#tip011) -[Конвертировать jpg в pdf](#tip012) -[получить UUID диска для монтирования](#tip013) -[Сброс пароля root](#tip014) -[Проверить доступность диапазона хостов](#tip015) -[Конвертировать pdf в png](#tip016) -[Узнать загрузку процессора определённым процессом](#tip017) -[Определить страну, город и др. детали по IP](#tip018) +- [Linux useful](#linux-useful) + - [Текущая директория сервера в браузере по адресу `http://server_ip:8000/`](#текущая-директория-сервера-в-браузере-по-адресу-httpserver_ip8000) + - [Запустить графическое приложение через ssh соединение `-Y`](#запустить-графическое-приложение-через-ssh-соединение--y) + - [Отобразить все группы пользователя\*\*](#отобразить-все-группы-пользователя) + - [SSH соединение через промежуточный хост\*\*](#ssh-соединение-через-промежуточный-хост) + - [SSH соединение без проверки подлинности ключа и его сохранения](#ssh-соединение-без-проверки-подлинности-ключа-и-его-сохранения) + - [Изменить первичную группу пользователя в текщем сеансе](#изменить-первичную-группу-пользователя-в-текщем-сеансе) + - [Сохранить man в pdf](#сохранить-man-в-pdf) + - [Прервать выполнение команды через 5 секунд](#прервать-выполнение-команды-через-5-секунд) + - [Инфо об ОС](#инфо-об-ос) + - [Выполнить команду несколько раз в цикле](#выполнить-команду-несколько-раз-в-цикле) + - [Конвертировать изоражения heic в jpg](#конвертировать-изоражения-heic-в-jpg) + - [Конвертировать jpg в pdf](#конвертировать-jpg-в-pdf) + - [получить UUID диска для монтирования](#получить-uuid-диска-для-монтирования) + - [Сброс пароля root](#сброс-пароля-root) + - [Проверить доступность диапазона хостов](#проверить-доступность-диапазона-хостов) + - [Конвертировать pdf в png](#конвертировать-pdf-в-png) + - [Узнать загрузку процессора определённым процессом](#узнать-загрузку-процессора-определённым-процессом) + - [Определить страну, город и др. детали по IP](#определить-страну-город-и-др-детали-по-ip) + - [Отобразить файл без комментариев и путых строк](#отобразить-файл-без-комментариев-и-путых-строк) *** -###### tip001 -:large_blue_circle: **Текущая директория сервера в браузере по адресу `http://server_ip:8000/`** +## Текущая директория сервера в браузере по адресу `http://server_ip:8000/` + ```bash python -m SimpleHTTPServer ``` -[вверх](#top) +[вверх](#linux-useful) *** -###### tip002 -:large_blue_circle: **Запустить графическое приложение через ssh соединение `-Y`** -*для текущей сессии* +## Запустить графическое приложение через ssh соединение `-Y` + +*для текущей сессии* + ```bash ssh -Y pi@server_ip ``` + *для всех подключений* + `ForwardX11 yes` в файле `/etc/ssh/ssh_config` -[вверх](#top) +[вверх](#linux-useful) *** -###### tip003 -:large_blue_circle: **Отобразить все группы пользователя** +## Отобразить все группы пользователя** + ```bash da2001@Metromint:~$ groups da2001 da2001 : da2001 adm cdrom sudo dip plugdev kvm lpadmin sambashare wireshark libvirt ``` -[вверх](#top) +[вверх](#linux-useful) *** -###### tip004 -:large_blue_circle: **SSH соединение через промежуточный хост** +## SSH соединение через промежуточный хост** + ```bash ssh -t pi@192.168.89.2 ssh da2001@192.168.1.8 ``` + *сначала будет запрошен пароль от 192.168.89.2, затем от 192.168.1.8* -[вверх](#top) +[вверх](#linux-useful) *** -###### tip005 -:large_blue_circle: **SSH соединение без проверки подлинности ключа и его сохранения** +## SSH соединение без проверки подлинности ключа и его сохранения + ```bash ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no admin@192.168.2.1 ``` -[вверх](#top) +[вверх](#linux-useful) *** -###### tip006 -:large_blue_circle: **Изменить первичную группу пользователя в текщем сеансе** +## Изменить первичную группу пользователя в текщем сеансе + ```bash [lisa@server1 ~]$ groups lisa account sales @@ -90,14 +95,15 @@ sales lisa account total 0 -rw-r--r--. 1 lisa sales 0 Feb 6 10:06 file1 ``` + *теперь все новые файлы будут принадлежать группе sales* -[вверх](#top) +[вверх](#linux-useful) *** -###### tip007 -:large_blue_circle: **Сохранить man в pdf** +## Сохранить man в pdf + ```bash man -t <программа> | ps2pdf - .pdf ``` @@ -106,22 +112,22 @@ man -t <программа> | ps2pdf - .pdf man -t tar | ps2pdf - tar_man.pdf ``` -[вверх](#top) +[вверх](#linux-useful) *** -###### tip008 -:large_blue_circle: **Прервать выполнение команды через 5 секунд** +## Прервать выполнение команды через 5 секунд + ```bash timeout 5s command ``` -[вверх](#top) +[вверх](#linux-useful) *** -###### tip009 -:large_blue_circle: **Инфо об ОС** +## Инфо об ОС + ```bash cat /etc/*release ``` @@ -162,12 +168,12 @@ da2001@Metromint:~$ neofetch ``` -[вверх](#top) +[вверх](#linux-useful) *** -###### tip010 -:large_blue_circle: **Выполнить команду несколько раз в цикле** +## Выполнить команду несколько раз в цикле + ```bash da2001@Metromint:~$ for i in {1..5}; do echo $i; done 1 @@ -175,75 +181,93 @@ da2001@Metromint:~$ for i in {1..5}; do echo $i; done 3 4 5 -``` +``` + *выполнение скрипта с параметрами в цикле* -```bash +```bash + for i in {1..20}; do ./wlt_start.py -c config_m716.cfg; done ``` -[вверх](#top) +[вверх](#linux-useful) *** -###### tip011 -:large_blue_circle: **Конвертировать изоражения heic в jpg** +## Конвертировать изоражения heic в jpg + ```bash sudo apt-get install libheif-examples ``` -*для конвертации одного изображения* -```bash + +*для конвертации одного изображения* + +```bash heif-convert IMG_1234.HEIC IMG_1234.jpg -``` -*для конвертации всех изображений в папке* -```bash +``` + +*для конвертации всех изображений в папке* + +```bash mkdir jpg for file in *.heic; do heif-convert $file ./jpg/${file/%.heic/.jpg}; done ``` -[вверх](#top) +[вверх](#linux-useful) *** -###### tip012 -:large_blue_circle: **Конвертировать jpg в pdf** -*необходим установленный ImageMagick* -```bash +## Конвертировать jpg в pdf + +*необходим установленный ImageMagick* + +```bash sudo apt install imagemagick -``` -*для конвертации одного изображения* -```bash +``` + +*для конвертации одного изображения* + +```bash convert image.jpg out.pdf -``` -*для конвертации нескольких изображений* -```bash +``` + +*для конвертации нескольких изображений* + +```bash + convert image1.jpg image2.jpg image3.jpg out.pdf -``` -***если в процессе конвертации будет получено сообщение об ошибке*** -```bash +``` + +***если в процессе конвертации будет получено сообщение об ошибке*** + +```bash convert: attempt to perform an operation not allowed by the security policy `PDF' @ error/constitute.c/IsCoderAuthorized/408. -``` +``` + в файле `/etc/ImageMagick-7/policy.xml` необходимо изменить директиву доступа *название папки ImageMagick-7 может отличаться в зависимости от установленной версии* между тегами `` и `` -добавить/отредактировать -```bash +добавить/отредактировать + +```bash ``` -[вверх](#top) +[вверх](#linux-useful) *** -###### tip013 -:large_blue_circle: **получить UUID диска для монтирования** +## получить UUID диска для монтирования + **Вариант 1** ```bash lsblk -n -o uuid /dev/sda1 -``` +``` + -n - не выводить заголовки -o - отображаемое поле -*таким образом, для раздела с ФС ext4, запись в fstab можно добавить таким образом* +*таким образом, для раздела с ФС ext4, запись в fstab можно добавить таким образом* + ```bash mkdir /mntdir @@ -252,82 +276,103 @@ sudo bash -c 'echo "UUID=$UUID /mntdir ext4 defaults 0 0" >> /etc/fstab' ``` **Вариант 2** + ```bash [root@server1 ~]# blkid -o export /dev/sda2 | grep '^UUID' UUID=d056212f-b1ea-4bc5-ba4e-99d036e5531e ``` + *таким образом, можно перенаправить вывод в `/etc/fstab` и руками дополнить параметры монтирования* + ```bash blkid -o export /dev/sda2 | grep '^UUID' >> /etc/fstab ``` -[вверх](#top) +[вверх](#linux-useful) *** - -###### tip014 -:large_blue_circle: **Сброс пароля root** +## Сброс пароля root **CentOS/RedHat Linux** + 1. В самом начале загрузки системы, когда появляется меню GRUB, необходимо нажать `e`, чтобы попасть в настройку загрузки 2. В строке загрузки ядра, которая начинается со слова `linux` в конец добавить `rd.break`, затем нажать Ctrl+x, для применения сделанных настроек и загрузки системы (внесенные изменения действуют только в текущей сессии загрузки) -3. После появления приглашения консоли необходимо получить доступ к образу системы +3. После появления приглашения консоли необходимо получить доступ к образу системы + ```bash mount -o remount,rw /sysroot -``` -4. Изменить корневой каталог -```bash +``` + +- Изменить корневой каталог + +```bash chroot /sysroot -``` -5. Теперь можно изменить пароль root +``` + +- Теперь можно изменить пароль root + ```bash passwd -``` -будет предложено ввести новый пароль дважды. -6. Поскольку на ранней стадии загрузки SELinux еще не был активирован, тип контекста в `/etc/shadow` будет перепутан. Если сейчас перезагрузиться, никто не сможет войти в систему. Поэтому необходимо убедиться, что тип контекста установлен правильно. Для этого на этом этапе нужно загрузить политику SELinux с помощью команды +``` + +будет предложено ввести новый пароль дважды. + +Поскольку на ранней стадии загрузки SELinux еще не был активирован, тип контекста в `/etc/shadow` будет перепутан. Если сейчас перезагрузиться, никто не сможет войти в систему. Поэтому необходимо убедиться, что тип контекста установлен правильно. Для этого на этом этапе нужно загрузить политику SELinux с помощью команды + ```bash load_policy -i -``` -7. Теперь нужно вручную установить правильный тип контекста в `/etc/shadow`. +``` + +- Теперь нужно вручную установить правильный тип контекста в `/etc/shadow`. + ```bash chcon -t shadow_t /etc/shadow -``` -**вместо 6,7 пунктов можно просто в корне создать файл `.autorelabel`** +``` + +**вместо 6,7 пунктов можно просто в корне создать файл `.autorelabel`** + ```bash touch /.autorelabel ``` -8. Всё, после перезагрузки, у root будет новый пароль. -*для перезагрузки в данном режиме необходимо дважды ввести `reboot -f` или Ctrl+d* +Всё, после перезагрузки, у root будет новый пароль. +*для перезагрузки в данном режиме необходимо дважды ввести `reboot -f` или Ctrl+d* + ```bash reboot -f ``` -**Debian** +**Debian** + 1. В самом начале загрузки системы, когда появляется меню GRUB, необходимо нажать `e`, чтобы попасть в настройку загрузки 2. В строке загрузки ядра, которая начинается со слова `linux` в конец добавить `rd.break`, затем нажать Ctrl+x, для применения сделанных настроек и загрузки системы (внесенные изменения действуют только в текущей сессии загрузки) -3. После появления приглашения консоли необходимо получить доступ к образу системы +3. После появления приглашения консоли необходимо получить доступ к образу системы + ```bash mount -o remount,rw / -``` -4. Теперь можно изменить пароль root +``` + +Теперь можно изменить пароль root + ```bash passwd -``` +``` + будет предложено ввести новый пароль дважды. -5. Всё, после перезагрузки, у root будет новый пароль. -*для перезагрузки в данном режиме необходимо дважды ввести `reboot -f` или Ctrl+d* +Всё, после перезагрузки, у root будет новый пароль. +*для перезагрузки в данном режиме необходимо дважды ввести `reboot -f` или Ctrl+d* + ```bash reboot -f ``` -[вверх](#top) +[вверх](#linux-useful) *** -###### tip015 -:large_blue_circle: **Проверить доступность диапазона хостов** +## Проверить доступность диапазона хостов + ```bash for i in {10..13}; do ping -c 2 192.168.1.$i > /dev/null && echo 192.168.1.$i - доступен || echo 192.168.1.$i - НЕ доступен; done ``` @@ -340,20 +385,23 @@ for i in {10..13}; do ping -c 2 192.168.1.$i > /dev/null && echo 192.168.1.$i - 192.168.1.13 - НЕ доступен ``` -[вверх](#top) +[вверх](#linux-useful) *** -###### tip016 -:large_blue_circle: **Конвертировать pdf в png** +## Конвертировать pdf в png + ```bash pdftoppm input.pdf outputname -png ``` + *в результате каждая страница в PDF будет сохранена в формате outputname-01.png, где 01 будет номером страницы* -**Конвертировать одну страницу или диапазон** +**Конвертировать одну страницу или диапазон** + ```bash pdftoppm input.pdf outputname -png -f {page} -singlefile -``` +``` + *Измените `{page}` на номер страницы. Он проиндексирован как 1, поэтому `-f 1` будет первой страницей.* *Если вы хотите работать с диапазоном страниц, вы также можете указать номер для флага `-l` (последняя страница), поэтому при использовании `-f 1 -l 30` будут указаны страницы от 1 до 30.* @@ -361,46 +409,54 @@ pdftoppm input.pdf outputname -png -f {page} -singlefile **Указать разрешение преобразованного изображения** *Разрешение по умолчанию для этой команды составляет 150 точек на дюйм.* -*Чтобы увеличить разрешение преобразованного PDF-файла, добавьте параметры `-rx` {разрешение} и `-ry` {разрешение}.* +*Чтобы увеличить разрешение преобразованного PDF-файла, добавьте параметры `-rx` {разрешение} и `-ry` {разрешение}.* + ```bash pdftoppm input.pdf outputname -png -rx 300 -ry 300 ``` -[вверх](#top) +[вверх](#linux-useful) *** -###### tip017 -:large_blue_circle: **Узнать загрузку процессора определённым процессом** +## Узнать загрузку процессора определённым процессом + **ps** *по имени процесса* + ```bash ps -C iperf -o %cpu= ``` + *по номеру процесса* + ```bash ps -p 23635 -o %cpu= ``` + или + ```bash ps -p $(pgrep iperf) -o %cpu= ``` -**top** + +**top** + ```bash top -b -n 2 -d 0.2 -p PID_ID | tail -1 | awk '{print $9}' ``` -**Нагрузить процессор для проверки** + +**Нагрузить процессор для проверки** + ```bash cat /dev/zero > /dev/null ``` -[вверх](#top) +[вверх](#linux-useful) *** -###### tip018 - -:large_blue_circle: **Определить страну, город и др. детали по IP** +## Определить страну, город и др. детали по IP ```bash curl -s "https://ifconfig.co/json?ip=$1" | jq -r '.country, .city, .hostname, .asn_org' @@ -414,4 +470,12 @@ getip() { } ``` -[вверх](#top) +[вверх](#linux-useful) + +## Отобразить файл без комментариев и путых строк + +```bash +grep -vE '(^[[:space:]]*([#;!].*)?$)' file +``` + +[вверх](#linux-useful)