자바스크립트를 활성화 해주세요

p003 powershell사용하는 리눅스 엔지니어도 만난적이 있습니다.

 ·  ☕ 3 min read

    네, pwsh core 7을 설치해서 쓰고 있는 엔지니어가 있었습니다. 스크립트 내용을 보고 물어봤더니 자기는 Invoke-RestMethod가 사용하기 간편해서 사용하고 있었다라고 하면서 설명을 하는 것이었습니다. 모르는 척하고 이야기를 받아주니, 다른 엔지니어들은 안쓰고 있는 자신만의 비밀무기처럼 조심스럽게 얘기하더군요. curl 명령과 비슷한데, 변수에 따라 분기하는 로직을 다루기가 편하다 고.

    그런데, 리눅스에서 쓰면 좋은가요? 뭐가 좋은가요?

    저는 추천합니다.

    시스템에 명령을 내릴 때, 준비되어 있는 명령어로 한 번에 해결되지 않는 경우에는 그들을 조합해서 스크립트를 작성합니다. 여기에서 DevOps가 등장합니다. 커맨드를 많이 알고 있는 것 뿐만이 아니라, 프로그래밍 실력이 뛰어난 DevOps는 이 때에 활약을 하게 됩니다.

    당신이 DevOps이고, 스크립트를 사용해서 처리해야 하는 일이 많다면, 그래서 스크립트를 사용해야할 일이 많다면, 스크립팅에 적합한 언어를 단련하는 것은 꼭 갖추어야할 무기라고 생각합니다.

    그런데, 사실 쉘스크립트는 언어의 설계상 그렇게 강력하지 않습니다. verbose하기도 하고, 명령어로 제공되지 않는 기능은 사용할 수 없습니다. 디버깅도 곤란합니다. 그래서 자동화를 하기위해 Anisible과 같은 python이 가지는 기능을 제공하는 새로운 툴들이 등장하기도 합니다만, 이또한 verbose해서 한 번 간단한 내용을 적으려 하여도 끔찍하게 많이 타이핑을 해야합니다.

    그러면, 리눅스에는 많은 언어들을 사용할 수 있는데, 다들 대체할 수 있는 후보로는 어떨까요?

    저는 shell 스크립트를 대체할 수 있는 스크립트 언어로 ipython, gradle이 가능성이 있다라고 생각했습니다. 둘 다 기존의 명령어와 혼합해서 사용할 수 있으니까요. 다른 interactive한 쉘을 제공하는 언어들, 예를 들면 nodejs, gorun 등도 기존의 명령어와 결햅해서 사용할 수 없다면, 단순히 화일을 찾거나 읽는 것만으로도 작성시간이 걸려버리고 맙니다. 기존의 시스템 커맨드등과 함께 쓸 수 있어야 한다고 생각합니다. # 기타 다른 언어들, perl, php, ruby, python, java 등등 여러 언어들에 대한 열띤 토론은 뒤로 하겠습니다.

    명령어들을 조합해서 사용해야 할 일이 많다면, powershell, ipython, gradle과 같이 쉘 커맨드와 함께 사용할 수 있는 언어들을 연구해 두는 것을 추천합니디다.

    왜 powershell을 DevOps의 무기로 추천하나요?

    저는 powershell이 가지고 있는 language적인 특색 때문에 추천합니다. 예를 들어 crond의 pid를 알아내고 싶은 경우에 보통 다음과 같은 명령을 내립니다.

    1
    2
    3
    4
    
    [root@centos7 ~]# ps -aux | grep cron
    root <strong>674</strong> 0.0 0.1 126268 1704 ? Ss 08:35 0:00 /usr/sbin/crond -n
    root 2224 0.0 0.1 125332 1104 ? Ss 09:01 0:00 /usr/sbin/anacron -s
    root 6092 0.0 0.0 112660 972 pts/0 R+ 09:45 0:00 grep --color=auto cron
    

    이 출력된 결과를 읽고 해석함으로써, crond의 pid가 674 라는 것을 알아내었습니다. 그런데 이것을 스크립트화 하려면 어떻게 해야 할까요? 당장 bash 스크립트를 머리속에 떠올리는 것은 매우 단련된 리눅스 시스템엔지니어가 아니면 어렵습니다. ipython도 쉽진 않습니다. powershell스크립트는 어떻게 할까요

    1
    2
    
    PS /root> Get-Process -Name crond | % { $_.Id }
    674
    

    이 값을 변수에 넣어서 kill하는 스크립트를 작성하는 것은, 다른 언어로 작성하는 것과 비교해 상대적으로 더 적은 에너지를 소비합니다.

    경험상 저항이 심한 쪽은 시스템 어드민.

    반면 도입에 큰 저항을 보이는 쪽도 시스템 어드민들입니다. 내가 책임을 지고 관리하는 시스템에 불필요한 패키지를 설치하고 싶지 않다라고 한다면, 또 시큐리티홀등이 발생하는 경우, 나는 책임을 질 수 없다라고 한다면, 더이상 가력하게 주장할 수가 없었습니다. 하긴, 윈도우즈에 python을 설치하고 싶다고 하면, 닷넷만 할 줄 아는 엔지니어가 쉽게 승락하기는 어려울 것입니다.

    자료 조사

    • 리눅스에서 powershell은 왜 쉽게 퍼지지 않는 걸까요.

    레퍼런스

    공유하기

    tkim
    글쓴이
    tkim
    Software Engineer