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

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