Compare commits
4 Commits
a27a69244f
...
f830ddb8e1
Author | SHA1 | Date | |
---|---|---|---|
f830ddb8e1 | |||
a881094492 | |||
e72bbca713 | |||
627cd7d499 |
46
bash/task1/log_analyzer.sh
Executable file
46
bash/task1/log_analyzer.sh
Executable file
@ -0,0 +1,46 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Проверка наличия аргумента
|
||||
if [ "$#" -ne 1 ]; then
|
||||
echo "Ошибка: Необходимо указать путь к лог-файлу."
|
||||
echo "Использование: $0 <путь к лог-файлу>"
|
||||
echo "Этот скрипт анализирует лог-файл на наличие ошибок, предупреждений и информационных сообщений."
|
||||
echo "$0 /var/log/syslog"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Путь к лог-файлу
|
||||
log_file_path="$1"
|
||||
|
||||
# Проверка существования файла
|
||||
if [ ! -f "$log_file_path" ]; then
|
||||
echo "Ошибка: Файл '$log_file_path' не существует."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Переменные для хранения количества сообщений
|
||||
error_count=0
|
||||
warning_count=0
|
||||
info_count=0
|
||||
|
||||
# Чтение лог-файла и подсчет сообщений
|
||||
while IFS= read -r line
|
||||
do
|
||||
case "$line" in
|
||||
*"ERROR"*)
|
||||
((error_count++))
|
||||
;;
|
||||
*"WARNING"*)
|
||||
((warning_count++))
|
||||
;;
|
||||
*"INFO"*)
|
||||
((info_count++))
|
||||
;;
|
||||
esac
|
||||
done < "$log_file_path"
|
||||
|
||||
# Вывод результатов
|
||||
echo "Количество сообщений в лог-файле:"
|
||||
echo "Ошибки: $error_count"
|
||||
echo "Предупреждения: $warning_count"
|
||||
echo "Информационные сообщения: $info_count"
|
40
bash/task2/backup.sh
Executable file
40
bash/task2/backup.sh
Executable file
@ -0,0 +1,40 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Проверка аргументов
|
||||
if [ "$#" -ne 2 ]; then
|
||||
echo "Использование: $0 <путь_к_каталогу_для_резервной_копии> <путь_к_каталогу_для_сохранения>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Получаем аргументы
|
||||
source_dir="$1"
|
||||
backup_dir="$2"
|
||||
|
||||
# Проверяем, существует ли исходный каталог
|
||||
if [ ! -d "$source_dir" ]; then
|
||||
echo "Ошибка: Исходный каталог '$source_dir' не найден."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Создаем каталог для резервных копий, если он не существует
|
||||
mkdir -p "$backup_dir"
|
||||
|
||||
# Получаем текущее время
|
||||
timestamp=$(date +"%Y%m%d_%H%M%S")
|
||||
|
||||
# Создаем имя файла резервной копии
|
||||
backup_file="backup_${timestamp}.tar.gz"
|
||||
|
||||
# Полный путь к архиву
|
||||
backup_path="${backup_dir}/${backup_file}"
|
||||
|
||||
# Создание архива
|
||||
tar -czf "$backup_path" -C "$source_dir" .
|
||||
|
||||
# Проверка успешности создания архива
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Резервная копия успешно создана: $backup_path"
|
||||
else
|
||||
echo "Ошибка: Не удалось создать резервную копию."
|
||||
exit 1
|
||||
fi
|
15
bash/task3/disk_monitoring.sh
Normal file
15
bash/task3/disk_monitoring.sh
Normal file
@ -0,0 +1,15 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Указываем пороговое значение использования (например, 50%)
|
||||
LIMIT=50
|
||||
|
||||
# Указываем почтовый адрес для уведомлений
|
||||
EMAIL="walleri1@yandex.ru"
|
||||
|
||||
# Получаем текущее использование дискового пространства
|
||||
USAGE=$(df -h / | awk 'NR==2 {gsub("%",""); print $5}')
|
||||
|
||||
# Проверяем, превышает ли использование пороговое значение
|
||||
if [ "$USAGE" -gt "$LIMIT" ]; then
|
||||
echo "Дисковое пространство переполнено: ${USAGE}% использовано." | mail -s "Предупреждение: Использование дискового пространства" "$EMAIL"
|
||||
fi
|
1
bash/test_branch.sh
Normal file
1
bash/test_branch.sh
Normal file
@ -0,0 +1 @@
|
||||
#!/bin/bash
|
@ -1,23 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
time "time"
|
||||
|
||||
cycle "train_golang/pkg"
|
||||
)
|
||||
|
||||
func add(a, b int) {
|
||||
fmt.Println("Sum = ", a+b)
|
||||
}
|
||||
|
||||
func sub(a, b int) {
|
||||
fmt.Println("Sub = ", a-b)
|
||||
}
|
||||
|
||||
func main() {
|
||||
go add(5, 6)
|
||||
go sub(7, 9)
|
||||
cycle.SimpleForCycle()
|
||||
time.Sleep(1 * time.Second)
|
||||
}
|
60
go/homework_one/cmd/main.go
Normal file
60
go/homework_one/cmd/main.go
Normal file
@ -0,0 +1,60 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"homework_one/internal/input"
|
||||
)
|
||||
|
||||
func main() {
|
||||
for {
|
||||
|
||||
number_one, err := input.GetNumber("Введите первое число:")
|
||||
if err != nil {
|
||||
fmt.Println(
|
||||
"Некорректное число. Пожалуйста, введите числовое значение.",
|
||||
)
|
||||
continue
|
||||
}
|
||||
|
||||
operator := input.GetOperator()
|
||||
|
||||
number_two, err := input.GetNumber("Введите второе число:")
|
||||
if err != nil {
|
||||
fmt.Println(
|
||||
"Некорректное число. Пожалуйста, введите числовое значение.",
|
||||
)
|
||||
continue
|
||||
}
|
||||
|
||||
var result float64
|
||||
switch operator {
|
||||
case "+":
|
||||
result = number_one + number_two
|
||||
case "-":
|
||||
result = number_one - number_two
|
||||
case "*":
|
||||
result = number_one * number_two
|
||||
case "/":
|
||||
if number_two == 0 {
|
||||
fmt.Println("Ошибка: деление на ноль невозможно")
|
||||
continue
|
||||
}
|
||||
result = number_one / number_two
|
||||
default:
|
||||
fmt.Println("Неизвестный оператор")
|
||||
continue
|
||||
}
|
||||
fmt.Printf(
|
||||
"Результат: %F %s %F = %F\n",
|
||||
number_one,
|
||||
operator,
|
||||
number_two,
|
||||
result,
|
||||
)
|
||||
|
||||
fmt.Println("Press the Enter Key to stop anytime")
|
||||
fmt.Scanln()
|
||||
|
||||
}
|
||||
}
|
10
go/homework_one/go.mod
Normal file
10
go/homework_one/go.mod
Normal file
@ -0,0 +1,10 @@
|
||||
module homework_one
|
||||
|
||||
go 1.23.6
|
||||
|
||||
require github.com/manifoldco/promptui v0.9.0
|
||||
|
||||
require (
|
||||
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e // indirect
|
||||
golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b // indirect
|
||||
)
|
52
go/homework_one/internal/input/input.go
Normal file
52
go/homework_one/internal/input/input.go
Normal file
@ -0,0 +1,52 @@
|
||||
package input
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"strconv"
|
||||
|
||||
p "github.com/manifoldco/promptui"
|
||||
)
|
||||
|
||||
// GetNumber получение числового ввода пользователя
|
||||
func GetNumber(message string) (float64, error) {
|
||||
validate := func(input string) error {
|
||||
_, err := strconv.ParseFloat(input, 64)
|
||||
if err != nil {
|
||||
return errors.New(
|
||||
"Некорректное число. Пожалуйста, введите числовое значение.",
|
||||
)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
prompt := p.Prompt{
|
||||
Label: message,
|
||||
Validate: validate,
|
||||
}
|
||||
|
||||
result, err := prompt.Run()
|
||||
if err != nil {
|
||||
fmt.Printf("Prompt failed %v\n", err)
|
||||
return 0, err
|
||||
}
|
||||
|
||||
number, _ := strconv.ParseFloat(result, 64)
|
||||
return number, nil
|
||||
}
|
||||
|
||||
// GetOperator получение оператора
|
||||
func GetOperator() string {
|
||||
prompt := p.Select{
|
||||
Label: "Выберите операцию (+, -, *, /):",
|
||||
Items: []string{"+", "-", "*", "/"},
|
||||
}
|
||||
|
||||
_, result, err := prompt.Run()
|
||||
if err != nil {
|
||||
fmt.Printf("Prompt failed %v\n", err)
|
||||
return ""
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
package cycle
|
||||
|
||||
import (
|
||||
fmt "fmt"
|
||||
)
|
||||
|
||||
func SimpleForCycle() {
|
||||
for i := 0; i < 100; i++ {
|
||||
fmt.Println("Iter: ", i)
|
||||
}
|
||||
}
|
25
go/summ/summ.go
Normal file
25
go/summ/summ.go
Normal file
@ -0,0 +1,25 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
func main() {
|
||||
summ := 0
|
||||
|
||||
// Проходим по всем аргументам командной строки, начиная с первого
|
||||
for i := 1; i < len(os.Args); i++ {
|
||||
// Преобразуем аргумент в целое число
|
||||
num, err := strconv.Atoi(os.Args[i])
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "Ошибка преобразования аргумента '%s': %v\n", os.Args[i], err)
|
||||
return
|
||||
}
|
||||
summ += num
|
||||
}
|
||||
|
||||
// Выводим результат
|
||||
fmt.Println(summ)
|
||||
}
|
Loading…
Reference in New Issue
Block a user