모든 명령을 웹 브라우저에서 실행해 봅니다.

3761 단어 nginxBash리눅스

개요



잠자리면서 서버의 정보를 보고 싶은 것이 있었으므로, 커멘드를 실행한 결과가 WEB 브라우저로부터 볼 수 있도록 해 보았습니다. 기술적으로는 Nginx에서 요청시 쉘 스크립트가 작동하고 HTML로 그릴 수 있습니다. Docker 컨테이너 위에서 움직이기 때문에 이식도 시작도 간단합니다. 아무렇지도 않지만 좋아하는 명령을 추가하거나 CSS로 정돈하는 것은 기호로 · ·



요건은 이런 느낌입니다.
  • 필요할 때만 동작한다. 매우 가벼운 일
  • 작동중인 프로세스의 CPU/메모리 사용률을 볼 수 있습니다
  • WEB 브라우저에서 확인할 수있는 것
  • 사용자 정의가 쉽습니다
  • Docker 컨테이너에서 작동

  • 사용법


  • (사전 준비) docker 명령을 사용할 수 있는지 확인하십시오
  • (사전 준비) docker-compose 명령을 사용할 수 있는지 확인하십시오
  • 리포지토리를 복제합니다.
  • git clone https://github.com/shun-sa/ps-webapp.git
    cd ps-webapp
    
  • 시작합니다.
  • docker-compose up -d
    
  • http://<서버의 IP>:8081/top.sh 에 액세스

  • 사용자 정의 예



    명령을 추가하고 싶습니다.



    top.sh에 보고 싶은 명령을 cecho <コマンド>로 작성해 가면 OK입니다. ps의 경우는 cecho ps 네요.

    top.sh
    #!/bin/sh
    
    eval $QUERY_STRING
    echo 'Content-type: text/html'  
    echo ''
    
    echo '<html>'
    echo '<head></head>'
    echo '<h1>Server Overview</h1>'
    
    cecho(){
        echo "<h2>${@}</h2>"
        echo "<pre>"
        eval $@
        echo "</pre>"
    }
    
    # ここに足していく
    cecho sensors
    cecho top -b -n 1 -c | head -n 30
    
    echo '<body>'
    
    

    GPU 사용률을보고 싶습니다.



    컨테이너 내에서 nvidia-smi 명령을 실행할 수 있다면 docker-compose.yml,top.sh에 다음을 추가하면 볼 수 있습니다.

    docker-compose.yml
        environment:
          - NVIDIA_DRIVER_CAPABILITIES=all
          - NVIDIA_VISIBLE_DEVICES=all
        runtime: nvidia
    

    top.sh
    cecho nvidia-smi
    



    GET 메소드의 인수를 사용하고 싶습니다.



    GET 메소드에 지정된 값을 스크립트에서 사용할 수 있습니다. URL에 testkey를 지정하고 top.sh로 보면 제대로 표시됩니다. 그리고는 커멘드를 건네주거나 PID를 건네주어 프로세스를 떨어뜨리는 등은 기호로・・・

    http://<서버 IP>:8081/top.sh?testkey=val

    top.sh
    echo $testkey
    



    ⚠️주의



    모든 명령을 실행할 수 있는 특성상 호스트 머신 호스트 머신을 재시작하거나 최악의 경우 범죄 발판에 활용될 수 있습니다. 인터넷에서 볼 수 있는 장소에 두는 등은 그만두자.

    좋은 웹페이지 즐겨찾기