Python 如何在Win10/powerhsell上获得免费/开放的本地端口以进行ssh转发
我来自Unix世界,希望在Windows 10机器上执行ssh端口转发Python 如何在Win10/powerhsell上获得免费/开放的本地端口以进行ssh转发,python,windows,powershell,ssh,port,Python,Windows,Powershell,Ssh,Port,我来自Unix世界,希望在Windows 10机器上执行ssh端口转发ssh-L。 我有一个使用python一行程序的工作解决方案。 现在我想问Powershell用户如何在purePowershell $LOCALPORT=$(python-c“导入套接字;s=socket.socket();s.bind(“”,0));打印(s.getsockname()[1]);s.close()) 为了给您一些框架,它将在如下脚本中运行: $USER=“USERNAME” $REMOTEHOST=“RE
ssh-L
。
我有一个使用python一行程序的工作解决方案。
现在我想问Powershell用户如何在purePowershell
$LOCALPORT=$(python-c“导入套接字;s=socket.socket();s.bind(“”,0));打印(s.getsockname()[1]);s.close())
为了给您一些框架,它将在如下脚本中运行:
$USER=“USERNAME”
$REMOTEHOST=“REMOTEHOST”
$LOCALIP=$(获取NetAdapter-名称“WiFi”|获取NetIPAddress)。IPv4Address
$LOCALPORT=$(python-c“导入套接字;s=socket.socket();s.bind(“”,0));打印(s.getsockname()[1]);s.close())
$REMOTEIP=ssh$USER@$REMOTEHOST“cat`$HOME/var/ip|cut-d`:`'-f1”
$REMOTEPORT=ssh$USER@$REMOTEHOST“cat`$HOME/var/ip|cut-d`:`'-f2”
启动作业ssh-L$LOCALIP`:$LOCALPORT`:$REMOTEIP`:$REMOTEPORT$USER@$REMOTEHOST-N-v-v
睡眠5
```
您可以尝试以下方法:
$usedPorts = (Get-NetTCPConnection | select -ExpandProperty LocalPort) + (Get-NetUDPEndpoint | select -ExpandProperty LocalPort)
5000..60000 | where { $usedPorts -notcontains $_ } | select -first 1
Get-NetCpConnection和Get-NetUDPEndpoint都返回当前连接,我们只需要LocalPort。
下一行从5000迭代到60000,并检查是否未使用端口号。管道的最后一部分返回第一个结果
编辑
我刚刚发现,您还可以使用此功能获取当前使用的端口:
$usedPorts = (Get-NetTCPConnection).LocalPort + (Get-NetUDPEndpoint).LocalPort
此语法称为成员枚举,自PowerShell v3起可用。
您可以在此处阅读更多信息: