我想在 Windows 7 桌面上转发几个范围。理想情况下,我想使用桌面实用程序来实现此目的,但除了这个之外我找不到其他程序:http://www.quantumg.net/portforward.php
但是,它接受的是端口号,而不是端口范围。因此,如果我要转发 10000 个端口,就必须添加 10000 个条目。
有没有更好的方法?如果有命令行实用程序和脚本,那就更好了。
答案1
我没有看到任何好的替代方案,但我有一个想法。
您提到的程序允许您从包含端口、目的地和本地端口信息的文本文件中加载。
编写一个程序将此信息输出到给定范围的文本文件相当容易。然后您可以将文本文件加载到您提到的端口转发程序中。
这是我刚刚编写的一个 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,本地端口和目标端口相同。根据需要进行修改。
答案2
扩展 James T 的解决方案,这里有一个批处理脚本:
某物.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)
该线路/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%)