read
개요
- WSL2 VM(guset)에서 Host(WIndows10) 웹서비스, SSH 접속을 하기 위해서 Host IP가 필요
- 노트북을 회사와 집에서 사용하고 있어 매번 Host IP를 확인하기 번거로워 shell script로 자동으로 구하는 방법 필요
- nameserver IP 또는 windows 명령어 ipconfig.exe를 활용 ip를 구하고 환경변수로 저장하고 호스트 서비스 접속이 필요할때 해당 환경 변수를 사용
- 아래 방법은 guest vm이 Linux 일경우만 가능함
nameserver IP
- Linux에서 WSL 시작 될 때 설정 하는DNS 서버 설정 파일의 nameserver IP을 활용
-
Window에서 어뎁터 설정(제어판\네트워크 및 인터넷\네트워크 연결)에서 보면 vEthernet (WSL) 표시 되는 어뎁터의 IP
> cat /etc/resolv.conf # This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf: # [network] # generateResolvConf = false nameserver 192.168.61.129
-
WSL guest vm은 기본적으로 동적으로 IP 할당 받아 NAT를 통해 외부와 통신함
> ip addr |grep eth0 5: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 inet 192.168.61.130/28 brd 192.168.61.143 scope global eth0
-
/etc/resolv.conf의 nameserver 뒤의 IP를 가져와 $HOSTIP로 저장
> export HOSTIP=$(cat /etc/resolv.conf | grep -oP '(?<=nameserver ).+') > echo $HOSTIP 192.168.61.129 #perl 정규표현식이 어렵다면 > tail -1 /etc/resolv.conf | cut -d' ' -f2 192.168.61.129
- P, –perl-regexp Interpret PATTERNS as Perl-compatible regular expressions
- o, –only-matching Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line.
ipconfig.exe
-
WSL에서 windows 명령어를 사용할 수 있으므로 Linux grep 명령어로 WSL IP 획득
> export HOSTIP=$(/mnt/c/Windows/System32/ipconfig.exe | grep -A 10 WSL | grep IPv4 | awk '{print $14; exit;}') ~ > echo $HOSTIP 192.168.61.129
-A NUM, –after-context=NUM Print NUM lines of trailing context after matching lines.
-B NUM, –before-context=NUM Print NUM lines of leading context before matching lines. -C NUM, -NUM, –context=NUM Print NUM lines of output context.
.zshrc(또는 .bashrc)
-
로그인 시에 자동으로 실행 되도록 .zshrc(또는 .bashrc)에 추가
export HOSTIP=$(cat /etc/resolv.conf | grep -oP '(?<=nameserver ).+') alias gokdrvstg01='ssh vagrant@$HOSTIP -p 60001' alias gokdrvstg02='ssh vagrant@$HOSTIP -p 60002' alias gokdrvstg03='ssh vagrant@$HOSTIP -p 60003' alias gokdrvstg04='ssh vagrant@$HOSTIP -p 60004'