คำสั่ง Linux และทักษะเชลล์
Python สำหรับการเขียนสคริปต์เซิร์ฟเวอร์: โดยที่ Bash สิ้นสุด
Python ปรากฏขึ้นทันทีที่สคริปต์ทุบตีเติบโตขึ้น: เพย์โหลด JSON, การโทร REST, ลองใหม่โดยแบ็คออฟ และการแยกวิเคราะห์ที่ไม่ควรอยู่ใน regex มันไม่ใช่การแทนที่การทุบตี มันเป็นขั้นถัดไป สถานที่ที่ regex ที่ชาญฉลาดต้องยอมรับว่ามันต้องการโครงสร้างข้อมูลจริงและการจัดการข้อผิดพลาด เซิร์ฟเวอร์ Python มีความสามารถในตัวเอง: เวอร์ชันตัวแปลพิน distros, pip ตอนนี้ปฏิเสธการติดตั้งระบบ (PEP 668) และแพ็คเกจที่คุณนำเข้าคือพื้นที่การโจมตีของระบบอัตโนมัติของคุณ
ประเด็นสำคัญ
- พูดคุยกับระบบปฏิบัติการในแง่ที่ถูกต้อง: subprocess.run([...], check=True, capture_output=True) เป็นเชลล์ที่ปลอดภัย shell=True และ os.system เป็นเส้นทางการฉีดที่จะกัดเมื่อชื่อไฟล์หรือข้อมูลผู้ใช้ส่งเข้าไปในสตริง
- การทำให้เป็นอนุกรมเป็นข้อได้เปรียบของ Python สำหรับ ops: json.load สำหรับ configs และ APIs, yaml.safe_load (ไม่โหลดธรรมดา) สำหรับรูปแบบ infra, โมดูล csv สำหรับสเปรดชีต; การแยกวิเคราะห์รูปแบบที่มีโครงสร้างด้วย regex เป็นข้อบกพร่องที่คุณจ่ายไปเพียงครั้งเดียว
- การพึ่งพาอยู่ในเลน: python3 -m venv (หรือ pip install --user) ต่อเครื่องมือ, need.txt ปักหมุดไว้ และการปฏิเสธ 'สภาพแวดล้อมที่มีการจัดการภายนอก' ของ pip ใน distros สมัยใหม่ถือเป็นรั้วแทนที่จะเป็นอุปสรรค
- เครื่องมือฝั่ง SSH โตพอที่จะใช้งาน: การตรวจสอบระยะไกลของ paramiko หรือ Fabric Drive และงานสินค้าคงคลังแบบขนานในลักษณะที่ ssh loop ของ bash ไม่เคยเรียบเรียงอย่างสมบูรณ์ ใช้คีย์เดิมซ้ำที่ ssh เชื่อถือแล้ว
- การบันทึกทำได้รวดเร็ว: โมดูลการบันทึกพร้อมการหมุนทำให้สคริปต์ที่มองไม่เห็นของ cron มีที่ที่สามารถมองเห็นได้ และรูปแบบบรรทัดบันทึกที่สอดคล้องกัน ('อะไรทำงาน อะไรเปลี่ยนแปลง อะไรล้มเหลว') คือสิ่งที่อ่านจริงขณะโทร
- Idempotency มาจากข้อมูล ไม่ใช่ bravado: จำลองสถานะที่ต้องการตามคำสั่ง กระแสต่างกับที่ต้องการ ดำเนินการเฉพาะในเดลต้าเท่านั้น รูปแบบนั้นคือสิ่งที่ทำให้สคริปต์ปลอดภัยในการทำงานสองครั้ง
- สคริปต์ได้รับ CI เช่นเดียวกับโค้ดอื่นๆ: ฟังก์ชันการแยกวิเคราะห์ทดสอบหน่วยและเส้นทางความล้มเหลว ขุยด้วยสร้อย และถือว่า main() 400 บรรทัดเป็นเหตุการณ์ที่รอการพิมพ์ผิด ทางเลือกสำรองคือหน้าที่ของเพจเจอร์ ไม่ใช่การปรับโครงสร้างใหม่
- ความเป็นจริงของเวอร์ชันบนเซิร์ฟเวอร์: python3 ที่ติดตั้ง distro นั้นเก่าและเสถียร เครื่องมือของระบบเชื่อมโยงกับมัน และ apt หรือ yum เป็นเจ้าของมัน เก็บรันไทม์ของคุณเองไว้ใน venv และปล่อยให้ล่าม distro อยู่คนเดียว
บันทึกจากหน้างาน
การติดตั้ง pip ระดับรูทแบบไม่เป็นทางการหนึ่งครั้งได้อัปเกรดการพึ่งพา urllib ที่ใช้ร่วมกันและทำลายกาว apt ของ distro อย่างเงียบ ๆ จนกระทั่งถึงหน้าต่างแพตช์ถัดไป Venv และข้อกำหนดที่ปักหมุดไว้เกิดขึ้นทันที และนิสัยก็ติดอยู่
คำถามที่พบบ่อย
Python เป็นการแทนที่ bash หรือไม่
งานที่แตกต่างกัน: bash จัดเตรียมไบนารีและไปป์ไลน์ในพิธีการระดับต่ำ Python เป็นเจ้าของโครงสร้างข้อมูล API และการจัดการความล้มเหลว เซิร์ฟเวอร์ที่เติบโตเต็มที่นั้นทำงานได้ทั้งสองอย่าง และเส้นแบ่งระหว่างทั้งสองก็คือจุดที่การออกแบบเกิดขึ้นจริง
Python เอาชนะทุกสิ่งบนเซิร์ฟเวอร์ได้ที่ไหน?
อะไรก็ตามที่ตอบได้ผ่าน REST API: คลังข้อมูลบนคลาวด์, การบำรุงรักษาบันทึก DNS, เครื่องมือดูการหมดอายุ SSL, การปรับรูปร่างบันทึกใหม่ด้วยตัวแยกวิเคราะห์จริง งานทุบตีไม่สามารถแสดงได้หากไม่มียิมนาสติกที่น่าอึดอัดใจ
ฉันสามารถติดตั้ง pip ทั่วโลกในฐานะรูทได้หรือไม่
สำหรับ distros สมัยใหม่ ไม่: PEP 668 ทำเครื่องหมายระบบ Python ว่าได้รับการจัดการจากภายนอกและ --break-system-packages เป็นสิ่งที่ดูเหมือนชัดเจน ใช้ venv หรือ --user และข้อกำหนดของพิน เช่น รหัสการผลิต
ฉันจะรันสคริปต์ Python เป็นบริการที่เหมาะสมได้อย่างไร
หน่วย systemd: ExecStart ชี้ไปที่สคริปต์ภายใต้ผู้ใช้ที่ไม่ใช่รูท Restart=on-failure บันทึกเพื่อเจอร์นัลโดยอัตโนมัติ จากนั้นสถานะ systemctl และชื่อ Journalctl -u จะกลายเป็นอินเทอร์เฟซการดีบัก
Kinetikatech ช่วยเรื่อง คำสั่ง linux และทักษะเชลล์ ได้อย่างไร
พูดตรง ๆ ว่าทีมส่วนใหญ่มาหาเราหลังลองทำเองมาแล้ว: คำสั่งและพฤติกรรมการเขียนสคริปต์ที่ตัดสินใจว่าผู้ดูแลระบบจะใช้งานเซิร์ฟเวอร์หรือต่อสู้กับเซิร์ฟเวอร์: ค้นหา แปลง ถ่ายโอน และดูแลข้อความและกระบวนการด้วยเครื่องมือที่อยู่ในทุกการติดตั้งฐาน บริการ ความปลอดภัยเซิร์ฟเวอร์ Linuxและการจัดการเซิร์ฟเวอร์ ของเรามีอยู่เพื่อไม่ให้คุณต้องเรียนรู้ คำสั่ง linux และทักษะเชลล์ แบบเจ็บปวด เราดูแลทั้งการตั้งค่า การเฝ้าดู และเรื่องกะทันหันตอนตีสาม