финальная верия
[inno_script.git] / script.sh
blob0e086fe939d9d86a49d52b7e9a1927a501688b7b
1 #!/bin/bash
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"
9 fi
11 while [[ $# -gt 0 ]]; do
12 key="$1"
14 case $key in
15 -m|--monitoring)
16 monitoring=true
17 cpu_threshold="$2"
18 ram_threshold="$3"
19 disk_threshold="$4"
20 shift
21 shift
22 shift
23 shift
25 -b|--backup)
26 backup=true
27 backup_path="$2"
28 shift
29 shift
31 -d|--database)
32 database_backup=true
33 db_ip="$2"
34 db_login="$3"
35 db_password="$4"
36 db_name="$5"
37 shift
38 shift
39 shift
40 shift
41 shift
43 -u|--update)
44 update=true
45 shift
48 # Неизвестный параметр
49 echo "Неизвестный параметр: $1" >> "$LOG_FILE"
50 exit 1
52 esac
53 shift
54 done
56 if [ "$update" = true ]; then
57 # Обновление операционной системы и программ
58 if command -v apt-get &>/dev/null; then
59 # Для Ubuntu/Debian
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
63 # Для CentOS
64 yum update -y >> "$LOG_FILE" 2>&1
65 else
66 echo "Не удалось определить способ обновления для данной операционной системы." >> "$LOG_FILE"
67 exit 1
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"
84 else
85 echo "Ошибка: Указанный путь не существует." >> "$LOG_FILE"
86 exit 1
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"
93 exit 1
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%)"
130 else
131 if [ "$update" != true ] && [ "$backup" != true ] && [ "$database_backup" != true ]; then
132 echo "Не указаны флаги для выполнения действий (-m, -b, -d, -u)" >> "$LOG_FILE"
133 exit 1