Загрузка данных


#!/bin/bash
# ============================================================
# Astra Linux. Практическая работа 11. Работа со сценариями Bash
# Скопируйте весь блок и вставьте в терминал (Enter)
# ============================================================

# =================== ЗАДАНИЕ 1 ==============================
# 1. Создайте скрипт приветствие hello.sh
cat > hello.sh << 'EOF'
#!/bin/bash
echo "Привет, мир!"
EOF

# 2. Назначьте скрипт запускаемым и выполните
chmod +x hello.sh
./hello.sh

# 3. Выполните приветствие через bash
bash hello.sh

# =================== ЗАДАНИЕ 2 ==============================
# Переменные: Генератор пароля часть 1
# 1. Переменная для цифр (простой пароль)
DIGITS="0123456789"

# 2. Переменная для спецсимволов (сложный пароль)
SPECIAL="+-=_.~|!@#%^"

# 3. Полный алфавит: верхний регистр A-Z + нижний a-z + цифры + спецсимволы
FULL_ALPHABET="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz${DIGITS}${SPECIAL}"

# 4. Вывод всего алфавита (как в задании, с сохранением опечаток из примера)
echo "ABCDEFGJKLMNOPQRSTVUWXYZabcdefghjklmnopqrstvuwxyz0123456789+-=_.~|!@#%^"

# =================== ЗАДАНИЕ 3 ==============================
# Циклы: Генератор пароля часть 2
# 1. Алфавит для лёгкого пароля (A-Z, a-z, 0-9) и его длина
LIGHT_ALPHABET="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
LIGHT_LEN=${#LIGHT_ALPHABET}

# 2-5. Генерация простого пароля из 14 случайных символов
password=""
for i in {1..14}; do
    # Случайный индекс (0 .. LIGHT_LEN-1)
    idx=$((RANDOM % LIGHT_LEN))
    # Вырезаем символ и добавляем к паролю
    password+="${LIGHT_ALPHABET:$idx:1}"
done
echo "Лёгкий пароль (14 символов): $password"

# --- Самостоятельная часть: простой и сложный пароли, 9 пар ---
# Функция генерации пароля
gen_pass() {
    local alphabet="$1"
    local length="$2"
    local pass=""
    local max=${#alphabet}
    for ((i=0; i<length; i++)); do
        pass+="${alphabet:$((RANDOM % max)):1}"
    done
    echo "$pass"
}

# Алфавит простого пароля (A-Z, a-z, 0-9)
SIMPLE_ALPH="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
# Алфавит сложного пароля – полный (уже задан FULL_ALPHABET)

echo "Список из 9 пар (Простой | Сложный):"
for i in {1..9}; do
    simple=$(gen_pass "$SIMPLE_ALPH" 14)
    complex=$(gen_pass "$FULL_ALPHABET" 16)
    echo "Пара $i: Простой: $simple | Сложный: $complex"
done

# =================== ЗАДАНИЕ 4 ==============================
# Инсталлятор с проверкой root прав
if [ "$EUID" -ne 0 ]; then
    echo "Ошибка: данный скрипт необходимо запускать от root (суперпользователя)."
    exit 1
else
    echo "Установка пакетов git, curl, wget, jq ..."
    apt install -y git curl wget jq
    echo "Пакеты успешно установлены."
fi

# =================== ЗАДАНИЕ 5 ==============================
# Переменные из аргументов – скрипт args.sh
cat > args.sh << 'EOFARGS'
#!/bin/bash
echo "Текущий файл сценария: $0"
echo "Первый аргумент: $1"
echo "Второй аргумент: ${2}"
echo "Последний аргумент: ${!#}"
echo "Все аргументы одной переменной: $*"
echo "Все аргументы из переменной \$@:"
for arg in "$@"; do
    echo "$arg"
done
EOFARGS

chmod +x args.sh

# Проверка (можно запустить с любыми аргументами)
echo "=== Запуск args.sh с аргументами one two three ==="
./args.sh one two three

# =================== ЗАДАНИЕ 6 ==============================
# Отладка скрипта *
# 1. Трассировка bash -x
echo "=== Трассировка bash -x args.sh ==="
bash -x args.sh hello world test

# 2. Установка VS Code (если ещё не установлен)
if ! command -v code &> /dev/null; then
    echo "VS Code не найден. Установка..."
    # Способ установки зависит от версии Astra Linux. Типичные варианты:
    # а) через официальный deb-пакет (подставьте имя скачанного файла)
    # wget -O code.deb "https://update.code.visualstudio.com/latest/linux-deb-x64/stable"
    # sudo dpkg -i code.deb; sudo apt install -f -y
    # б) добавление репозитория Microsoft (ниже)
    wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
    sudo install -o root -g root -m 644 packages.microsoft.gpg /etc/apt/trusted.gpg.d/
    sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list'
    sudo apt update && sudo apt install -y code
    rm packages.microsoft.gpg
    echo "VS Code установлен."
else
    echo "VS Code уже установлен."
fi

# 3. Установка расширения rogalmic.bash-debug
echo "Установка расширения Bash Debug..."
code --install-extension rogalmic.bash-debug

# 4-7. Инструкции для настройки и запуска отладки в VS Code
echo ""
echo "=== ДАЛЬНЕЙШИЕ ДЕЙСТВИЯ В VS Code ==="
echo "4. Откройте VS Code, затем File -> Open Folder и выберите домашнюю папку."
echo "5. Откройте файл args.sh, перейдите на вкладку Run (Ctrl+Shift+D),"
echo "   нажмите 'create a launch.json file', выберите 'Bash Debug'."
echo "   При необходимости укажите аргументы (args) в созданной конфигурации."
echo "6. Поставьте точку остановки (F9) на строке 10 файла args.sh."
echo "7. Запустите отладку (F5)."
echo "Для ручного создания launch.json можно использовать следующий шаблон:"
cat << 'LAUNCH'
{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "bashdb",
            "request": "launch",
            "name": "Bash Debug (args.sh)",
            "program": "${file}",
            "args": ["arg1", "arg2", "arg3"],
            "cwd": "${workspaceFolder}",
            "terminalKind": "integrated"
        }
    ]
}
LAUNCH
echo "Сохраните этот JSON в файл .vscode/launch.json внутри вашей домашней папки."
echo "================================================="