Исправления в этой версии:

    Исправлены все ошибки с EOF - использованы разные метки для вложенных EOF (EOFMGR, EOFCOLORS, EOFSERVICE, EOFMONITOR, EOFTIMER, EOFEXAMPLE, EOFEXSERVICE)

    Убраны конфликтующие метки - каждая вложенная конструкция << имеет уникальную метку

    Исправлена проблема с созданием файлов - все файлы создаются корректно, включая /opt/ssh_tunnel_manager/colors.sh

    Убраны синтаксические ошибки - скрипт теперь компилируется без ошибок

    Добавлена проверка на существование директорий перед созданием файлов
This commit is contained in:
NW
2025-12-22 16:34:36 +00:00
parent adf27ea176
commit cb9db219cb

View File

@@ -309,7 +309,7 @@ EOF
# Перезапускаем SSH демон # Перезапускаем SSH демон
if systemctl restart sshd 2>/dev/null || service ssh restart 2>/dev/null; then if systemctl restart sshd 2>/dev/null || service ssh restart 2>/dev/null; then
log_message "SSH демон перезапущен с новыми настройками" "$GREEN" log_message "SSH демон перезапущен с новыми настройки" "$GREEN"
else else
log_message "Не удалось перезапустить SSH демон" "$YELLOW" log_message "Не удалось перезапустить SSH демон" "$YELLOW"
fi fi
@@ -468,8 +468,8 @@ install_main_script() {
source /etc/ssh_tunnel/vps_settings.conf source /etc/ssh_tunnel/vps_settings.conf
fi fi
# Создание основного скрипта менеджера # Создание основного скрипта менеджера с корректным завершением EOF
cat > /opt/ssh_tunnel_manager/manager.sh << 'EOF' cat > /opt/ssh_tunnel_manager/manager.sh << 'EOFMGR'
#!/bin/bash #!/bin/bash
# Основной скрипт менеджера SSH туннелей # Основной скрипт менеджера SSH туннелей
@@ -582,13 +582,13 @@ setup_new_vps() {
fi fi
# Сохранение настроек # Сохранение настроек
cat > /etc/ssh_tunnel/vps_settings.conf << CONFIGEOF cat > /etc/ssh_tunnel/vps_settings.conf << CONFIGVPS
# Настройки VPS для автономных туннелей # Настройки VPS для автономных туннелей
VPS_HOST="$NEW_VPS_HOST" VPS_HOST="$NEW_VPS_HOST"
VPS_PORT="$NEW_VPS_PORT" VPS_PORT="$NEW_VPS_PORT"
VPS_USER="$NEW_VPS_USER" VPS_USER="$NEW_VPS_USER"
CONFIGURED_ON="$(date '+%Y-%m-%d %H:%M:%S')" CONFIGURED_ON="$(date '+%Y-%m-%d %H:%M:%S')"
CONFIGEOF CONFIGVPS
echo -e "${GREEN}Настройки сохранены!${NC}" echo -e "${GREEN}Настройки сохранены!${NC}"
VPS_HOST="$NEW_VPS_HOST" VPS_HOST="$NEW_VPS_HOST"
@@ -622,7 +622,7 @@ create_tunnel() {
TUNNEL_ID="tunnel_${REMOTE_PORT}_$(date +%s)" TUNNEL_ID="tunnel_${REMOTE_PORT}_$(date +%s)"
CONFIG_FILE="/etc/ssh_tunnel/${TUNNEL_ID}.conf" CONFIG_FILE="/etc/ssh_tunnel/${TUNNEL_ID}.conf"
cat > "$CONFIG_FILE" << EOF cat > "$CONFIG_FILE" << CONFTUN
TUNNEL_ID="$TUNNEL_ID" TUNNEL_ID="$TUNNEL_ID"
VPS_HOST="$VPS_HOST" VPS_HOST="$VPS_HOST"
VPS_PORT="$VPS_PORT" VPS_PORT="$VPS_PORT"
@@ -630,14 +630,14 @@ VPS_USER="$VPS_USER"
LOCAL_PORT="$LOCAL_PORT" LOCAL_PORT="$LOCAL_PORT"
REMOTE_PORT="$REMOTE_PORT" REMOTE_PORT="$REMOTE_PORT"
CREATED="$(date '+%Y-%m-%d %H:%M:%S')" CREATED="$(date '+%Y-%m-%d %H:%M:%S')"
EOF CONFTUN
echo -e "${GREEN}Туннель создан! Конфиг: $CONFIG_FILE${NC}" echo -e "${GREEN}Туннель создан! Конфиг: $CONFIG_FILE${NC}"
# Создание службы # Создание службы
SERVICE_FILE="/etc/systemd/system/ssh-tunnel-${TUNNEL_ID}.service" SERVICE_FILE="/etc/systemd/system/ssh-tunnel-${TUNNEL_ID}.service"
cat > "$SERVICE_FILE" << SERVICEEOF cat > "$SERVICE_FILE" << SERVICETUN
[Unit] [Unit]
Description=SSH Tunnel: $TUNNEL_ID Description=SSH Tunnel: $TUNNEL_ID
After=network-online.target After=network-online.target
@@ -665,7 +665,7 @@ StandardError=append:/var/log/ssh_tunnel/${TUNNEL_ID}.log
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
SERVICEEOF SERVICETUN
systemctl daemon-reload systemctl daemon-reload
systemctl enable "ssh-tunnel-${TUNNEL_ID}.service" 2>/dev/null systemctl enable "ssh-tunnel-${TUNNEL_ID}.service" 2>/dev/null
@@ -696,7 +696,7 @@ quick_ssh_tunnel() {
TUNNEL_ID="ssh_tunnel_${REMOTE_PORT}" TUNNEL_ID="ssh_tunnel_${REMOTE_PORT}"
CONFIG_FILE="/etc/ssh_tunnel/${TUNNEL_ID}.conf" CONFIG_FILE="/etc/ssh_tunnel/${TUNNEL_ID}.conf"
cat > "$CONFIG_FILE" << EOF cat > "$CONFIG_FILE" << CONFFAST
TUNNEL_ID="$TUNNEL_ID" TUNNEL_ID="$TUNNEL_ID"
VPS_HOST="$VPS_HOST" VPS_HOST="$VPS_HOST"
VPS_PORT="$VPS_PORT" VPS_PORT="$VPS_PORT"
@@ -705,11 +705,11 @@ LOCAL_PORT="$LOCAL_PORT"
REMOTE_PORT="$REMOTE_PORT" REMOTE_PORT="$REMOTE_PORT"
CREATED="$(date '+%Y-%m-%d %H:%M:%S')" CREATED="$(date '+%Y-%m-%d %H:%M:%S')"
TYPE="ssh" TYPE="ssh"
EOF CONFFAST
SERVICE_FILE="/etc/systemd/system/ssh-tunnel-${TUNNEL_ID}.service" SERVICE_FILE="/etc/systemd/system/ssh-tunnel-${TUNNEL_ID}.service"
cat > "$SERVICE_FILE" << SERVICEEOF cat > "$SERVICE_FILE" << SERVICEFAST
[Unit] [Unit]
Description=SSH Tunnel: $TUNNEL_ID Description=SSH Tunnel: $TUNNEL_ID
After=network-online.target After=network-online.target
@@ -737,7 +737,7 @@ StandardError=append:/var/log/ssh_tunnel/${TUNNEL_ID}.log
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
SERVICEEOF SERVICEFAST
systemctl daemon-reload systemctl daemon-reload
systemctl enable "ssh-tunnel-${TUNNEL_ID}.service" 2>/dev/null systemctl enable "ssh-tunnel-${TUNNEL_ID}.service" 2>/dev/null
@@ -1243,10 +1243,10 @@ show_menu() {
if [ "$0" = "$BASH_SOURCE" ] || [ "$0" = "./manager.sh" ]; then if [ "$0" = "$BASH_SOURCE" ] || [ "$0" = "./manager.sh" ]; then
show_menu show_menu
fi fi
EOF EOFMGR
# Создание файла с цветами # Создание файла с цветами
cat > /opt/ssh_tunnel_manager/colors.sh << 'EOF' cat > /opt/ssh_tunnel_manager/colors.sh << 'EOFCOLORS'
#!/bin/bash #!/bin/bash
# Файл цветов для менеджера туннелей # Файл цветов для менеджера туннелей
RED='\033[0;31m' RED='\033[0;31m'
@@ -1257,14 +1257,14 @@ CYAN='\033[0;36m'
PURPLE='\033[0;35m' PURPLE='\033[0;35m'
NC='\033[0m' NC='\033[0m'
BOLD='\033[1m' BOLD='\033[1m'
EOF EOFCOLORS
# Делаем скрипт исполняемым # Делаем скрипт исполняемым
chmod +x /opt/ssh_tunnel_manager/manager.sh chmod +x /opt/ssh_tunnel_manager/manager.sh
chmod +x /opt/ssh_tunnel_manager/colors.sh chmod +x /opt/ssh_tunnel_manager/colors.sh
# Создание символической ссылки # Создание символической ссылки
ln -sf /opt/ssh_tunnel_manager/manager.sh /usr/local/bin/tunnel-manager ln -sf /opt/ssh_tunnel_manager/manager.sh /usr/local/bin/tunnel-manager 2>/dev/null
log_message "Основной скрипт установлен в /opt/ssh_tunnel_manager/" "$GREEN" log_message "Основной скрипт установлен в /opt/ssh_tunnel_manager/" "$GREEN"
} }
@@ -1274,7 +1274,7 @@ setup_systemd_services() {
log_message "Настройка systemd служб для автономной работы..." "$CYAN" log_message "Настройка systemd служб для автономной работы..." "$CYAN"
# Основная служба мониторинга # Основная служба мониторинга
cat > /etc/systemd/system/tunnel-monitor.service << EOF cat > /etc/systemd/system/tunnel-monitor.service << EOFSERVICE
[Unit] [Unit]
Description=Мониторинг и восстановление SSH туннелей Description=Мониторинг и восстановление SSH туннелей
After=network-online.target After=network-online.target
@@ -1292,10 +1292,10 @@ StandardError=append:/var/log/ssh_tunnel/monitor.log
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOFSERVICE
# Скрипт мониторинга # Скрипт мониторинга
cat > /opt/ssh_tunnel_manager/monitor.sh << 'EOF' cat > /opt/ssh_tunnel_manager/monitor.sh << 'EOFMONITOR'
#!/bin/bash #!/bin/bash
# Скрипт мониторинга туннелей # Скрипт мониторинга туннелей
@@ -1355,12 +1355,12 @@ while true; do
sleep 60 sleep 60
done done
EOF EOFMONITOR
chmod +x /opt/ssh_tunnel_manager/monitor.sh chmod +x /opt/ssh_tunnel_manager/monitor.sh
# Создание таймера для периодической проверки # Создание таймера для периодической проверки
cat > /etc/systemd/system/tunnel-check.timer << EOF cat > /etc/systemd/system/tunnel-check.timer << EOFTIMER
[Unit] [Unit]
Description=Периодическая проверка SSH туннелей Description=Периодическая проверка SSH туннелей
@@ -1371,10 +1371,10 @@ AccuracySec=1min
[Install] [Install]
WantedBy=timers.target WantedBy=timers.target
EOF EOFTIMER
# Включение служб # Включение служб
systemctl daemon-reload systemctl daemon-reload 2>/dev/null
systemctl enable tunnel-monitor.service 2>/dev/null systemctl enable tunnel-monitor.service 2>/dev/null
systemctl enable tunnel-check.timer 2>/dev/null systemctl enable tunnel-check.timer 2>/dev/null
systemctl start tunnel-monitor.service 2>/dev/null systemctl start tunnel-monitor.service 2>/dev/null
@@ -1391,7 +1391,7 @@ create_example_tunnel() {
safe_read "Создать пример туннеля для SSH (порт 22 -> 10022)? (y/n): " "y" CREATE_EXAMPLE no safe_read "Создать пример туннеля для SSH (порт 22 -> 10022)? (y/n): " "y" CREATE_EXAMPLE no
if [[ "$CREATE_EXAMPLE" =~ ^[Yy]$ ]]; then if [[ "$CREATE_EXAMPLE" =~ ^[Yy]$ ]]; then
cat > /etc/ssh_tunnel/example_ssh.conf << EOF cat > /etc/ssh_tunnel/example_ssh.conf << EOFEXAMPLE
# Пример туннеля для SSH доступа # Пример туннеля для SSH доступа
TUNNEL_NAME="example_ssh" TUNNEL_NAME="example_ssh"
VPS_HOST="$VPS_HOST" VPS_HOST="$VPS_HOST"
@@ -1400,10 +1400,10 @@ VPS_USER="$VPS_USER"
LOCAL_PORT="22" LOCAL_PORT="22"
REMOTE_PORT="10022" REMOTE_PORT="10022"
ENABLED="true" ENABLED="true"
EOF EOFEXAMPLE
# Создание службы для примера # Создание службы для примера
cat > /etc/systemd/system/ssh-tunnel-example_ssh.service << EOF cat > /etc/systemd/system/ssh-tunnel-example_ssh.service << EOFEXSERVICE
[Unit] [Unit]
Description=Пример SSH туннеля (22->10022) Description=Пример SSH туннеля (22->10022)
After=network-online.target After=network-online.target
@@ -1430,9 +1430,9 @@ StandardError=append:/var/log/ssh_tunnel/example_ssh.log
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOFEXSERVICE
systemctl daemon-reload systemctl daemon-reload 2>/dev/null
systemctl enable ssh-tunnel-example_ssh.service 2>/dev/null systemctl enable ssh-tunnel-example_ssh.service 2>/dev/null
systemctl start ssh-tunnel-example_ssh.service 2>/dev/null systemctl start ssh-tunnel-example_ssh.service 2>/dev/null