1

Я хотел бы перенести несколько диапазонов на моем рабочем столе Windows 7. В идеале я хотел бы использовать настольную утилиту для этой цели, но я не смог найти ее, кроме этой: http://www.quantumg.net/portforward.php

Однако он принимает номера портов, а не диапазоны портов. Так что, если мне нужно перенаправить 10000 портов, мне нужно будет добавить 10000 записей.

Есть ли способ лучше? Утилиты командной строки и сценарии хороши, если таковые имеются.

2 ответа2

3

Я не видел хороших альтернатив, но у меня есть идея.

Упомянутая вами программа позволяет вам загружать из текстового файла, заполненного информацией о порте, месте назначения и локальном порту.

Было бы довольно легко написать программу, которая выводит эту информацию в текстовый файл с заданным диапазоном. Затем вы можете загрузить текстовый файл в программу переадресации портов, которую вы упомянули.

Вот программа на Java, которую я просто собрал (извините, я начинающий программист)

package portforwardranges;
import java.io.File;
import java.io.PrintWriter;

public class PortForwardRanges {

    PortForwardRanges(){
        try {
            PrintWriter pw = new PrintWriter(new File("output.txt"));
            for (int i = 50; i <= 100; i++){
            pw.print(i);
            pw.print(" 192.168.1.2 ");
            pw.print(i);
            pw.println();
            }

            pw.close();

        } catch (Exception ex) {
            System.out.println(ex);
        }
    }

    public static void main(String[] args) {
        PortForwardRanges app = new PortForwardRanges();
    }
}

И создает файл с именем output.txt с этим в нем:

50 192.168.1.2 50
51 192.168.1.2 51
52 192.168.1.2 52
53 192.168.1.2 53
54 192.168.1.2 54
...

Он идет от 50 до 100, и локальный порт и порт назначения совпадают. Измените его, как вы хотите.

3

Продолжая решение Джеймса Т, вот пакетный скрипт:

something.cmd

FOR /L %G IN (50, 1, 100) DO ECHO %G 192.168.1.2 %G >> hi.txt

Объяснение:

  • 50 - начальный номер
  • 1 шаг для каждого цикла
  • 100 - это конечный номер

Если вы хотите "переместить" диапазон портов в пункте назначения (например, 50-100 в источнике, 100-150 в пункте назначения), используйте этот пакетный скрипт:

setlocal ENABLEDELAYEDEXPANSION 
FOR /L %%G IN (50, 1, 100) DO ( 
set /a dest=%%G+50 
ECHO %%G 192.168.1.2 !dest! >> hi.txt) 

Строка set /a dest=%%G+50 устанавливает ваше расстояние от портов источника.

Если вы хотите более длинный, но более простой в обслуживании скрипт:

@echo off
setlocal ENABLEDELAYEDEXPANSION
set start=150
set step=5
set end=200
set destdistance=-50
set ip=192.168.1.2
set outputfile=output.txt


FOR /L %%G IN (%start%, %step%, %end%) DO ( 
set /a dest=%%G%destdistance%
ECHO %%G %ip% !dest! >> %outputfile%) 

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .