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

    Исправлена синтаксическая ошибка в строке 765 - убрано некорректное перенаправление 2>/dev/null внутри цикла for

    Все циклы переписаны с проверкой существования файлов через if [ ! -f "$conf" ] вместо перенаправления ошибок

    Улучшенная структура циклов с явным continue для пропуска несуществующих файлов

    Корректный синтаксис Bash во всем скрипте

    Сохранил всю функциональность предыдущей версии
This commit is contained in:
NW
2025-12-22 16:18:03 +00:00
parent 7743b9eb36
commit adf27ea176

View File

@@ -762,13 +762,15 @@ manage_tunnels() {
count=0 count=0
declare -A tunnels declare -A tunnels
for conf in /etc/ssh_tunnel/*.conf 2>/dev/null; do # Исправленный цикл без синтаксической ошибки
if [ -f "$conf" ]; then for conf in /etc/ssh_tunnel/*.conf; do
((count++)) if [ ! -f "$conf" ]; then
tunnels[$count]="$conf" continue
tunnel_name=$(basename "$conf" .conf)
echo -e "${CYAN}[$count]${NC} $tunnel_name"
fi fi
((count++))
tunnels[$count]="$conf"
tunnel_name=$(basename "$conf" .conf)
echo -e "${CYAN}[$count]${NC} $tunnel_name"
done done
if [ $count -eq 0 ]; then if [ $count -eq 0 ]; then
@@ -793,12 +795,13 @@ manage_tunnels() {
;; ;;
r|R) r|R)
echo -e "${CYAN}Перезапуск всех туннелей...${NC}" echo -e "${CYAN}Перезапуск всех туннелей...${NC}"
for conf in /etc/ssh_tunnel/*.conf 2>/dev/null; do for conf in /etc/ssh_tunnel/*.conf; do
if [ -f "$conf" ]; then if [ ! -f "$conf" ]; then
tunnel_name=$(basename "$conf" .conf) continue
systemctl restart "ssh-tunnel-${tunnel_name}.service" 2>/dev/null
echo -e " ${GREEN}${NC} $tunnel_name перезапущен"
fi fi
tunnel_name=$(basename "$conf" .conf)
systemctl restart "ssh-tunnel-${tunnel_name}.service" 2>/dev/null
echo -e " ${GREEN}${NC} $tunnel_name перезапущен"
done done
read -p "Нажмите Enter для продолжения..." read -p "Нажмите Enter для продолжения..."
;; ;;
@@ -917,24 +920,26 @@ setup_autostart() {
case $action in case $action in
1) 1)
for conf in /etc/ssh_tunnel/*.conf 2>/dev/null; do for conf in /etc/ssh_tunnel/*.conf; do
if [ -f "$conf" ]; then if [ ! -f "$conf" ]; then
tunnel_name=$(basename "$conf" .conf) continue
systemctl enable "ssh-tunnel-${tunnel_name}.service" 2>/dev/null && \
echo -e "${GREEN}✓ Автозапуск включен для $tunnel_name${NC}" || \
echo -e "${RED}✗ Ошибка для $tunnel_name${NC}"
fi fi
tunnel_name=$(basename "$conf" .conf)
systemctl enable "ssh-tunnel-${tunnel_name}.service" 2>/dev/null && \
echo -e "${GREEN}✓ Автозапуск включен для $tunnel_name${NC}" || \
echo -e "${RED}✗ Ошибка для $tunnel_name${NC}"
done done
read -p "Нажмите Enter для продолжения..." read -p "Нажмите Enter для продолжения..."
;; ;;
2) 2)
for conf in /etc/ssh_tunnel/*.conf 2>/dev/null; do for conf in /etc/ssh_tunnel/*.conf; do
if [ -f "$conf" ]; then if [ ! -f "$conf" ]; then
tunnel_name=$(basename "$conf" .conf) continue
systemctl disable "ssh-tunnel-${tunnel_name}.service" 2>/dev/null && \
echo -e "${YELLOW}✗ Автозапуск выключен для $tunnel_name${NC}" || \
echo -e "${RED}✗ Ошибка для $tunnel_name${NC}"
fi fi
tunnel_name=$(basename "$conf" .conf)
systemctl disable "ssh-tunnel-${tunnel_name}.service" 2>/dev/null && \
echo -e "${YELLOW}✗ Автозапуск выключен для $tunnel_name${NC}" || \
echo -e "${RED}✗ Ошибка для $tunnel_name${NC}"
done done
read -p "Нажмите Enter для продолжения..." read -p "Нажмите Enter для продолжения..."
;; ;;
@@ -975,7 +980,10 @@ view_logs() {
case $choice in case $choice in
1) 1)
echo -e "${CYAN}Доступные логи:${NC}" echo -e "${CYAN}Доступные логи:${NC}"
ls $LOG_DIR/*.log 2>/dev/null | while read log; do for log in $LOG_DIR/*.log; do
if [ ! -f "$log" ]; then
continue
fi
echo " $(basename $log)" echo " $(basename $log)"
done done
echo "" echo ""
@@ -989,11 +997,12 @@ view_logs() {
;; ;;
2) 2)
echo -e "${CYAN}Все логи туннелей:${NC}" echo -e "${CYAN}Все логи туннелей:${NC}"
for log in $LOG_DIR/*.log 2>/dev/null; do for log in $LOG_DIR/*.log; do
if [ -f "$log" ]; then if [ ! -f "$log" ]; then
echo -e "\n${YELLOW}=== $(basename $log) ===${NC}" continue
tail -5 "$log"
fi fi
echo -e "\n${YELLOW}=== $(basename $log) ===${NC}"
tail -5 "$log"
done done
read -p "Нажмите Enter для продолжения..." read -p "Нажмите Enter для продолжения..."
;; ;;
@@ -1044,16 +1053,17 @@ test_connections() {
;; ;;
2) 2)
echo -e "${CYAN}Тест портов туннелей:${NC}" echo -e "${CYAN}Тест портов туннелей:${NC}"
for conf in /etc/ssh_tunnel/*.conf 2>/dev/null; do for conf in /etc/ssh_tunnel/*.conf; do
if [ -f "$conf" ]; then if [ ! -f "$conf" ]; then
source "$conf" 2>/dev/null continue
tunnel_name=$(basename "$conf" .conf) fi
echo -n " $tunnel_name (локальный $LOCAL_PORT): " source "$conf" 2>/dev/null
if timeout 2 nc -z localhost "$LOCAL_PORT" 2>/dev/null; then tunnel_name=$(basename "$conf" .conf)
echo -e "${GREEN}✓ Открыт${NC}" echo -n " $tunnel_name (локальный $LOCAL_PORT): "
else if timeout 2 nc -z localhost "$LOCAL_PORT" 2>/dev/null; then
echo -e "${RED}Закрыт${NC}" echo -e "${GREEN}✓ Открыт${NC}"
fi else
echo -e "${RED}✗ Закрыт${NC}"
fi fi
done done
;; ;;