Advertisement
Guest User

Opened ports in docker

a guest
May 10th, 2025
948
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.68 KB | Source Code | 0 0
  1. #!/bin/bash
  2.  
  3. # IP-адрес сервера
  4. SERVER_IP="your_host_ip"
  5.  
  6. # Файл для сохранения результатов
  7. OUTPUT_FILE="ports.md"
  8.  
  9. # Очистка и заголовок Markdown-файла
  10. cat > "$OUTPUT_FILE" <<EOF
  11. # Открытые порты на $SERVER_IP
  12.  
  13. - **$SERVER_IP**
  14. EOF
  15.  
  16. # Получаем список всех контейнеров
  17. docker ps --format "{{.Names}}" | while read -r SERVICE_NAME; do
  18.     # Получаем порты контейнера
  19.     PORTS=$(docker inspect --format='{{range $p, $conf := .NetworkSettings.Ports}}{{if $conf}}{{$p}} -> {{(index $conf 0).HostPort}}{{"\n"}}{{end}}{{end}}' "$SERVICE_NAME")
  20.  
  21.     # Проверяем, есть ли у контейнера открытые порты
  22.     if [[ -n "$PORTS" ]]; then
  23.         echo "  - **$SERVICE_NAME**" >> "$OUTPUT_FILE"
  24.  
  25.         # Временный файл для хранения уникальных портов
  26.         TEMP_PORT_FILE=$(mktemp)
  27.  
  28.         # Обрабатываем каждый порт
  29.         echo "$PORTS" | while read -r PORT_MAPPING; do
  30.             if [[ "$PORT_MAPPING" == *"->"* ]]; then
  31.                 HOST_PORT=$(echo "$PORT_MAPPING" | awk -F'-> ' '{print $2}')
  32.  
  33.                 if [[ -n "$HOST_PORT" ]]; then
  34.                     echo "    - [**$SERVER_IP:$HOST_PORT**](http://$SERVER_IP:$HOST_PORT)" >> "$TEMP_PORT_FILE"
  35.                 fi
  36.             fi
  37.         done
  38.  
  39.         # Добавляем уникальные порты в основной файл
  40.         sort -u "$TEMP_PORT_FILE" >> "$OUTPUT_FILE"
  41.         rm -f "$TEMP_PORT_FILE"
  42.     fi
  43. done
  44.  
  45. echo "Файл $OUTPUT_FILE создан успешно."
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement