Linux
Пример файла
Вернуться 20-01-2026, 09:29 Просмотров: 2 Автор: xlop
Сканирование диапазона IP по заданному порту
Сканирование диапазона IP по заданному порту.
Исходный файл: scan_port.sh
#!/bin/bash
# Файл со списком IP/диапазонов
IP_LIST="ips.txt"
# Файл с результатами
OUTPUT="result.txt"
# Проверка существования файла со списком IP
if [[ ! -f "$IP_LIST" ]]; then
echo "Файл $IP_LIST не найден."
exit 1
fi
# Очистим файл с результатами
> "$OUTPUT"
# Обход всех строк в файле
while IFS= read -r ip_range; do
# Пропустить пустые строки и комментарии
[[ -z "$ip_range" || "$ip_range" == \#* ]] && continue
echo "Сканирую: $ip_range"
echo "===== Сканирование: $ip_range =====" >> "$OUTPUT"
# Выполнение сканирования и добавление результата в файл
nmap --host-timeout 20s --min-rtt-timeout 60s -p 8291 "$ip_range" >> "$OUTPUT" 2>>"$OUTPUT"
echo -e "\n" >> "$OUTPUT"
done < "$IP_LIST"
echo "✅ Сканирование завершено. Результаты в файле $OUTPUT"
Пример файла ips.txt
91.234.10.0/28
192.168.1.1
10.0.0.1-10.0.0.5
# Комментарий
Инструкция по использованию
- Создайте файл
ips.txtс нужными IP-адресами/диапазонами - Сохраните скрипт в файл, например,
scan443.sh - Сделайте файл исполняемым:
chmod +x scan_port.sh - Запустите:
./scan_port.sh
Параллельные версии скрипта
Вариант 1: Параллельное сканирование с xargs
Файл: scan_xargs.sh
#!/bin/bash
IP_LIST="ips.txt"
OUTPUT="result.txt"
THREADS=5 # Количество параллельных потоков
# Проверка на существование списка IP
if [[ ! -f "$IP_LIST" ]]; then
echo "Файл $IP_LIST не найден."
exit 1
fi
# Очистим файл результатов
> "$OUTPUT"
# Запуск параллельного сканирования с помощью xargs
cat "$IP_LIST" | grep -v '^#' | grep -v '^$' | \
xargs -P "$THREADS" -I {} sh -c \
'echo "===== Сканирование: {} =====" >> result.txt; \
nmap --host-timeout 20s --min-rtt-timeout 60s -p 8291 {} >> result.txt 2>>result.txt; \
echo "" >> result.txt'
echo "✅ Сканирование завершено. Результаты в файле $OUTPUT"
Вариант 2: Параллельное сканирование с GNU parallel
Файл: scan_parallel.sh
#!/bin/bash
IP_LIST="ips.txt"
OUTPUT="result.txt"
THREADS=5 # Количество параллельных заданий
# Проверка наличия GNU parallel
if ! command -v parallel &> /dev/null; then
echo "❌ GNU parallel не установлен. Установите с помощью: sudo apt install parallel"
exit 1
fi
# Очистка старого файла
> "$OUTPUT"
# Параллельное выполнение
cat "$IP_LIST" | grep -v '^#' | grep -v '^$' | \
parallel -j "$THREADS" 'echo "===== Сканирование: {} =====" >> result.txt; \
nmap --host-timeout 20s --min-rtt-timeout 60s -p 8291 {} >> result.txt 2>>result.txt; \
echo "" >> result.txt'
echo "✅ Сканирование завершено. Результаты в $OUTPUT"
Установка GNU parallel
Для Ubuntu/Debian:
sudo apt update
sudo apt install parallel
Запуск параллельных версий
chmod +x scan_xargs.sh
./scan_xargs.sh
Или:
chmod +x scan_parallel.sh
./scan_parallel.sh
Обновлённый скрипт от 29.07.2025 v2
#!/bin/bash
IP_LIST="ips.txt"
OUTPUT="result.txt"
THREADS=5 # Количество параллельных заданий
# Проверка наличия GNU parallel
if ! command -v parallel &> /dev/null; then
echo "❌ GNU parallel не установлен. Установите с помощью: sudo apt install parallel"
exit 1
fi
# Очистка старого файла
> "$OUTPUT"
# Параллельное выполнение
cat "$IP_LIST" | grep -v '^#' | grep -v '^$' | \
parallel -j "$THREADS" 'echo "===== Сканирование: {} =====" >> result.txt; \
nmap --host-timeout 20s --min-rtt-timeout 60s -p 8291 {} >> result.txt 2>>result.txt; \
echo "" >> result.txt'
echo "✅ Сканирование завершено. Результаты в $OUTPUT"
- Баланс скорости и чувствительности
- Параметры
-sS,-n,--min-hostgroup, и--max-retriesускоряют сканирование без потери точности. - Параллелизация с
parallelили фоновыми процессами значительно сокращает время на больших диапазонах. - Предварительное ping-сканирование минимизирует работу с неактивными хостами.
- Избегайте чрезмерного увеличения
-T5или слишком большого--min-hostgroup, чтобы не пропустить хосты в нестабильных сетях.
Обновлённый скрипт от 29.07.2025 v3
#!/bin/bash
IP_LIST="ips.txt"
OUTPUT="result.txt"
if [[ ! -f "$IP_LIST" ]]; then
echo "Файл $IP_LIST не найден."
exit 1
fi
> "$OUTPUT"
while IFS= read -r ip_range; do
[[ -z "$ip_range" || "$ip_range" == \#* ]] && continue
echo "Сканирую: $ip_range"
echo "===== Сканирование: $ip_range === minte===" >> "$OUTPUT"
temp_output=$(mktemp)
nmap -sS -sV --version-intensity 2 -n --min-hostgroup 64 --max-retries 2 --host-timeout 15s --max-rtt-timeout 500ms -p 80 "$ip_range" > "$temp_output" 2>&1
cat "$temp_output" >> "$OUTPUT"
rm "$temp_output"
echo -e "\n" >> "$OUTPUT"
done < "$IP_LIST"
Объяснение изменений
-sV: включает определение сервиса и версии. Например, для порта 80 nmap может вернутьhttpи веб-сервер (например,Apache/2.4.41илиnginx/1.18.0).--version-intensity 2: ограничивает глубину проверки сервиса, чтобы минимизировать время. Уровень 2 обычно достаточно для стандартных веб-сервисов.- Остальные параметры (
-sS,-n,--min-hostgroup 64,--max-retries 2,--host-timeout 15s,--max-rtt-timeout 500ms) сохраняют скорость, как описано ранее. - Временный файл (
temp_output) используется для буферизации вывода, чтобы уменьшить нагрузку на ввод-вывод.
Пример вывода
При сканировании диапазона IP с помощью этой команды в $OUTPUT вы получите что-то вроде:
===== Сканирование: 192.168.1.0/24 =====
Nmap scan report for 192.168.1.10
Host is up (0.0023s latency).
PORT STATE SERVICE VERSION
80/tcp open http Apache/2.4.41 (Ubuntu)
Nmap scan report for 192.168.1.11
Host is up (0.0021s latency).
PORT STATE SERVICE VERSION
80/tcp open http nginx/1.18.0
Вернуться 20-01-2026, 09:29 Просмотров: 2 Автор: xlop
Авторизация
Мониторинг Серверов
Голос на TopCraft
Голос на McTop
Голос на Hotmc
Голос на M-inside
Голос на MineCraftrating
Голос на ServerList
Голос на Misterlauncher
Голос на Mmonitoring
Голос на Minecraft-Statistic
Голос на Tmonitoring
Голос на Mcrate.su
Мы в Вконтакте



