2024.07.03 - [공부하자/wsl] - [wsl]wsl2(Ubuntu 22.04) ip고정하기 -1(powershell, 포트포워딩)
**이전글**
지난시간 ip고정 작업을 윈도우가 부팅될때 마다 실행되도록 자동화하는 파워셸스트립트를 작성해보았다. 이젠 이 스크립트를 윈도우 스케줄러에 등록하기만 하면 된다.
윈도우 작업 자동화
1) 작업스케줄러에 스크립트 등록하기
#작업스케줄러 검색
윈도우 `시작` 버튼을 누르고 `작업 스케줄러`를 검색한다.
#작업스케줄러화면
작업스케줄러가 실행되면 다음과 같은 실행화면이 나온다. 기존에 존재하는 스케줄러 작업들이 작업스케줄러 라이브러리에 있는 것을 볼 수 있다. 이제 여기에 내 작업을 추가하면 된다.
#작업폴더 만들고 작업생성
루트폴더인 `작업 스케줄러 라이브러리`에 바로 작업을 생성하면 나중에 찾기가 어려워질 수 있으니 하위폴더를 만들어서 내가 직접 생성한 작업들을 편하게 관리하도록 하자. 나는 `highgarden`이라는 폴더를 생성하여 스크립트를 관리하도록 하였다.
#새 작업만들기 [일반]
새 작업만들기 [일반] 탭에서는 작업의 `이름`을 적어주고 나중에 알아볼 수 있도록 `설명`도 간단하게 적어준다. 그 다음 중요한 것은 `가장 높은 수준의 권한으로 실행`을 체크해 주는 것이다. 포트포워딩 작업은 방화벽 설정을 만지는 것이다. 그래서 관리자 권한으로만 변경이 가능하다. 이전 포스팅에서도 포트포워딩을 위해 관리자 권한의 파워셸로 작업을 했었다.
`구성대상`은 여러 버전이 있는데 버전에 맞게 지정해주면 되는데 window vista 버전으로 해도 크게 문제없이 작동 했다.
#새 작업 만들기 [트리거]
[트리거] 탭에서 `새로 만들기` 를 클릭하여 스크립트가 실행될 조건을 설정해준다. 앞서 윈도우가 시작될 때 스크립트를 실행하고자 했으니 `작업 시작` 에서 `시작할 때`를 선택해준다.
그 다음 `고급 설정` 에서 나는 `작업 지연시간` 을 1분을 주었다. 그 이유는 wsl부팅시점 때문이었다. 윈도우가 부팅되면 따라서 여러가지 작업들이 수행된다. 이 때 wsl도 같이 부팅되는데 만약 내가 만든 스크립트가 wsl보다 빠르게 실행된다면 동적으로 wsl의 ip를 가져오지 못할것이고 스크립트가 제대로 수행되지 못한다. 그래서 윈도우 시작 후 작업 지연시간 1분을 주어 wsl이 부팅되도록 충분한 시간을 주고 스크립트가 실행되도록 했다.
작업의 성격에 따라 여러가지 설정을 조절해보자.
#새 작업 만들기 [동작]
[동작] 탭에서 설정할 것은 `프로그램/스크립트` 와 `인수 추가`부분이다.
-프로그램/스크립트: 동작을 실행할 프로그램을 선택한다. powershell.exe를 찾아서 선택한다. 파워셸 실행프로그램의 경로는"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" 에 있다.
-인수 추가: 스크립트의 경로를 지정해준다.
#프로그램/스크립트
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
#인수추가
#실행권한을 부여 후 파일등록
-ExecutionPolicy Unrestricted -File "C:\파일경로\파일명.ps1"
#예시
-ExecutionPolicy Unrestricted -File "C:\wsl_portforward.ps1"
스크립트를 실행하려면 권한이 있어야 하는데 "ExecutionPolicy Unrestricted" 옵션을 주어 권한 문제를 우회할 수 있다. 그 뒤에는 내가 실행시킬 스크립트의 실제 경로를 적어준다. 나같은 경우 C드라이브에 바로 `wsl_portforward.ps1` 파일을 두었기에 그 경로를 적어주었다.
입력이 끝나면 `확인` 버튼을 눌러 작업생성을 완료하도록 하자.
#등록완료
등록이 완료되었다. [마지막 실행결과] 탭을 보면 작업이 아직 실행되지 않았다고 나온다. 이제 계획대로라면 윈도우가 시작될 때 스크립트가 실행되고 마지막 실행시간과 결과가 업데이트 될 것이다.
2) 테스트
#포트포워딩 규칙 조회
제대로 스크립트가 등록되었는지 확인하기 위해 포트포워딩 상태를 다시 확인해보자. 지난시간 80번 포트를 wsl의 90번 포트로 연결해 두었다.
#스크립트 변경
스크립트를 수정해 80번 포트를 wsl의 80번으로 포트포워딩 되도록 한다.
#작업 스케줄러에서 스크립트 실행
작업스케줄러에 방금 등록한 `run_wsl_portforwad` 작업을 `실행`버튼으로 실행시켜본다.
파란색 파워셸 창이 한 번 깜빡 한 후 상태를 확인 해 보면 마지막실행시간이 현재시간으로 업데이트 되었다. 일단 스크립트가 실행은 된 것이다.
포트포워딩 상태를 다시 조회해보면 80번포트로 잘 변경되었다. 스크립트가 스케줄러를 통해 잘 실행된 것이다.
#웹서버로 테스트
wsl에 nginx를 구동시켜 실제로 포트포워딩이 잘 연결되었는지 마지막으로 테스트 해보자.
내pc(window) ip인 192.xxx.xxx.xxx 로 접속했는데도 nginx의 index페이지가 잘 조회된다.
wsl에 서비스를 올리기 위해 포트포워딩이 필요하게 되었고 그로 인해 고정적으로 ip를 사용할 수 있도록 해야했다. 그 과정에서 윈도우 스케줄러와 파워셸 스크립트를 사용해 보았다. 스크립트를 스케줄러에 등록해놓고 트리거에 따라 작동시키면 많은 것들을 자동화 할 수 있을 것 같다.
'공부하자 > wsl' 카테고리의 다른 글
[wsl]wsl2(Ubuntu 22.04) ip고정하기 -1(powershell, 포트포워딩) (2) | 2024.07.03 |
---|