Windows의 명령줄에서 특정 경로에 대한 게이트웨이를 얻는 방법은 무엇입니까?

Windows의 명령줄에서 특정 경로에 대한 게이트웨이를 얻는 방법은 무엇입니까?

Windows(이 경우 Win7)에서 특정 경로(인터페이스 아님)에 대한 게이트웨이를 인쇄하는 방법이 있습니까? OpenVPN _up 스크립트에서 동적으로 경로를 추가해야 하지만 연결이 형성될 때 게이트웨이가 동적으로 할당되므로 정적으로 스크립팅할 수 없습니다.

또한 _up 스크립트에 사용할 수 있는 일부 환경 변수(route_vpn_gateway?)가 잠재적으로 있는 것으로 보이지만 이를 작동시키지 못했습니다.

나는 GnuWin 도구의 awk/grep을 사용하고 '경로' 출력을 구문 분석한다고 가정합니다. 하지만 아마도 더 깨끗하고 쉬운 방법이 있을까요?

답변1

당신은 쉽게 사용할 수 있습니다파워셸:

PS C:\Users\mmoor> $RouteTable = Get-WmiObject Win32_IP4RouteTable
PS C:\Users\mmoor> $RouteTable[0].Mask
0.0.0.0
PS C:\Users\mmoor> $RouteTable[0].Destination
0.0.0.0
PS C:\Users\mmoor> $RouteTable[0].NextHop
<Gateway Address>

이를 Windows 명령줄에서 ROUTE PRINT를 실행하는 것과 비교해 보세요. Powershell은 장황한 스크립팅 언어이므로 openvpn 클라이언트 구성 스크립트를 쉽게 업데이트할 수 있습니다. 이것이 바로 여러분이 하려는 일이라고 가정합니다. 객체지향 기반이기도 합니다.

나는 다음과 같이 뭔가를 할 것입니다 :

1) wmi에서 라우팅 테이블을 가져옵니다(위 그림 참조).

2) 각 라우팅 테이블 항목은 배열의 하나의 항목입니다(따라서 위의 변수 뒤에는 [0]이 있습니다).

3) 원하는 IP 주소를 찾을 때까지 어레이에서 foreach를 수행합니다.

4) RouteTable 항목에서 NextHop 멤버를 가져와 저장합니다.

5) OpenVPN 클라이언트 구성 파일을 읽습니다(powershell에서 get-content를 사용하면 파일의 문자열 배열이 생성됩니다).

6) 교체하려는 문자열을 찾을 때까지 문자열 배열을 반복한 다음 문자열을 교체하고 파일을 저장합니다.

이것이 올바른 방향을 알려주기를 바랍니다.

관련 정보