4. Полное описание сервера

Данная статья рассматривает полное описание автономного сервера BilSrvStation на *Linux
Debian10* by |author|. Основаня идея заключается в том, что бы обеспечить документирование реального сервера/рабочего места, после «чистой», автоматической установки со всеми необходимыми настройками и программами. В начале описывается структура файлов для формирования загрузочного диска, далее следует полное
описание скриптового pii2.sh без

Важно

Перед установкой обязательно ознакомится с данной страницей!!!

Внимание

Здесь и далее, дополнительный софт будет дополняться в файле pii2.sh, в разделе 01.12 Optional soft, при этом описание будет дополняться в данной странице в разделе „Опциональный софт`

Основные возможности
- Сервер предварительно настроен предустановочным файлом „preseed.cfg
- Не требуется вручную настраивать и конфигурировать пакеты
- Сервер защищён пакетом SELinux с настроенными политиками
- Локаничное описание, позволяющее сэкономить время на освоение
- Установленные все полезные утилиты, необходимые для удобного администрирования
- Данная установка универсальная для широкого спектра задач

4.1. Описание структуры сервера

Структура сервера состоит из следующих папок и файлов.

4.2. Разбор основного файла pii2.sh

Код начинается с функции *jumpto*, которая обеспечивает переход по меткам „GOTO“. В роли метки служит её объявление
<name>=${<number>:-«<name>»}“. Где *<name>* - название метки GOTO, <number> - номер метки. Т.е. переменной <name> присваивается структура из наименования
метки с соответствующему номеру. После объявление метки в коде она используется „<number>:“, а её вызов осуществляется через „jumpto $<name>“.
Данная функция *jumpto* принимает два аргумента *$0* и *$1*, которые соответствуют имени файла и названия метки.
Рассмотрим строчку функции::
*cmd=$(sed -n «/$label:/{:a;n;p;ba};» $0 | grep -v „:$“)*.
В документации в разделе „6.4 Branching and Flow ControlSEDERE указана адресация::
[addr]X
[addr]{ X ; X ; X }
/regexp/X
/regexp/{ X ; X ; X }
``Addresses and regular expressions can be used as an if/then conditional: If [addr] matches the current pattern space, execute
the command(s). For example: The command /^#/d means: if the current pattern matches the regular expression ^# (a line starting with a hash), then execute
the d command: delete the line without printing it, and restart the program cycle immediately.``
Эта запись говорит о том, что в фигурных скобках каждая команда (оператор) выполняется последовательно, при условии, если выполняется предыдущая.
Краткое описание опреторов:
- *:a* метка
- *-bX* branch unconditionally (that is: always jump to a label, skipping or repeating other commands, without restarting a new cycle).. Это
означает, что некандиционная ветвь, которая переходит на метку, пропуская или повторяя другую команду без возможности перезапуска и переходит на метку X
- *-n* commands first prints the content of the pattern space, empties the pattern space then reads the next input line. This command is useful to skip lines (e.g. process every Nth line).
Эта команда пропускает строку
- *-Xp* команда вывода строки Xp. Где X - омер строки.
- *grep -v* Invert the sense of matching, to select non-matching lines.. Инвертирует чувствительность совпадений
- *:$* метка label в конце
- *eval*
1if [[ -z $(sed -n -e "s/^\(5_install_util_wd\).*/\1/p" steps.txt) ]]; then
1echo "y\n" | apt-get install build-essential
2if [ $? -ne 0 ]; then
3 echo "Error: error install gcc-utils!!!"
4 exit 1
5fi
6
7add-apt-repository-get ppa:ubuntu-toolchain-r/test && apt update
1echo -e "y\n" | apt-get install python
2echo -e "y\n" | apt-get install python3
3echo -e "y\n" | apt-get install tmux;
4echo -e "y\n" | apt-get install net-tools
5echo -e "y\n" | apt-get install manpages-dev;
6echo -e "y\n" | apt-get install wpa_supplicant;
7echo -e "y\n" | apt-get install mc;
8echo -e "y\n" | apt-get install ncdu;
 1echo -e "y\n" | apt-get install netdata;
 2echo -e "y\n" | apt-get install systat;
 3echo -e "y\n" | apt-get install iftop;
 4echo -e "y\n" | apt-get install htop;
 5echo -e "y\n" | apt-get install sudo;
 6echo -e "y\n" | apt-get install iptraf;
 7echo -e "y\n" | apt-get install ntp
 8systemctl enable ntp;
 9systemctl enable start;
10sudo systemctl unmask samba;
11cp /install/etc/sudoers /etc/sudoers
12echo -e "y\n" | apt-get install nmon;
13echo -e "y\n" | apt-get install nmap;
14echo -e "y\n" | apt-get install safe-rm
15echo -e "y\n" | apt-get install aptitude
16echo -e "y\n" | apt-get install btrfs-progs
 1iptables –F
 2echo -e "y\n" | apt-get install cifs-utils
 3echo -e "y\n" | apt-get install samba
 4echo -e "y\n" | apt-get install smbfs
 5echo -e "y\n" | apt-get install whois
 6echo -e "y\n" | apt-get install lsof
 7echo -e "y\n" | apt-get install mkpasswd
 8echo -e "y\n" | apt-get install wget
 9echo -e "y\n" | apt-get install tree
10echo -e "y\n" | apt-get install autofs
11echo -e "y\n" | apt-get install gpg
12echo -e "y\n" | apt-get install rsync
13echo -e "y\n" | apt-get install ca-certificates
14echo -e "y\n" | apt-get install shared-mime-info
15echo -e "y\n" | apt-get install wget genisoimage xorriso isolinux hwinfo
16echo -e "y\n" | apt-get install hddtemp lm-sensors
17echo -e "y\n" | apt-get install at
18echo -e "y\n" | apt-get install pip
19echo -e "y\n" | apt-get install xz-utils
20echo -e "y\n" | apt-get install curl
21echo -e "y\n" | apt-get install sphinx
22echo -e "y\n" | apt-get install smartmontools
23echo -e "y\n" | apt-get install python3-sphinx
24echo -e "y\n" | apt-get install nfs-common
25echo -e "y\n" | apt-get install build-essential libssl-dev libffi-dev python3-dev
26echo -e "y\n" | apt-get install python3-venv
27echo -e "y\n" | apt-get install mdadm
28echo -e "y\n" | apt-get install hdparm
29echo -e "y\n" | apt-get install hddtemp lm-sensors psensor
30echo -e "y\n" | apt-get install stress
31systemctl enable mdadm
32update-initramfs -u
33
34python3 -m venv env

4.3. Python String Comparison operators

In python language, we can compare two strings such as identify whether the two strings are equivalent to each other
or not, or even which string is greater or smaller than each other. Let us check some of the string comparison operator
used for this purpose below:
1fi
==: This operator checks whether two strings are equal.
!=: This operator checks whether two strings are not equal.
<: This operator checks whether the string on the left side is smaller than the string on the right side.
<=: This operator checks whether the string on the left side is smaller or equal to the string on the right side.
>: This operator checks whether the string on the left side is greater than the string on the right side.
>=: This operator checks whether the string on the left side is greater than the string on the right side.
1cd /install/
2touch fdisk.txt
3fdisk -l | sed -n -e "s/.*\(\/dev\/s[a-z]*[0-9]\).*/\1/p" > fdisk.txt
4
5filename='fdisk.txt'
6n=1
7while read line; do