master
Долгий Артём 2024-05-06 14:30:14 +03:00
parent 5eca6dd649
commit ceadf1b19d
1 changed files with 191 additions and 127 deletions

View File

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