이번 포스트에서는 Golang 개발 도중 겪은 트러블슈팅에 대해 정리한다. 1. 문제 정의 이전에 Python으로 개발했던 ec2-connect 명령어의 속도를 높이기 위해 Golang으로 다시 개발했다.
내가 개발한 ec2-connect 명령어는 EC2 인스턴스와 IP와 비밀 키를 복사할 필요 없이, 단지 인스턴스 이름만으로 SSH에 접속하는 기능을 제공한다. 위 기능을 구현하기 위해서는 Go 프로세스 실행 도중에 SSH 터미널 세션으로 넘어가도록 개발해야 한다.
즉, Golang 소스코드 내에서 [ssh [email protected] -i Mykey.pem] 과 같은 SSH 명령어를 실행해야 한다. 이를 Golang에서 구현하는 방법은 두 가지가 있다. syscall 패키지의 syscall.Exec() 함수를 사용해 SSH 터미널로 넘어간다. os/exec 패키지의 exec.Command() 함수를 사용해 SSH 터미널로 넘어간다.
그저께 개발했을 때는 syscall.Exec() 함...