NOC online · 24/7Longview, TX · +1 323 412 0665
KinetikatechServers · Security · Websites
KO

Linux 명령 및 셸 기술

서버 스크립팅을 위한 Python: Bash가 끝나는 곳

Python은 JSON 페이로드, REST 호출, 백오프를 통한 재시도, 정규 표현식에 존재해서는 안 되는 구문 분석 등 bash 스크립트가 손에 잡히는 순간 나타납니다. bash 대체가 아닙니다. 이것은 영리한 정규식이 실제 데이터 구조와 오류 처리가 필요하다는 것을 인정해야 하는 다음 단계입니다. Server Python은 자체 역량입니다. distros 핀 인터프리터 버전, pip는 이제 시스템 설치(PEP 668)를 거부하고 가져오는 패키지는 자동화의 공격 표면입니다.

핵심 내용

  1. 올바른 용어로 OS와 대화하십시오. subprocess.run([...], check=True, Capture_output=True)은 안전한 쉘입니다. shell=True 및 os.system은 파일 이름이나 사용자 데이터가 문자열에 들어갈 때 물어뜯는 주입 경로입니다.
  2. 직렬화는 작업을 위한 Python의 장점입니다. 구성 및 API용 json.load, 인프라 형식용 yaml.safe_load(일반 로드 아님), 스프레드시트용 csv 모듈; 정규식을 사용하여 구조화된 형식을 구문 분석하는 것은 한 번만 지불한 버그입니다.
  3. 종속성은 도구당 python3 -m venv(또는 pip install --user), 요구사항.txt 고정 및 장애물이 아닌 가드레일로 취급되는 최신 배포판에 대한 pip의 '외부 관리 환경' 거부와 같이 해당 차선에 유지됩니다.
  4. SSH 측 도구는 사용할 수 있을 만큼 충분히 성숙되었습니다. bash의 SSH 루프가 결코 깔끔하게 구성되지 않는 방식으로 paramiko 또는 패브릭 드라이브 원격 검사 및 병렬 인벤토리 작업을 수행합니다. ssh가 이미 신뢰하는 것과 동일한 키를 재사용하십시오.
  5. 로깅은 인쇄 속도를 능가합니다. 회전 기능이 있는 로깅 모듈은 cron에 표시되지 않는 스크립트를 볼 수 있는 위치를 제공하고 일관된 로그 줄 형식('실행된 항목, 변경된 항목, 실패한 항목')은 호출 중 실제로 읽히는 내용입니다.
  6. 멱등성은 허세가 아닌 데이터에서 비롯됩니다. 원하는 상태를 dict로 모델링하고, 현재 상태와 원하는 상태를 비교하고, 델타에서만 작동합니다. 이 패턴은 스크립트를 두 번 실행해도 안전하게 만드는 것입니다.
  7. 스크립트는 다른 코드와 마찬가지로 CI를 얻습니다. 단위 테스트 구문 분석 기능 및 실패 경로, 러프가 있는 린트, 400줄 main()을 오타를 기다리는 사고로 처리합니다. 폴백은 리팩토링이 아닌 호출기 의무입니다.
  8. 서버의 버전 현실: 배포판에 설치된 python3은 오래되고 안정적이며 시스템 도구가 이에 대해 링크하고 apt 또는 yum이 이를 소유합니다. venv에서 자신의 런타임을 유지하고 distro 인터프리터는 그대로 두십시오.

현장 노트

한 번의 일반적인 루트 수준 pip 설치는 공유 urllib 종속성을 업그레이드하고 다음 패치 창까지 배포판 자체 적절한 접착제를 조용히 깨뜨렸습니다. Venvs와 고정된 요구 사항이 그 자리에서 발생했고 습관이 고착되었습니다.

자주 묻는 질문

Python은 bash를 대체합니까?

다양한 작업: bash는 낮은 형식으로 바이너리와 파이프라인을 조율하고 Python은 데이터 구조, API 및 오류 처리를 소유합니다. 성숙한 서버 공간은 두 가지를 모두 실행하며 둘 사이의 경계가 실제로 설계가 이루어지는 곳입니다.

Python이 서버의 다른 모든 기능을 능가하는 부분은 어디입니까?

REST API를 통해 응답할 수 있는 모든 것: 클라우드 인벤토리, DNS 레코드 유지 관리, SSL 만료 감시자, 실제 파서를 사용한 로그 재구성. bash는 어색한 체조 없이는 표현할 수 없습니다.

루트로 전역적으로 pip 설치할 수 있나요?

최신 배포판에서는 그렇지 않습니다. PEP 668은 시스템 Python을 외부에서 관리되는 것으로 표시하며 --break-system-packages는 정확히 들리는 것과 같습니다. venv 또는 --user를 사용하고 프로덕션 코드와 같은 핀 요구 사항을 사용하세요.

Python 스크립트를 적절한 서비스로 어떻게 실행합니까?

시스템 장치: 루트가 아닌 사용자, Restart=on-failure 아래의 스크립트를 가리키는 ExecStart는 자동으로 저널에 기록됩니다. 그런 다음 systemctl status 및 Journalctl -u name이 디버깅 인터페이스가 됩니다.

linux 명령 및 셸 기술에 대한 Kinetikatech의 지원

간단한 제안입니다: 관리자가 서버를 운영할지 아니면 싸울지 결정하는 명령 및 스크립팅 습관: 모든 기본 설치에 포함된 도구를 사용하여 텍스트와 프로세스를 검색, 변환, 전송 및 감독합니다. 당사의 Linux 서버 보안 및 서버 관리 서비스를 맡겨 주십시오. 철저하게 평가되고, 깨끗하게 구현되며, 24시간 모니터링됩니다.

엔지니어와 상담하기

서버 문제? 해킹된 웹사이트? 느린 페이지?

심각한 장애에 30분 이내 대응 — 24시간, 주 7일.

긴급 지원 요청 support@kinetikatech.com