2024-05-06 14:30:14 +03:00
# Linux useful
- [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 )
- [Отобразить файл без комментариев и путых строк ](#отобразить-файл-без-комментариев-и-путых-строк )
2024-06-12 10:53:43 +03:00
- [Изменить консольный редактор по-умолчанию ](#изменить-консольный-редактор-по-умолчанию )
2024-06-12 10:58:00 +03:00
- [Перенос строк в nano ](#перенос-строк-в-nano )
2024-11-20 13:56:25 +03:00
- [Генератор паролей ](#генератор-паролей )
2022-05-07 22:12:11 +03:00
***
2024-05-06 14:30:14 +03:00
## Текущая директория сервера в браузере по адресу `http://server_ip:8000/`
2022-05-07 22:12:11 +03:00
```bash
python -m SimpleHTTPServer
```
2024-05-06 14:30:14 +03:00
[вверх ](#linux-useful )
2022-05-07 22:12:11 +03:00
***
2024-05-06 14:30:14 +03:00
## Запустить графическое приложение через ssh соединение `-Y`
*для текущей сессии*
2022-05-07 22:12:11 +03:00
```bash
ssh -Y pi@server_ip
```
2024-05-06 14:30:14 +03:00
2022-05-07 22:12:11 +03:00
*для всех подключений*
2024-05-06 14:30:14 +03:00
2022-05-07 22:12:11 +03:00
`ForwardX11 yes` в файле `/etc/ssh/ssh_config`
2024-05-06 14:30:14 +03:00
[вверх ](#linux-useful )
2022-05-07 22:12:11 +03:00
***
2024-05-06 14:30:14 +03:00
## Отобразить все группы пользователя**
2022-05-07 22:12:11 +03:00
```bash
da2001@Metromint:~$ groups da2001
da2001 : da2001 adm cdrom sudo dip plugdev kvm lpadmin sambashare wireshark libvirt
```
2024-05-06 14:30:14 +03:00
[вверх ](#linux-useful )
2022-05-07 22:12:11 +03:00
***
2024-05-06 14:30:14 +03:00
## SSH соединение через промежуточный хост**
2022-05-07 22:12:11 +03:00
```bash
ssh -t pi@192.168.89.2 ssh da2001@192.168.1.8
```
2024-05-06 14:30:14 +03:00
2022-05-07 22:12:11 +03:00
*сначала будет запрошен пароль от 192.168.89.2, затем от 192.168.1.8*
2024-05-06 14:30:14 +03:00
[вверх ](#linux-useful )
2022-05-07 22:12:11 +03:00
***
2024-05-06 14:30:14 +03:00
## SSH соединение без проверки подлинности ключа и е г о сохранения
2022-05-07 22:12:11 +03:00
```bash
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no admin@192.168.2.1
```
2024-05-06 14:30:14 +03:00
[вверх ](#linux-useful )
2022-05-07 22:12:11 +03:00
***
2024-05-06 14:30:14 +03:00
## Изменить первичную группу пользователя в текщем сеансе
2022-05-07 22:12:11 +03:00
```bash
[lisa@server1 ~]$ groups
lisa account sales
[lisa@server1 ~]$ newgrp sales
[lisa@server1 ~]$ groups
sales lisa account
[lisa@server1 ~]$ touch file1
[lisa@server1 ~]$ ls -l
total 0
-rw-r--r--. 1 lisa sales 0 Feb 6 10:06 file1
```
2024-05-06 14:30:14 +03:00
2022-05-07 22:12:11 +03:00
*теперь все новые файлы будут принадлежать группе sales*
2024-05-06 14:30:14 +03:00
[вверх ](#linux-useful )
2022-05-07 22:12:11 +03:00
***
2024-05-06 14:30:14 +03:00
## Сохранить man в pdf
2022-05-07 22:12:11 +03:00
```bash
man -t < программа> | ps2pdf - < filename > .pdf
```
```bash
man -t tar | ps2pdf - tar_man.pdf
```
2024-05-06 14:30:14 +03:00
[вверх ](#linux-useful )
2022-05-07 22:12:11 +03:00
***
2024-05-06 14:30:14 +03:00
## Прервать выполнение команды через 5 секунд
2022-05-07 22:12:11 +03:00
```bash
timeout 5s command
```
2024-05-06 14:30:14 +03:00
[вверх ](#linux-useful )
2022-05-07 22:12:11 +03:00
***
2024-05-06 14:30:14 +03:00
## Инфо о б О С
2022-05-07 22:12:11 +03:00
```bash
cat /etc/*release
```
```bash
cat /etc/issue
```
```bash
uname -a
```
```bash
cat /etc/lsb-release
```
```bash
da2001@Metromint:~$ neofetch
...-:::::-... da2001@Metromint
.-MMMMMMMMMMMMMMM-. ----------------
.-MMMM`..-:::::::-..`MMMM-. OS: Linux Mint 20.1 x86_64
.:MMMM.:MMMMMMMMMMMMMMM:.MMMM:. Host: VivoBook_ASUSLaptop X570DD_M570DD 1.0
-MMM-M---MMMMMMMMMMMMMMMMMMM.MMM- Kernel: 5.8.0-59-generic
`:MMM:MM` :MMMM:....::-...-MMMM:MMM:` Uptime: 1 day, 1 hour, 41 mins
:MMM:MMM` :MM:` `` `` `:MMM:MMM: Packages: 2750 (dpkg)
.MMM.MMMM` :MM. -MM. .MM- `MMMM.MMM. Shell: bash 5.0.17
:MMM:MMMM` :MM. -MM- .MM: `MMMM-MMM: Resolution: 1920x1080
:MMM:MMMM` :MM. -MM- .MM: `MMMM:MMM: DE: Cinnamon
:MMM:MMMM` :MM. -MM- .MM: `MMMM-MMM: WM: Mutter (Muffin)
.MMM.MMMM` :MM:--:MM:--:MM: `MMMM.MMM. WM Theme: Mint-Y-Dark (Mint-Y-Dark)
:MMM:MMM- `-MMMMMMMMMMMM-` -MMM-MMM: Theme: Mint-Y-Darker [GTK2/3]
:MMM:MMM:` `:MMM:MMM: Icons: Papirus-Dark [GTK2/3]
.MMM.MMMM:--------------:MMMM.MMM. Terminal: gnome-terminal
'-MMMM.-MMMMMMMMMMMMMMM-.MMMM-' CPU: AMD Ryzen 5 3500U with Radeon Vega Mobile Gfx (8) @ 2.100GHz
'.-MMMM``--:::::--``MMMM-.' GPU: NVIDIA GeForce GTX 1050 Mobile
'-MMMMMMMMMMMMM-' GPU: AMD ATI 05:00.0 Picasso
``-:::::-`` Memory: 4924MiB / 5952MiB
```
2024-05-06 14:30:14 +03:00
[вверх ](#linux-useful )
2022-05-07 22:12:11 +03:00
***
2024-05-06 14:30:14 +03:00
## Выполнить команду несколько раз в цикле
2022-05-07 22:12:11 +03:00
```bash
da2001@Metromint:~$ for i in {1..5}; do echo $i; done
1
2
3
4
5
2024-05-06 14:30:14 +03:00
```
2022-05-07 22:12:11 +03:00
*выполнение скрипта с параметрами в цикле*
2024-05-06 14:30:14 +03:00
```bash
2022-05-07 22:12:11 +03:00
for i in {1..20}; do ./wlt_start.py -c config_m716.cfg; done
```
2024-05-06 14:30:14 +03:00
[вверх ](#linux-useful )
2022-05-07 22:12:11 +03:00
***
2024-05-06 14:30:14 +03:00
## Конвертировать изоражения heic в jpg
2022-05-07 22:12:11 +03:00
```bash
sudo apt-get install libheif-examples
```
2024-05-06 14:30:14 +03:00
*для конвертации одного изображения*
```bash
2022-05-07 22:12:11 +03:00
heif-convert IMG_1234.HEIC IMG_1234.jpg
2024-05-06 14:30:14 +03:00
```
*для конвертации всех изображений в папке*
```bash
2022-05-07 22:12:11 +03:00
mkdir jpg
for file in *.heic; do heif-convert $file ./jpg/${file/%.heic/.jpg}; done
```
2024-05-06 14:30:14 +03:00
[вверх ](#linux-useful )
2022-05-07 22:12:11 +03:00
***
2024-05-06 14:30:14 +03:00
## Конвертировать jpg в pdf
*необходим установленный ImageMagick*
```bash
2022-05-07 22:12:11 +03:00
sudo apt install imagemagick
2024-05-06 14:30:14 +03:00
```
*для конвертации одного изображения*
```bash
2022-05-07 22:12:11 +03:00
convert image.jpg out.pdf
2024-05-06 14:30:14 +03:00
```
*для конвертации нескольких изображений*
```bash
2022-05-07 22:12:11 +03:00
convert image1.jpg image2.jpg image3.jpg out.pdf
2024-05-06 14:30:14 +03:00
```
***если в процессе конвертации будет получено сообщение о б ошибке***
```bash
2022-05-07 22:12:11 +03:00
convert: attempt to perform an operation not allowed by the security policy `PDF' @ error/constitute.c/IsCoderAuthorized/408.
2024-05-06 14:30:14 +03:00
```
2022-05-07 22:12:11 +03:00
в файле `/etc/ImageMagick-7/policy.xml` необходимо изменить директиву доступа
*название папки ImageMagick-7 может отличаться в зависимости от установленной версии*
между тегами `<policymap>` и `</policymap>`
2024-05-06 14:30:14 +03:00
добавить/отредактировать
```bash
2022-05-07 22:12:11 +03:00
< policy domain = "coder" rights = "read | write" pattern = "PDF" / >
```
2024-05-06 14:30:14 +03:00
[вверх ](#linux-useful )
2022-05-07 22:12:11 +03:00
***
2024-05-06 14:30:14 +03:00
## получить UUID диска для монтирования
2022-05-07 22:12:11 +03:00
**Вариант 1**
```bash
lsblk -n -o uuid /dev/sda1
2024-05-06 14:30:14 +03:00
```
2022-05-07 22:12:11 +03:00
-n - не выводить заголовки
-o - отображаемое поле
2024-05-06 14:30:14 +03:00
*таким образом, для раздела с ФС ext4, запись в fstab можно добавить таким образом*
2022-05-07 22:12:11 +03:00
```bash
mkdir /mntdir
UUID=`lsblk -n -o uuid /dev/sda1`
sudo bash -c 'echo "UUID=$UUID /mntdir ext4 defaults 0 0" >> /etc/fstab'
```
**Вариант 2**
2024-05-06 14:30:14 +03:00
2022-05-07 22:12:11 +03:00
```bash
[root@server1 ~]# blkid -o export /dev/sda2 | grep '^UUID'
UUID=d056212f-b1ea-4bc5-ba4e-99d036e5531e
```
2024-05-06 14:30:14 +03:00
2022-05-07 22:12:11 +03:00
*таким образом, можно перенаправить вывод в `/etc/fstab` и руками дополнить параметры монтирования*
2024-05-06 14:30:14 +03:00
2022-05-07 22:12:11 +03:00
```bash
blkid -o export /dev/sda2 | grep '^UUID' >> /etc/fstab
```
2024-05-06 14:30:14 +03:00
[вверх ](#linux-useful )
2022-05-07 22:12:11 +03:00
***
2024-05-06 14:30:14 +03:00
## С б р о с пароля root
2022-05-07 22:12:11 +03:00
**CentOS/RedHat Linux**
2024-05-06 14:30:14 +03:00
2022-05-07 22:12:11 +03:00
1. В самом начале загрузки системы, когда появляется меню GRUB, необходимо нажать `e` , чтобы попасть в настройку загрузки
2. В строке загрузки ядра, которая начинается с о слова `linux` в конец добавить `rd.break` , затем нажать Ctrl+x, для применения сделанных настроек и загрузки системы (внесенные изменения действуют только в текущей сессии загрузки)
2024-05-06 14:30:14 +03:00
3. После появления приглашения консоли необходимо получить доступ к образу системы
2022-05-07 22:12:11 +03:00
```bash
mount -o remount,rw /sysroot
2024-05-06 14:30:14 +03:00
```
- Изменить корневой каталог
```bash
2022-05-07 22:12:11 +03:00
chroot /sysroot
2024-05-06 14:30:14 +03:00
```
- Теперь можно изменить пароль root
2022-05-07 22:12:11 +03:00
```bash
passwd
2024-05-06 14:30:14 +03:00
```
будет предложено ввести новый пароль дважды.
Поскольку на ранней стадии загрузки SELinux еще не был активирован, тип контекста в `/etc/shadow` будет перепутан. Если сейчас перезагрузиться, никто не сможет войти в систему. Поэтому необходимо убедиться, что тип контекста установлен правильно. Для этого на этом этапе нужно загрузить политику SELinux с помощью команды
2022-05-07 22:12:11 +03:00
```bash
load_policy -i
2024-05-06 14:30:14 +03:00
```
- Теперь нужно вручную установить правильный тип контекста в `/etc/shadow` .
2022-05-07 22:12:11 +03:00
```bash
chcon -t shadow_t /etc/shadow
2024-05-06 14:30:14 +03:00
```
**вместо 6,7 пунктов можно просто в корне создать файл `.autorelabel` **
2022-05-07 22:12:11 +03:00
```bash
touch /.autorelabel
```
2024-05-06 14:30:14 +03:00
Всё, после перезагрузки, у root будет новый пароль.
*для перезагрузки в данном режиме необходимо дважды ввести `reboot -f` или Ctrl+d*
2022-05-07 22:12:11 +03:00
```bash
reboot -f
```
2024-05-06 14:30:14 +03:00
**Debian**
2022-05-07 22:12:11 +03:00
1. В самом начале загрузки системы, когда появляется меню GRUB, необходимо нажать `e` , чтобы попасть в настройку загрузки
2. В строке загрузки ядра, которая начинается с о слова `linux` в конец добавить `rd.break` , затем нажать Ctrl+x, для применения сделанных настроек и загрузки системы (внесенные изменения действуют только в текущей сессии загрузки)
2024-05-06 14:30:14 +03:00
3. После появления приглашения консоли необходимо получить доступ к образу системы
2022-05-07 22:12:11 +03:00
```bash
mount -o remount,rw /
2024-05-06 14:30:14 +03:00
```
Теперь можно изменить пароль root
2022-05-07 22:12:11 +03:00
```bash
passwd
2024-05-06 14:30:14 +03:00
```
2022-05-07 22:12:11 +03:00
будет предложено ввести новый пароль дважды.
2024-05-06 14:30:14 +03:00
Всё, после перезагрузки, у root будет новый пароль.
*для перезагрузки в данном режиме необходимо дважды ввести `reboot -f` или Ctrl+d*
2022-05-07 22:12:11 +03:00
```bash
reboot -f
```
2024-05-06 14:30:14 +03:00
[вверх ](#linux-useful )
2022-05-07 22:12:11 +03:00
***
2024-05-06 14:30:14 +03:00
## Проверить доступность диапазона хостов
2022-05-07 22:12:11 +03:00
```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
```
```bash
[da2001@co1 ~]$ 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
192.168.1.10 - доступен
192.168.1.11 - доступен
192.168.1.12 - доступен
192.168.1.13 - Н Е доступен
```
2024-05-06 14:30:14 +03:00
[вверх ](#linux-useful )
2022-05-07 22:12:11 +03:00
***
2024-05-06 14:30:14 +03:00
## Конвертировать pdf в png
2022-05-07 22:12:11 +03:00
```bash
pdftoppm input.pdf outputname -png
```
2024-05-06 14:30:14 +03:00
2022-05-07 22:12:11 +03:00
*в результате каждая страница в PDF будет сохранена в формате outputname-01.png, где 01 будет номером страницы*
2024-05-06 14:30:14 +03:00
**Конвертировать одну страницу или диапазон**
2022-05-07 22:12:11 +03:00
```bash
pdftoppm input.pdf outputname -png -f {page} -singlefile
2024-05-06 14:30:14 +03:00
```
2022-05-07 22:12:11 +03:00
*Измените `{page}` на номер страницы. Он проиндексирован как 1, поэтому `-f 1` будет первой страницей.*
*Если вы хотите работать с диапазоном страниц, вы также можете указать номер для флага `-l` (последняя страница), поэтому при использовании `-f 1 -l 30` будут указаны страницы от 1 до 30.*
**Указать разрешение преобразованного изображения**
*Разрешение по умолчанию для этой команды составляет 150 точек на дюйм.*
2024-05-06 14:30:14 +03:00
*Чтобы увеличить разрешение преобразованного PDF-файла, добавьте параметры `-rx` {разрешение} и `-ry` {разрешение}.*
2022-05-07 22:12:11 +03:00
```bash
pdftoppm input.pdf outputname -png -rx 300 -ry 300
```
2024-05-06 14:30:14 +03:00
[вверх ](#linux-useful )
2022-05-07 22:12:11 +03:00
***
2024-05-06 14:30:14 +03:00
## Узнать загрузку процессора определённым процессом
2022-05-07 22:12:11 +03:00
**ps**
*по имени процесса*
2024-05-06 14:30:14 +03:00
2022-05-07 22:12:11 +03:00
```bash
ps -C iperf -o %cpu=
```
2024-05-06 14:30:14 +03:00
2022-05-07 22:12:11 +03:00
*по номеру процесса*
2024-05-06 14:30:14 +03:00
2022-05-07 22:12:11 +03:00
```bash
ps -p 23635 -o %cpu=
```
2024-05-06 14:30:14 +03:00
2022-05-07 22:12:11 +03:00
или
2024-05-06 14:30:14 +03:00
2022-05-07 22:12:11 +03:00
```bash
ps -p $(pgrep iperf) -o %cpu=
```
2024-05-06 14:30:14 +03:00
**top**
2022-05-07 22:12:11 +03:00
```bash
top -b -n 2 -d 0.2 -p PID_ID | tail -1 | awk '{print $9}'
```
2024-05-06 14:30:14 +03:00
**Нагрузить процессор для проверки**
2022-05-07 22:12:11 +03:00
```bash
cat /dev/zero > /dev/null
```
2024-05-06 14:30:14 +03:00
[вверх ](#linux-useful )
2024-02-02 12:34:43 +03:00
***
2024-05-06 14:30:14 +03:00
## Определить страну, город и др. детали по IP
2024-02-02 12:34:43 +03:00
```bash
curl -s "https://ifconfig.co/json?ip=$1" | jq -r '.country, .city, .hostname, .asn_org'
```
или функция
```bash
getip() {
curl -s "https://ifconfig.co/json?ip=$1" | jq -r '.country, .city, .hostname, .asn_org'
}
```
2024-05-06 14:30:14 +03:00
[вверх ](#linux-useful )
## Отобразить файл без комментариев и путых строк
```bash
grep -vE '(^[[:space:]]*([#;!].*)?$)' file
```
[вверх ](#linux-useful )
2024-06-12 10:53:43 +03:00
## Изменить консольный редактор по-умолчанию
```shell
which nano
/usr/bin/nano
export EDITOR=/usr/bin/nano
```
[вверх ](#linux-useful )
2024-06-12 10:58:00 +03:00
## Перенос строк в nano
Для включения переноса строк в текщум редакторе необходимо нажать `Esc` + `$` .
обозначение `Esc` + `$` означает нажатие и отпускание `Esc` , а затем нажатие `$` .
Тогда полная последовательность нажатий клавиш будет `Esc` , `Shift+4`
[вверх ](#linux-useful )
2024-11-20 13:56:25 +03:00
## Генератор паролей
В качестве простого генератора паролей удобно использовать `pwqgen` . Он генерирует легкозапоминаемые пароли.
[вверх ](#linux-useful )