| @@ -3,10 +3,10 @@ | |||
| 3 | 3 | set -e | |
| 4 | 4 | ||
| 5 | 5 | # Цвета для вывода | |
| 6 | - | ANSI_RED := $(shell tput -Txterm setaf 1) | |
| 7 | - | ANSI_GREEN := $(shell tput -Txterm setaf 2) | |
| 8 | - | ANSI_YELLOW := $(shell tput -Txterm setaf 3) | |
| 9 | - | ANSI_RESET := $(shell tput -Txterm sgr0) | |
| 6 | + | ANSI_RED := $(tput -Txterm setaf 1) | |
| 7 | + | ANSI_GREEN := $(tput -Txterm setaf 2) | |
| 8 | + | ANSI_YELLOW := $(tput -Txterm setaf 3) | |
| 9 | + | ANSI_RESET := $(tput -Txterm sgr0) | |
| 10 | 10 | ||
| 11 | 11 | # ==================== ФУНКЦИИ ==================== | |
| 12 | 12 | ||
KarelWintersky / Blacktower: primary install
Last active 3 months ago
KarelWintersky revised this gist 4 months ago · c26b404
1 file changed, 4 insertions, 4 deletions
KarelWintersky revised this gist 4 months ago · 595ce4d
1 file changed, 4 insertions, 4 deletions
| @@ -3,10 +3,10 @@ | |||
| 3 | 3 | set -e | |
| 4 | 4 | ||
| 5 | 5 | # Цвета для вывода | |
| 6 | - | ANSI_RED='\033[0;31m' | |
| 7 | - | ANSI_GREEN='\033[0;32m' | |
| 8 | - | ANSI_YELLOW='\033[1;33m' | |
| 9 | - | ANSI_RESET='\033[0m' | |
| 6 | + | ANSI_RED := $(shell tput -Txterm setaf 1) | |
| 7 | + | ANSI_GREEN := $(shell tput -Txterm setaf 2) | |
| 8 | + | ANSI_YELLOW := $(shell tput -Txterm setaf 3) | |
| 9 | + | ANSI_RESET := $(shell tput -Txterm sgr0) | |
| 10 | 10 | ||
| 11 | 11 | # ==================== ФУНКЦИИ ==================== | |
| 12 | 12 | ||
KarelWintersky revised this gist 4 months ago · c3a9ae4
1 file changed, 3 insertions, 3 deletions
| @@ -365,7 +365,7 @@ EOF | |||
| 365 | 365 | install_midnight_commanger() { | |
| 366 | 366 | apt-get -y install mc | |
| 367 | 367 | ||
| 368 | - | write_config_file "/root/.config/mc/ini" false <<< 'EOF' | |
| 368 | + | write_config_file "/root/.config/mc/ini" false << 'EOF' | |
| 369 | 369 | [Midnight-Commander] | |
| 370 | 370 | verbose=true | |
| 371 | 371 | shell_patterns=true | |
| @@ -517,7 +517,7 @@ Modified git files=git ls-files --modified | |||
| 517 | 517 | ||
| 518 | 518 | EOF | |
| 519 | 519 | ||
| 520 | - | write_config_file "/root/.config/mc/panels.ini" false <<< 'EOF' | |
| 520 | + | write_config_file "/root/.config/mc/panels.ini" false << 'EOF' | |
| 521 | 521 | [New Left Panel] | |
| 522 | 522 | display=listing | |
| 523 | 523 | reverse=false | |
| @@ -556,7 +556,7 @@ list_format=user | |||
| 556 | 556 | current_is_left=false | |
| 557 | 557 | other_dir=/root | |
| 558 | 558 | EOF | |
| 559 | - | ||
| 559 | + | ||
| 560 | 560 | ||
| 561 | 561 | ||
| 562 | 562 | ||
KarelWintersky revised this gist 4 months ago · 59712ed
1 file changed, 520 insertions, 92 deletions
Diff is too large to be shown
KarelWintersky revised this gist 4 months ago · 02513de
1 file changed, 171 insertions
| @@ -0,0 +1,171 @@ | |||
| 1 | + | #!/bin/bash | |
| 2 | + | ||
| 3 | + | set -e | |
| 4 | + | ||
| 5 | + | # Цвета для вывода | |
| 6 | + | ANSI_RED='\033[0;31m' | |
| 7 | + | ANSI_GREEN='\033[0;32m' | |
| 8 | + | ANSI_YELLOW='\033[1;33m' | |
| 9 | + | ANSI_RESET='\033[0m' | |
| 10 | + | ||
| 11 | + | # Проверка, что скрипт запущен от root | |
| 12 | + | if [ "$EUID" -ne 0 ]; then | |
| 13 | + | echo -e "${ANSI_RED}Ошибка: скрипт должен запускаться от root${ANSI_RESET}" | |
| 14 | + | exit 1 | |
| 15 | + | fi | |
| 16 | + | ||
| 17 | + | echo -e "${ANSI_GREEN}=== Настройка системы ===${ANSI_RESET}" | |
| 18 | + | ||
| 19 | + | # Запрос имени хоста | |
| 20 | + | echo -e "${ANSI_YELLOW}Введите новое имя хоста:${ANSI_RESET}" | |
| 21 | + | read -p "Hostname: " NEW_HOSTNAME | |
| 22 | + | if [ -z "$NEW_HOSTNAME" ]; then | |
| 23 | + | echo -e "${ANSI_RED}Имя хоста не может быть пустым.${ANSI_RESET}" | |
| 24 | + | exit 1 | |
| 25 | + | fi | |
| 26 | + | ||
| 27 | + | # Запрос имени пользователя | |
| 28 | + | echo -e "${ANSI_YELLOW}Введите имя нового пользователя:${ANSI_RESET}" | |
| 29 | + | read -p "Username: " NEW_USER | |
| 30 | + | if [ -z "$NEW_USER" ]; then | |
| 31 | + | echo -e "${ANSI_RED}Имя пользователя не может быть пустым.${ANSI_RESET}" | |
| 32 | + | exit 1 | |
| 33 | + | fi | |
| 34 | + | ||
| 35 | + | # Запрос пароля для нового пользователя | |
| 36 | + | echo -e "${ANSI_YELLOW}Введите пароль для пользователя $NEW_USER:${ANSI_RESET}" | |
| 37 | + | read -s -p "Password: " USER_PASS | |
| 38 | + | echo | |
| 39 | + | if [ -z "$USER_PASS" ]; then | |
| 40 | + | echo -e "${ANSI_RED}Пароль не может быть пустым.${ANSI_RESET}" | |
| 41 | + | exit 1 | |
| 42 | + | fi | |
| 43 | + | ||
| 44 | + | echo -e "\n${ANSI_GREEN}=== Установка имени хоста: $NEW_HOSTNAME ===${ANSI_RESET}" | |
| 45 | + | hostnamectl set-hostname "$NEW_HOSTNAME" | |
| 46 | + | # Обновление /etc/hosts | |
| 47 | + | sed -i "s/^127.0.1.1.*/127.0.1.1\t$NEW_HOSTNAME/" /etc/hosts | |
| 48 | + | echo -e "${ANSI_GREEN}Имя хоста установлено.${ANSI_RESET}" | |
| 49 | + | ||
| 50 | + | # Функция добавления репозитория MEPHI | |
| 51 | + | add_mephi_repository() { | |
| 52 | + | # Определение версии Debian | |
| 53 | + | . /etc/os-release 2>/dev/null || { echo "Failed to determine release"; exit 1; } | |
| 54 | + | [ -z "$VERSION_CODENAME" ] && echo "VERSION_CODENAME not found" && exit 1 | |
| 55 | + | ||
| 56 | + | local conf_file="/etc/apt/sources.list.d/debian_mephi.list" | |
| 57 | + | ||
| 58 | + | if grep -qs "mirror.mephi.ru.*$VERSION_CODENAME" "$conf_file" 2>/dev/null; then | |
| 59 | + | echo -e "Repository for $VERSION_CODENAME already exists in $conf_file" | |
| 60 | + | else | |
| 61 | + | echo -e "Adding repository for Debian $VERSION_CODENAME" | |
| 62 | + | cat >> "$conf_file" << EOF | |
| 63 | + | ||
| 64 | + | # Added $(date '+%Y-%m-%d') | |
| 65 | + | deb http://mirror.mephi.ru/debian/ $VERSION_CODENAME main non-free-firmware | |
| 66 | + | deb-src http://mirror.mephi.ru/debian/ $VERSION_CODENAME main non-free-firmware | |
| 67 | + | EOF | |
| 68 | + | echo "Repository added, updating package list..." | |
| 69 | + | apt update | |
| 70 | + | fi | |
| 71 | + | } | |
| 72 | + | ||
| 73 | + | # Добавляем репозиторий MEPHI | |
| 74 | + | add_mephi_repository | |
| 75 | + | ||
| 76 | + | # Обновление и апгрейд | |
| 77 | + | apt -y upgrade | |
| 78 | + | ||
| 79 | + | # Установка пакетов (включая sudo) | |
| 80 | + | PACKAGES=( | |
| 81 | + | pv nano curl wget sudo lsb-release iptables | |
| 82 | + | unzip pigz zstd | |
| 83 | + | ncdu gdu | |
| 84 | + | screen tmux lynx | |
| 85 | + | htop btop iftop mtr ioping | |
| 86 | + | git jq yq pwgen | |
| 87 | + | bind9-dnsutils net-tools ssh-audit | |
| 88 | + | cloud-guest-utils qemu-guest-agent | |
| 89 | + | console-setup | |
| 90 | + | ) | |
| 91 | + | ||
| 92 | + | echo -e "${ANSI_GREEN}Installing packages...${ANSI_RESET}" | |
| 93 | + | apt-get update | |
| 94 | + | apt-get install -y "${PACKAGES[@]}" | |
| 95 | + | ||
| 96 | + | # Настройка SSH | |
| 97 | + | echo -e "${ANSI_GREEN}Allowing SSH root login${ANSI_RESET}" | |
| 98 | + | sed -i 's/^.*PermitRootLogin.*$/PermitRootLogin yes/' /etc/ssh/sshd_config | |
| 99 | + | systemctl restart sshd | |
| 100 | + | echo -e "${ANSI_GREEN}Ok.${ANSI_RESET}" | |
| 101 | + | ||
| 102 | + | # Midnight Commander | |
| 103 | + | apt-get -y install mc | |
| 104 | + | ||
| 105 | + | # Настройка таймзоны и локали | |
| 106 | + | echo "tzdata tzdata/Areas select Europe" | debconf-set-selections | |
| 107 | + | echo "tzdata tzdata/Zones/Europe select Moscow" | debconf-set-selections | |
| 108 | + | DEBIAN_FRONTEND=noninteractive dpkg-reconfigure tzdata | |
| 109 | + | ||
| 110 | + | cat > /etc/locale.gen << EOF | |
| 111 | + | ru_RU.UTF-8 UTF-8 | |
| 112 | + | en_US.UTF-8 UTF-8 | |
| 113 | + | EOF | |
| 114 | + | ||
| 115 | + | locale-gen | |
| 116 | + | update-locale LANG=en_US.UTF-8 | |
| 117 | + | locale -a | grep -E "en_US|ru_RU" | |
| 118 | + | source /etc/default/locale | |
| 119 | + | ||
| 120 | + | dpkg-reconfigure console-setup | |
| 121 | + | dpkg-reconfigure keyboard-configuration | |
| 122 | + | ||
| 123 | + | # Настройка journald | |
| 124 | + | mkdir -p /etc/systemd/journald.conf.d | |
| 125 | + | cat > /etc/systemd/journald.conf.d/size.conf << EOF | |
| 126 | + | [Journal] | |
| 127 | + | SystemMaxUse=1G | |
| 128 | + | SystemMaxFileSize=50M | |
| 129 | + | MaxLevelStore=warning | |
| 130 | + | EOF | |
| 131 | + | ||
| 132 | + | systemctl restart systemd-journald | |
| 133 | + | ||
| 134 | + | # Создание пользователя | |
| 135 | + | useradd -m "$NEW_USER" && echo "$NEW_USER:$USER_PASS" | chpasswd && passwd -e "$NEW_USER" | |
| 136 | + | usermod -aG sudo "$NEW_USER" | |
| 137 | + | ||
| 138 | + | # Настройка .Xauthority | |
| 139 | + | touch "/home/$NEW_USER/.Xauthority" | |
| 140 | + | chown "$NEW_USER:$NEW_USER" "/home/$NEW_USER/.Xauthority" | |
| 141 | + | ||
| 142 | + | echo -e "${ANSI_GREEN}Пользователь $NEW_USER с паролем '${ANSI_YELLOW}$USER_PASS${ANSI_GREEN}' создан${ANSI_RESET}" | |
| 143 | + | ||
| 144 | + | # Настройка истории для пользователя | |
| 145 | + | cat >> "/home/$NEW_USER/.bashrc" << 'EOF' | |
| 146 | + | export HISTSIZE=10000 | |
| 147 | + | export HISTFILESIZE=50000 | |
| 148 | + | export HISTTIMEFORMAT="%F %T " | |
| 149 | + | export HISTCONTROL=ignoredups:ignorespace | |
| 150 | + | shopt -s histappend | |
| 151 | + | export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND" | |
| 152 | + | EOF | |
| 153 | + | ||
| 154 | + | chown "$NEW_USER:$NEW_USER" "/home/$NEW_USER/.bashrc" | |
| 155 | + | ||
| 156 | + | # Удаление документации git | |
| 157 | + | rm -rf /usr/share/doc/git/RelNotes | |
| 158 | + | ||
| 159 | + | # Настройка истории для root | |
| 160 | + | cat >> /root/.bashrc << 'EOF' | |
| 161 | + | export HISTSIZE=10000 | |
| 162 | + | export HISTFILESIZE=50000 | |
| 163 | + | export HISTTIMEFORMAT="%F %T " | |
| 164 | + | export HISTCONTROL=ignoredups:ignorespace | |
| 165 | + | shopt -s histappend | |
| 166 | + | export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND" | |
| 167 | + | EOF | |
| 168 | + | ||
| 169 | + | source /root/.bashrc | |
| 170 | + | ||
| 171 | + | echo -e "${ANSI_GREEN}=== Настройка завершена успешно ===${ANSI_RESET}" | |