3 LOG_FILE
="/var/log/script"
5 # Проверка существования директории /tmp/important_files и создание, если её нет
6 if [ ! -d "/tmp/important_files" ]; then
7 mkdir
-p "/tmp/important_files"
8 echo "Создана директория /tmp/important_files" >> "$LOG_FILE"
11 while [[ $# -gt 0 ]]; do
48 # Неизвестный параметр
49 echo "Неизвестный параметр: $1" >> "$LOG_FILE"
56 if [ "$update" = true
]; then
57 # Обновление операционной системы и программ
58 if command -v apt-get
&>/dev
/null
; then
60 apt-get update
>> "$LOG_FILE" 2>&1
61 apt-get upgrade
-y >> "$LOG_FILE" 2>&1
62 elif command -v yum
&>/dev
/null
; then
64 yum update
-y >> "$LOG_FILE" 2>&1
66 echo "Не удалось определить способ обновления для данной операционной системы." >> "$LOG_FILE"
71 if [ "$backup" = true
]; then
72 if [ -z "$backup_path" ]; then
73 # Если не указан путь для бэкапа, используем /tmp/important_files
74 backup_path
="/tmp/important_files"
77 # Проверяем существование указанного пути
78 if [ -e "$backup_path" ]; then
79 # Создаем резервную копию и добавляем временную метку к имени
80 backup_file
="${backup_path}_backup_$(date +"%Y
%m
%d_
%H
%M
%S
")"
81 cp -r "$backup_path" "$backup_file"
83 echo "Создана резервная копия: $backup_file" >> "$LOG_FILE"
85 echo "Ошибка: Указанный путь не существует." >> "$LOG_FILE"
90 if [ "$database_backup" = true
]; then
91 if [ -z "$db_ip" ] ||
[ -z "$db_login" ] ||
[ -z "$db_password" ] ||
[ -z "$db_name" ]; then
92 echo "Ошибка: Необходимо указать IP адрес, логин, пароль и имя базы данных для подключения к базе данных." >> "$LOG_FILE"
96 # Путь для сохранения бэкапа
97 db_backup_path
="/tmp/important_files/${db_name}_backup_$(date +"%Y
%m
%d_
%H
%M
%S
").sql"
99 # Создание бэкапа базы данных
100 PGPASSWORD
="$db_password" pg_dump
-h "$db_ip" -U "$db_login" -w -Fc "$db_name" > "$db_backup_path"
102 echo "Создан бэкап базы данных PostgreSQL: $db_backup_path" >> "$LOG_FILE"
105 if [ "$monitoring" = true
]; then
106 # Собираем информацию о загрузке CPU
107 cpu_load
=$
(top
-bn1 |
awk '/%Cpu/{print $2}' | cut
-d.
-f1)
108 echo "Текущая загрузка CPU: $cpu_load%" >> "$LOG_FILE"
110 # Собираем информацию о использовании RAM
111 ram_usage
=$
(free |
awk '/Mem/{printf("%.2f"), $3/$2*100}')
112 echo "Текущее использование RAM: $ram_usage%" >> "$LOG_FILE"
114 # Собираем информацию о дисковом пространстве
115 disk_usage
=$
(df
-h / |
awk '/\//{print $(NF-1)}' | cut
-d% -f1)
116 echo "Текущее использование дискового пространства: $disk_usage%" >> "$LOG_FILE"
118 # Проверяем пороги и выводим предупреждение при необходимости
119 if [ ! -z "$cpu_threshold" ] && [ "$cpu_load" -gt "$cpu_threshold" ]; then
120 echo "Предупреждение: Загрузка CPU превышает заданный порог ($cpu_load% > $cpu_threshold%)"
123 if [ ! -z "$ram_threshold" ] && [ "$ram_usage" -gt "$ram_threshold" ]; then
124 echo "Предупреждение: Использование RAM превышает заданный порог ($ram_usage% > $ram_threshold%)"
127 if [ ! -z "$disk_threshold" ] && [ "$disk_usage" -gt "$disk_threshold" ]; then
128 echo "Предупреждение: Использование дискового пространства превышает заданный порог ($disk_usage% > $disk_threshold%)"
131 if [ "$update" != true
] && [ "$backup" != true
] && [ "$database_backup" != true
]; then
132 echo "Не указаны флаги для выполнения действий (-m, -b, -d, -u)" >> "$LOG_FILE"