Загрузка данных
#!/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 "================================================="