파이썬은 대부분 시스템/네트워크 장비에 기본적으로 설치되어 있어서 어렵지 않게 바로 사용할 수 있다. 또한, 다양한 라이브러리를 기본으로 제공하고 있어, 이를 통해 사용자 환경에 맞게 조합하고 구성해 ‘자동화’와 같은 사용자의 목적에 맞는 코드를 작성할 수 있다.

이 책에서는 시스템/네트워크 장비에서 실제 사용하는 파이썬 코드의 기본적인 문법과 꼭 필요한 배경 지식을 설명하고 있다. 또한 시스템/네트워크 장비가 없는 독자를 위해서도 가능한 한 직접 실습할 수 있는 환경을 구축하여 학습할 수 있도록 구성했다.

 

추천사

“파이썬을 통해서 실제 업무에 사용할 수 있는 실용적인 예제들로 가득한 책이 나와 기쁘게 소개하며, 이를 통해 엔지니어들의 스킬 증대 및 고객사들의 비즈니스에 적극적으로 활용되기를 바랍니다.”

-- Cisco 사장 조범구

“네트워크 엔지니어가 요구되는 기능을 스스로 짜 맞추어야 하는 시대에 노란 리본의 이정표 같은 책"

-- 에어키 사장 황영상

"x86 서버를 지원하면서 현장에서 느꼈던 제한사항을 독자적인 방법으로 시원스럽게 풀어 줄 것이다."

-- Levono 상무 변세건

“시스템 엔지니어의 장벽인 새로운 프로그래밍 언어에 대한 가장 빠르고 효율적인 접근 방법을 제시한다."

-- VMware PSO 박석종

 

상세 이미지

상세 이미지

조훈

IBM과 Cisco에서의 근무 경험을 통해 시스템/네트워크에 대한 균형적인 시각을 가지고 있으며, 이를 통해 데이터센터 엔지니어로 불리기를 희망하고 있다. 단순 반복작업을 피하고, 사람의 실수를 줄일 수 있는 등의 유용한 스크립트나 도구 개발을 좋아한다. 다가오는 새로운 IT 세상에서는 본인만의 가치를 위해서 시스템/네트워크 엔지니어들도 개발 언어를 하나쯤은 알고 있어야 한다고 생각하고 있다.

김종숙

명지대 컴퓨터 공학과를 졸업하고 일본에서 캐논 장비 운영 프로젝트에 2년간 참여했다. 이후 국내 소프트웨어 개발 업체에서 8년간 근무하며 다수의 금융권 프로젝트에 참여하여 다양한 운영 환경을 경험했다. 시스템 운영은 물론 일반 사용자가 편리하게 사용할 수 있는 소프트웨어를 개발하는 개발자이다.

  • ▣ 01장: 시스템/네트워크 업무 개론
    • 1.1 데이터센터란?
      • 데이터센터의 환경
      • 데이터센터의 데이터 흐름
      • 데이터센터의 장점
    • 1.2 시스템 엔지니어의 업무
      • 1.2.1서버 소개
      • 1.2.2서버의 하드웨어 구성 요소
        • CPU
        • 메모리
        • 시스템 보드
        • 네트워크 카드
        • 레이드 카드
      • 1.2.3운영체제의 역할
        • 운영체제가 해야 하는 가장 중요한 일
        • 운영체제가 해야 하는 기본적인 일
        • 모니터링 지표 생성
      • 1.2.4 시스템 엔지니어에게 추가로 요구되는 사항
      • 가상화되어 가는 환경
      • 서버와 연결되는 되는 스위치
    • 1.3 네트워크 엔지니어의 업무
      • 1.3.1네트워크 장비의 기본 기능
        • 라우팅
        • 스위칭
      • 1.3.2네트워크 프로토콜
        • 네트워크 계층별 프로토콜의 이해
        • 다양한 프로토콜의 이해
      • 1.3.3장비별 특성
        • 네트워크 피처의 용법
        • 여러 가지 분석 도구
      • 1.3.4네트워크 엔지니어에게 추가로 요구되는 사항
        • 셸(Shell)
        • 샌(SAN)
        • 가상 네트워크와 용도별 서버의 데이터 흐름에 대한 이해
    • 1.4 서버 엔지니어와 네트워크 엔지니어의 차이점
      • 네트워크 장치와 서버의 CPU에 대한 접근
      • 콘솔 포트와 매니지먼트 포트
      • OID(Object Identifier)
      • 구성품
    • 1.5 데이터센터 엔지니어의 미래
    •  
  • ▣ 02장: 실습 환경 구성
    • 2.1 실습 장비 소개
      • 2.1.1네트워크 제품군
        • 시스코 넥서스 9000 시리즈(N9000)
        • 시스코 넥서스 5000 시리즈(N5000)
      • 2.1.2시스템 제품군
        • 시스코 UCS 랙 서버
        • 시스코 UCS 블레이드 서버
        • 하이퍼바이저와 가상 머신
        • 시스템 제품군 요약
    • 2.2 실습 장비가 없는 경우를 위한 환경 구성
      • 버추얼박스 설치
      • 버추얼박스의 실행과 구성
      • 버추얼박스에 하드웨어 가상 시스템 만들기
      • 가상 머신에 센트OS 설치하기
      • 가상 머신에 하드웨어 네트워크 장치 구성
      • 가상 머신의 네트워크 주소 구성하기
      • 터미널 접속 프로그램 설치
    • 2.3 윈도우용 파이썬 설치하기
      • 파이썬 내려받기
      • 파이썬 설치하기
    •  
  • ▣ 03장: 파이썬으로 실습하는 시스템 관리 - 도입부
    • 3.1 가벼운 마음으로 시작하는 예제
      • 3.1.1 [클라이언트] 윈도우 실행 예제
        • platform 모듈을 통한 시스템 정보 확인
        • 파이썬으로 도메인 이름에 대한 IP정보 확인하기
      • 3.1.2 [운영체제] 리눅스 실행 예제
        • VI로 파일을 생성하고 생성한 파이썬 파일 실행하기
        • 파일 내용을 읽고 화면에 출력하기
      • 3.1.3 [운영체제] 관리 서버에서 파이썬 서버로 쉽게 접속하기
    • 3.2 조금 응용하기
      • 3.2.1 [운영체제] 가상 메모리 통계(vmstat)를 엑셀로 보내기
        • 시스템에 외부 모듈 적용하기
        • 간단한 데이터를 엑셀로 내보내기
        • vmstat 출력 정보를 엑셀로 내보내기
        • 엑셀 파일의 헤더 조정하기
      • 3.2.2 [운영체제] 리눅스의 로그 모니터링
        • 리눅스의 로그
        • 메시지 로그에서 찾고 싶은 로그 출력하기
        • 리눅스 로그에서 찾고 싶은 로그 출력하기(1차 수정)
        • 리눅스 로그에서 찾고 싶은 로그 출력하기(2차 수정)
        • 리눅스 로그에서 찾고 싶은 로그 출력하기(3차 수정)
        • 리눅스 로그에서 찾고 싶은 로그 출력하기(4차 수정)
        • 리눅스 로그에서 찾고 싶은 로그 출력하기(5차 수정)
        • 메시지 로그에 특정 문자열이 나타나면 알람 표시하기
        • 메시지 로그에 특정 문자열이 나타나면 알람 표시하기(1차 수정)
        • 메시지 로그에 특정 문자열이 나타나면 알람 표시하기(2차 수정)
      • 예외 사항 처리
        • 잘못된 값을 입력했을 때 다시 정확한 값을 입력하도록 유도하기
      • 자주 쓰이는 VI 명령어
    •  
  • ▣ 04장: 파이썬으로 실습하는 시스템 관리 - 응용편
    • 4.1 [서버] 간편한 RAID 로그 수집기
      • RAID Tool 설치 및 실행 예제
      • RAID에 시각 정보 출력
      • RAID 버전 정보 출력
      • 다양한 RAID 정보를 선택해서 출력하기
      • RAID 로그를 압축해서 출력하기
      • 장애가 발생한 디스크를 레이드 구성에서 안전하게 제거하기
    • 4.2 [서버] IPMI를 이용한 상태 모니터링
      • IPMI Tool 설치 및 실행 예제
      • IPMI 명령어를 통해 시스템 정보 확인하기
      • IPMI 명령 실행 결과에서 중복된 내용 제거하기
      • 다양한 IPMI 명령어를 선택해서 실행하기
      • 팬 속도와 온도 센서에 관한 트렌드 데이터를 출력하기
      • 팬 속도와 온도 센서에 관한 트렌드 데이터를 파일로 작성하기
    • 4.3 [공통] 쉽고 빠른 OID 테스트 환경 구축
      • snmpwalk 설치 및 실행 시 사용자 입력을 최소화 하기
    • 4.4 [운영체제] 사용자별 조건에 따른 작업 데이터 출력
      • 일반 사용자 권한을 가진 계정 리스트 가져오기
      • 일반 사용자의 이력 출력하기
      • 사용자별 최근 이력 출력하기
      • 사용자별로 가장 많이 사용한 명령어 이력 출력하기
      • 특정 시간대에 사용한 이력 출력하기
    • 4.5 [네트워크] 연결된 장비에 관한 정보를 자동으로 기록하기
      • CDP로 얻은 정보를 인터페이스의 설명에 작성하기
      • MAC을 통해 얻은 정보를 인터페이스 설명에 작성하기
    • 4.6 [네트워크] 인터페이스별 사용량 모니터링
      • 인터페이스의 포트 정보 추출하기
      • 인터페이스의 레이트 값을 추가 추출하기
      • 일정 시간이 지난 후 변화된 Input/Output 레이트 값을 조회하기
      • 인터페이스별 변화된 레이트 값을 그래프로 그리기
    • 예외 사항 처리
      • 좀 더 세밀하게 정확한 값을 입력하도록 유도하기
    •  
  • ▣ 05장: 파이썬과 다른 언어를 함께 사용하기
    • 5.1 [운영체제&네트워크] 배시와 파이썬
      • diff를 이용해 인터페이스 변화를 감지하고 파일에 기록하기
    • 5.2 [네트워크] 스케줄러와 파이썬
      • 스케줄러를 통해 인터페이스 설명을 자동으로 갱신하기
    • 5.3 [운영체제] 크론과 파이썬
      • 크론을 통해 시스템 상태를 주기적으로 기록하기
    • 5.4 [네트워크] CoPP 모니터링
      • 현재 패킷 드랍량과 CoPP 정보 출력하기
      • 드랍되는 패킷의 증가량과 CoPP 정보를 로그에 기록하기
    • 5.5 [네트워크] EEM과 파이썬
      • 조건은 EEM이 실행은 파이썬으로
    • 5.6 [네트워크] EEM과 파이썬 응용
      • FTP로 이미지 내려받기
      • 내려받은 이미지 파일로 부트 환경을 자동으로 재 구성하기
      • EEM을 통해서 이미지 업그레이드 자동화 구현하기
    • 예외 사항 처리
      • 다양한 환경에서도 스스로 이해하고 동작하기
    •  
  • ▣ 06장: 시스코 SDK를 이용한 시스템 관리
    • 6.1 사전 구성
      • 환경 변수 설정
      • ucsmsdk 설치
      • UCS 매니저 에뮬레이터 설치
    • 6.2 시스코 SDK를 활용한 실습
      • 6.2.1 UCS 매니저 에뮬레이터를 이용한 파이썬 실습
        • UCS 매니저 에뮬레이터 접속
        • UCS 매니저 에뮬레이터의 그래픽 모드에 접속하기
        • 설정 파일 백업 및 복원
        • UCS 이미지 파일을 확인하고 내려받기
        • 블레이드 서버의 이름 변경하기
        • UCS 매니저 에뮬레이터의 설정 추가/변경/삭제하기
      • 6.2.2 실제 UCS 매니저를 이용한 실습
        • UCS 매니저가 관리하는 블레이드 서버에 vKVM으로 접속
        • UCS 블레이드 시스템의 로그 파일 수집
      • 6.2.3 실제 UCS 랙 서버를 이용한 실습
        • 설정 파일 백업 및 복구
        • UCS 랙 서버에 vKVM으로 접속하기
        • UCS 랙 서버의 로그 파일 수집
    • 예외 사항 처리
      • 틀린 부분만 다시 입력받기
    •  
  • ▣ 07장: 파이썬으로 실습하는 시스템 관리 - 종합
    • 7.1 원격지 시스템에 대한 대량 작업
      • 7.1.1 [공통] 시스템 종류 자동인식
        • Paramiko의 환경 구성
        • paramiko를 이용한 SSH 접속 테스트
        • SSH로 접속해서 간단한 명령어 수행하기
        • SSH로 접속해서 시스템 종류 체크하기
      • 7.1.2원격지 시스템에 명령어 실행
        • SSH로 접속해서 시스템별 상태 조회 - CPU/메모리/디스크
        • SSH로 접속해서 시스템별 정보 파악 - 관리 네트워크/IP 경로
        • SSH로 접속해서 수집한 내용을 파일로 만들기
      • 7.1.3[공통] 여러 개의 원격지에 명령어 실행
        • 여러 개의 원격지 시스템에 접속해서 한 번에 정보 수집하기
    • 7.2 스마트 로그 수집기
      • 7.2.1[운영체제&네트워크] CPU 이상 상태 감지기
        • SAP HANA의 CPU 사용률 모니터링하기
        • 네트워크 장비의 CPU 사용률 모니터링하기
      • 7.2.2[네트워크] 인터페이스 상태 자동 감지 및 문제점 추적기
        • 감지 조건 및 받아야 할 로그를 선택할 UI만들기
        • 인터페이스 에러코드의 상태 값을 UI에 적용하기
        • 특정 시간단위로 변화되는 문제점을 추적하고 로그 남기기
      • 7.2.3 [운영체제&네트워크] 똑똑한 패킷 캡처 툴 만들기
        • tcpdump의 다양한 옵션을 이용한 간단한 패킷 캡처 툴 만들기
        • 특정 조건에 도달하면 패킷 수집을 중지하고 로그 작성하기
        • ethanalyzer의 다양한 옵션을 이용한 간단한 패킷 캡처 툴 만들기
        • 특정 로그가 발생했을 때 ethanalyzer의 전후 패킷 캡처하기
    • 7.3 유용한 기능 추가
      • 7.3.1 설정 파일 백업을 메일로 전송하기
        • 특정 파일을 메일로 전송하기
        • UCS 매니저 에뮬레이터 설정 백업 파일을 메일로 바로 전송하기
      • 7.3.2 수집된 정보를 엑셀의 그래프 차트로 출력하기
        • 차트를 만드는 샘플 작성하기
        • UCS 랙 서버의 FAN 상태를 차트로 그리기
      • 7.3.3 접속 정보를 기억하고 있는 똑똑한 vKVM 실행 프로그램
      • 7.3.4 자동으로 구성 파일을 백업하고 변경 사항을 확인하기
        • 네트워크 구성 파일을 변경 시도 시에만 자동으로 백업하기
        • 기간별 변경 사항 추적하기
        • 기간별 변경 사항 추적 및 분석하기
    • 7.4 확장된 예외 사항 처리
      • 예외적인 프로세스 모니터링
      • 파이썬 실행 도움말 만들기
    •  
  • ▣ 부록: Cisco UCS vKVM 접속 도우미 만들기
    • A.1. PyQt를 설치해 GUI 구성하기
      • PyQt 설치하기
      • PyQt Designer를 실행해 UI 만들기
    • A.2. PyQt로 만든 GUI 실행하기
      • PyQt에서 작성한 GUI 파일을 파이썬 코드로 만들기
      • 변환된 PyQt GUI 파이썬 코드 실행하기
      • PyQt Designer로 만든 GUI 코드를 실행하는 방법
    • A.3. 환경에 따라 다르게 동작하는 GUI 만들기
      • 환경 설정에 따라 다른 언어로 나타나는 GUI 만들기
      • 환경에 따라 다른 언어의 리소스를 GUI에 적용하기
      • 위젯의 문자열 바꾸기
    • A.4. vKVM을 실행하는 GUI 만들기
      • 위젯 이벤트 핸들링
      • 위젯에 포함된 항목 핸들링하기
      • 팝업 메시지 박스 만들기
    • A.5. EXE 실행 파일 만들기

예제코드 관련 GitHub 페이지

관련 글