v1.5.2
Исправления в этой версии:
Исправлены все ошибки с EOF - использованы разные метки для вложенных EOF (EOFMGR, EOFCOLORS, EOFSERVICE, EOFMONITOR, EOFTIMER, EOFEXAMPLE, EOFEXSERVICE)
Убраны конфликтующие метки - каждая вложенная конструкция << имеет уникальную метку
Исправлена проблема с созданием файлов - все файлы создаются корректно, включая /opt/ssh_tunnel_manager/colors.sh
Убраны синтаксические ошибки - скрипт теперь компилируется без ошибок
Добавлена проверка на существование директорий перед созданием файлов
This commit is contained in:
@@ -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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user