
我想在我的 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%)