Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Win10/powerhsell上获得免费/开放的本地端口以进行ssh转发_Python_Windows_Powershell_Ssh_Port - Fatal编程技术网

Python 如何在Win10/powerhsell上获得免费/开放的本地端口以进行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

我来自Unix世界,希望在Windows 10机器上执行ssh端口转发
ssh-L
。 我有一个使用python一行程序的工作解决方案。 现在我想问Powershell用户如何在pure
Powershell

$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起可用。 您可以在此处阅读更多信息: