urocibg 修订了这个 Gist . 转到此修订
1 file changed, 1 insertion, 1 deletion
proxmox-setup.sh
@@ -1,7 +1,7 @@ | |||
1 | 1 | #!/bin/bash | |
2 | 2 | ||
3 | 3 | # Proxmox VE Post-Install Configuration Script | |
4 | - | # Автор: Proxmox Helper Scripts | |
4 | + | # Автор: Федя Серафиев и Proxmox Helper Scripts | |
5 | 5 | # Версия: 1.0 | |
6 | 6 | ||
7 | 7 | # Цветови променливи |
urocibg 修订了这个 Gist . 转到此修订
1 file changed, 307 insertions
proxmox-setup.sh(文件已创建)
@@ -0,0 +1,307 @@ | |||
1 | + | #!/bin/bash | |
2 | + | ||
3 | + | # Proxmox VE Post-Install Configuration Script | |
4 | + | # Автор: Proxmox Helper Scripts | |
5 | + | # Версия: 1.0 | |
6 | + | ||
7 | + | # Цветови променливи | |
8 | + | RD=$(echo "\033[01;31m") | |
9 | + | YW=$(echo "\033[33m") | |
10 | + | GN=$(echo "\033[1;92m") | |
11 | + | BL=$(echo "\033[36m") | |
12 | + | CL=$(echo "\033[m") | |
13 | + | BFR="\\r\\033[K" | |
14 | + | HOLD="-" | |
15 | + | CM="${GN}✓${CL}" | |
16 | + | CROSS="${RD}✗${CL}" | |
17 | + | ||
18 | + | # Функции за съобщения | |
19 | + | msg_info() { | |
20 | + | local msg="$1" | |
21 | + | echo -ne " ${HOLD} ${YW}${msg}..." | |
22 | + | } | |
23 | + | ||
24 | + | msg_ok() { | |
25 | + | local msg="$1" | |
26 | + | echo -e "${BFR} ${CM} ${GN}${msg}${CL}" | |
27 | + | } | |
28 | + | ||
29 | + | msg_error() { | |
30 | + | local msg="$1" | |
31 | + | echo -e "${BFR} ${CROSS} ${RD}${msg}${CL}" | |
32 | + | } | |
33 | + | ||
34 | + | # Хедър информация | |
35 | + | header_info() { | |
36 | + | clear | |
37 | + | cat <<"EOF" | |
38 | + | ____ _ ____________ | |
39 | + | / __ \_________ _ ______ ___ ____ | | / / ____/ | |
40 | + | / /_/ / ___/ __ \| |/_/ __ `__ \/ __ \ | | / / __/ | |
41 | + | / ____/ / / /_/ /> </ / / / / / /_/ / | |/ / /___ | |
42 | + | /_/ /_/ \____/_/|_/_/ /_/ /_/\____/ |___/_____/ | |
43 | + | ||
44 | + | ____ __ ____ __ ____ | |
45 | + | / __ \____ _____/ /_ / _/___ _____/ /_____ _/ / / | |
46 | + | / /_/ / __ \/ ___/ __/ / // __ \/ ___/ __/ __ `/ / / | |
47 | + | / ____/ /_/ (__ ) /_ _/ // / / (__ ) /_/ /_/ / / / | |
48 | + | /_/ \____/____/\__/ /___/_/ /_/____/\__/\__,_/_/_/ | |
49 | + | ||
50 | + | Конфигурационен скрипт за Proxmox VE | |
51 | + | Версия 1.0 | |
52 | + | EOF | |
53 | + | echo -e "${BL}════════════════════════════════════════════════════════════${CL}" | |
54 | + | echo -e "${GN}Добре дошли в помощника за конфигуриране на Proxmox VE!${CL}" | |
55 | + | echo -e "${BL}════════════════════════════════════════════════════════════${CL}" | |
56 | + | echo | |
57 | + | } | |
58 | + | ||
59 | + | # Проверка за root права | |
60 | + | check_root() { | |
61 | + | if [[ $EUID -ne 0 ]]; then | |
62 | + | msg_error "Този скрипт трябва да бъде стартиран като root потребител" | |
63 | + | exit 1 | |
64 | + | fi | |
65 | + | } | |
66 | + | ||
67 | + | # Проверка за Proxmox VE | |
68 | + | check_proxmox() { | |
69 | + | if [[ ! -f /etc/pve/local/pve-ssl.pem ]]; then | |
70 | + | msg_error "Proxmox VE не е открит в тази система" | |
71 | + | exit 1 | |
72 | + | fi | |
73 | + | } | |
74 | + | ||
75 | + | # Функция за изключване на напомнянето за абонамент | |
76 | + | disable_subscription_nag() { | |
77 | + | if [[ ! -f /etc/apt/apt.conf.d/no-nag-script ]]; then | |
78 | + | CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "НАПОМНЯНЕ ЗА АБОНАМЕНТ" --menu "Това ще изключи съобщението, което ви напомня да закупите абонамент всеки път, когато влезете в уеб интерфейса.\n \nИзключване на напомнянето за абонамент?" 14 58 2 \ | |
79 | + | "yes" " " \ | |
80 | + | "no" " " 3>&2 2>&1 1>&3) | |
81 | + | case $CHOICE in | |
82 | + | yes) | |
83 | + | whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox --title "Поддръжка на абонаменти" "Подкрепата на екипа за разработка на софтуера е от съществено значение. Проверете официалния уебсайт за Поддръжка на абонаменти за цени. Без тяхната посветена работа нямаше да имаме този изключителен софтуер." 10 58 | |
84 | + | msg_info "Изключване на напомнянето за абонамент" | |
85 | + | echo "DPkg::Post-Invoke { \"dpkg -V proxmox-widget-toolkit | grep -q '/proxmoxlib\.js$'; if [ \$? -eq 1 ]; then { echo 'Премахване на напомнянето от интерфейса...'; sed -i '/.*data\.status.*{/{s/\!//;s/active/NoMoreNagging/}' /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js; }; fi\"; };" >/etc/apt/apt.conf.d/no-nag-script | |
86 | + | apt --reinstall install proxmox-widget-toolkit &>/dev/null | |
87 | + | msg_ok "Напомнянето за абонамент е изключено (Изтрийте кеша на браузъра)" | |
88 | + | ;; | |
89 | + | no) | |
90 | + | msg_error "Избрахте 'не' за изключване на напомнянето" | |
91 | + | ;; | |
92 | + | esac | |
93 | + | else | |
94 | + | msg_ok "Напомнянето за абонамент вече е изключено" | |
95 | + | fi | |
96 | + | } | |
97 | + | ||
98 | + | # Функция за корекция на източниците | |
99 | + | fix_sources() { | |
100 | + | CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "КОРЕКЦИЯ НА ИЗТОЧНИЦИТЕ" --menu "Това ще коригира източниците на Proxmox VE за правилна работа.\n \nКорекция на източниците на Proxmox VE?" 14 58 2 \ | |
101 | + | "yes" " " \ | |
102 | + | "no" " " 3>&2 2>&1 1>&3) | |
103 | + | case $CHOICE in | |
104 | + | yes) | |
105 | + | msg_info "Коригиране на източниците на Proxmox VE" | |
106 | + | cat <<EOF >/etc/apt/sources.list | |
107 | + | deb http://deb.debian.org/debian bookworm main contrib | |
108 | + | deb http://deb.debian.org/debian bookworm-updates main contrib | |
109 | + | deb http://security.debian.org/debian-security bookworm-security main contrib | |
110 | + | EOF | |
111 | + | echo 'APT::Get::Update::SourceListWarnings::NonFreeFirmware "false";' >/etc/apt/apt.conf.d/no-bookworm-firmware.conf | |
112 | + | msg_ok "Източниците на Proxmox VE са коригирани" | |
113 | + | ;; | |
114 | + | no) | |
115 | + | msg_error "Избрахте 'не' за корекция на източниците" | |
116 | + | ;; | |
117 | + | esac | |
118 | + | } | |
119 | + | ||
120 | + | # Функция за изключване на enterprise хранилище | |
121 | + | disable_enterprise_repo() { | |
122 | + | CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "PVE-ENTERPRISE" --menu "Хранилището 'pve-enterprise' е достъпно само за потребители, закупили абонамент за Proxmox VE.\n \nИзключване на 'pve-enterprise' хранилище?" 14 58 2 \ | |
123 | + | "yes" " " \ | |
124 | + | "no" " " 3>&2 2>&1 1>&3) | |
125 | + | case $CHOICE in | |
126 | + | yes) | |
127 | + | msg_info "Изключване на 'pve-enterprise' хранилище" | |
128 | + | cat <<EOF >/etc/apt/sources.list.d/pve-enterprise.list | |
129 | + | # deb https://enterprise.proxmox.com/debian/pve bookworm pve-enterprise | |
130 | + | EOF | |
131 | + | msg_ok "'pve-enterprise' хранилището е изключено" | |
132 | + | ;; | |
133 | + | no) | |
134 | + | msg_error "Избрахте 'не' за изключване на хранилището" | |
135 | + | ;; | |
136 | + | esac | |
137 | + | } | |
138 | + | ||
139 | + | # Функция за активиране на no-subscription хранилище | |
140 | + | enable_no_subscription_repo() { | |
141 | + | CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "PVE-NO-SUBSCRIPTION" --menu "Хранилището 'pve-no-subscription' предоставя достъп до всички компоненти с отворен код на Proxmox VE.\n \nАктивиране на 'pve-no-subscription' хранилище?" 14 58 2 \ | |
142 | + | "yes" " " \ | |
143 | + | "no" " " 3>&2 2>&1 1>&3) | |
144 | + | case $CHOICE in | |
145 | + | yes) | |
146 | + | msg_info "Активиране на 'pve-no-subscription' хранилище" | |
147 | + | cat <<EOF >/etc/apt/sources.list.d/pve-install-repo.list | |
148 | + | deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription | |
149 | + | EOF | |
150 | + | msg_ok "'pve-no-subscription' хранилището е активирано" | |
151 | + | ;; | |
152 | + | no) | |
153 | + | msg_error "Избрахте 'не' за активиране на хранилището" | |
154 | + | ;; | |
155 | + | esac | |
156 | + | } | |
157 | + | ||
158 | + | # Функция за обновяване на системата | |
159 | + | update_system() { | |
160 | + | CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "ОБНОВЯВАНЕ НА СИСТЕМАТА" --menu "Това ще обнови всички пакети в системата.\n \nОбновяване на системата?" 14 58 2 \ | |
161 | + | "yes" " " \ | |
162 | + | "no" " " 3>&2 2>&1 1>&3) | |
163 | + | case $CHOICE in | |
164 | + | yes) | |
165 | + | msg_info "Обновяване на списъка с пакети" | |
166 | + | apt update &>/dev/null | |
167 | + | msg_ok "Списъкът с пакети е обновен" | |
168 | + | ||
169 | + | msg_info "Обновяване на системата" | |
170 | + | apt full-upgrade -y &>/dev/null | |
171 | + | msg_ok "Системата е обновена" | |
172 | + | ||
173 | + | msg_info "Почистване на ненужни пакети" | |
174 | + | apt autoremove -y &>/dev/null | |
175 | + | apt autoclean &>/dev/null | |
176 | + | msg_ok "Ненужните пакети са премахнати" | |
177 | + | ;; | |
178 | + | no) | |
179 | + | msg_error "Избрахте 'не' за обновяване на системата" | |
180 | + | ;; | |
181 | + | esac | |
182 | + | } | |
183 | + | ||
184 | + | # Функция за конфигуриране на firewall | |
185 | + | configure_firewall() { | |
186 | + | CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "FIREWALL КОНФИГУРАЦИЯ" --menu "Активиране на основна firewall конфигурация?\n \nТова ще активира основни firewall правила за защита." 14 58 2 \ | |
187 | + | "yes" " " \ | |
188 | + | "no" " " 3>&2 2>&1 1>&3) | |
189 | + | case $CHOICE in | |
190 | + | yes) | |
191 | + | msg_info "Конфигуриране на firewall" | |
192 | + | # Активиране на firewall в Proxmox | |
193 | + | pvesh set /cluster/firewall/options --enable 1 &>/dev/null | |
194 | + | msg_ok "Firewall е активиран" | |
195 | + | ;; | |
196 | + | no) | |
197 | + | msg_error "Избрахте 'не' за активиране на firewall" | |
198 | + | ;; | |
199 | + | esac | |
200 | + | } | |
201 | + | ||
202 | + | # Функция за показване на системна информация | |
203 | + | show_system_info() { | |
204 | + | clear | |
205 | + | header_info | |
206 | + | echo -e "${BL}════════════════════════════════════════════════════════════${CL}" | |
207 | + | echo -e "${GN} СИСТЕМНА ИНФОРМАЦИЯ ${CL}" | |
208 | + | echo -e "${BL}════════════════════════════════════════════════════════════${CL}" | |
209 | + | echo | |
210 | + | echo -e "${YW}Proxmox VE версия:${CL} $(pveversion | head -1)" | |
211 | + | echo -e "${YW}Операционна система:${CL} $(lsb_release -d | cut -f2)" | |
212 | + | echo -e "${YW}Kernel версия:${CL} $(uname -r)" | |
213 | + | echo -e "${YW}Архитектура:${CL} $(uname -m)" | |
214 | + | echo -e "${YW}Възходящо време:${CL} $(uptime -p)" | |
215 | + | echo -e "${YW}Натоварване:${CL} $(uptime | awk -F'load average:' '{print $2}')" | |
216 | + | echo -e "${YW}Памет:${CL} $(free -h | grep '^Mem:' | awk '{print $3"/"$2}')" | |
217 | + | echo -e "${YW}Дисково пространство:${CL} $(df -h / | tail -1 | awk '{print $3"/"$2" ("$5" използвано)"}')" | |
218 | + | echo | |
219 | + | echo -e "${BL}════════════════════════════════════════════════════════════${CL}" | |
220 | + | echo | |
221 | + | read -p "Натиснете Enter за връщане в главното меню..." | |
222 | + | } | |
223 | + | ||
224 | + | # Главно меню | |
225 | + | main_menu() { | |
226 | + | while true; do | |
227 | + | header_info | |
228 | + | CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "ГЛАВНО МЕНЮ" --menu "Изберете опция:" 20 70 10 \ | |
229 | + | "1" "Изключване на напомнянето за абонамент" \ | |
230 | + | "2" "Корекция на източниците" \ | |
231 | + | "3" "Изключване на enterprise хранилище" \ | |
232 | + | "4" "Активиране на no-subscription хранилище" \ | |
233 | + | "5" "Обновяване на системата" \ | |
234 | + | "6" "Конфигуриране на firewall" \ | |
235 | + | "7" "Показване на системна информация" \ | |
236 | + | "8" "Изпълнение на всички конфигурации" \ | |
237 | + | "9" "Изход" 3>&2 2>&1 1>&3) | |
238 | + | ||
239 | + | case $CHOICE in | |
240 | + | 1) | |
241 | + | disable_subscription_nag | |
242 | + | ;; | |
243 | + | 2) | |
244 | + | fix_sources | |
245 | + | ;; | |
246 | + | 3) | |
247 | + | disable_enterprise_repo | |
248 | + | ;; | |
249 | + | 4) | |
250 | + | enable_no_subscription_repo | |
251 | + | ;; | |
252 | + | 5) | |
253 | + | update_system | |
254 | + | ;; | |
255 | + | 6) | |
256 | + | configure_firewall | |
257 | + | ;; | |
258 | + | 7) | |
259 | + | show_system_info | |
260 | + | ;; | |
261 | + | 8) | |
262 | + | echo -e "${GN}Изпълнение на всички конфигурации...${CL}" | |
263 | + | echo | |
264 | + | disable_subscription_nag | |
265 | + | fix_sources | |
266 | + | disable_enterprise_repo | |
267 | + | enable_no_subscription_repo | |
268 | + | update_system | |
269 | + | configure_firewall | |
270 | + | echo | |
271 | + | echo -e "${GN}Всички конфигурации са завършени!${CL}" | |
272 | + | echo -e "${YW}Препоръчва се рестартиране на системата.${CL}" | |
273 | + | echo | |
274 | + | read -p "Натиснете Enter за връщане в главното меню..." | |
275 | + | ;; | |
276 | + | 9) | |
277 | + | echo -e "${GN}Благодарим ви за използването на Proxmox VE Helper Scripts!${CL}" | |
278 | + | exit 0 | |
279 | + | ;; | |
280 | + | *) | |
281 | + | msg_error "Невалидна опция" | |
282 | + | ;; | |
283 | + | esac | |
284 | + | ||
285 | + | echo | |
286 | + | read -p "Натиснете Enter за връщане в главното меню..." | |
287 | + | done | |
288 | + | } | |
289 | + | ||
290 | + | # Основна функция | |
291 | + | main() { | |
292 | + | check_root | |
293 | + | check_proxmox | |
294 | + | ||
295 | + | # Проверка за whiptail | |
296 | + | if ! command -v whiptail &> /dev/null; then | |
297 | + | msg_info "Инсталиране на whiptail" | |
298 | + | apt update &>/dev/null | |
299 | + | apt install -y whiptail &>/dev/null | |
300 | + | msg_ok "whiptail е инсталиран" | |
301 | + | fi | |
302 | + | ||
303 | + | main_menu | |
304 | + | } | |
305 | + | ||
306 | + | # Стартиране на скрипта | |
307 | + | main "$@" |