Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Linux

วิธีใช้ Python สำหรับการบริหารระบบ Linux และงานเครือข่ายพื้นฐาน

Python เป็นภาษาโปรแกรมมิ่งที่ยอดเยี่ยมสำหรับการทำงานอัตโนมัติด้านการบริหารระบบบน Linux ด้วยไลบรารีที่หลากหลาย จะช่วยเพิ่มประสิทธิภาพให้กับงานต่างๆ ได้อย่างมาก จากตัวอย่างด้านล่าง คุณจะสามารถรันคำสั่งระบบ Linux, จัดการไฟล์และไดเรกทอรี, ทำงานด้านเครือข่าย และทำให้กระบวนการตรวจสอบสิทธิ์เป็นอัตโนมัติได้ในไม่กี่วินาที

Python คืออะไร?

Python สามารถอธิบายได้ว่าเป็นภาษาโปรแกรมมิ่งเพื่อวัตถุประสงค์ทั่วไป (general-purpose) ถูกพัฒนาโดยนักวิทยาการคอมพิวเตอร์ชาวดัทช์ชื่อ 귀도 ฟาน รอสซัม (Guido van Rossum) ในช่วงปลายทศวรรษ 1980 และต้นทศวรรษ 1990 เพื่อเป็นภาษาโปรแกรมที่มีการกำหนดชนิดข้อมูลแบบไดนามิก (dynamically-typed) และเป็นผู้สืบทอดมาจากภาษาโปรแกรม "ABC"

ปัจจุบัน Python ถือเป็นหนึ่งในภาษาโปรแกรมมิ่งที่ได้รับความนิยมมากที่สุดในโลก มีกรณีการใช้งานตั้งแต่การพัฒนาเว็บ ไปจนถึงคณิตศาสตร์ซับซ้อนและการคำนวณทางวิทยาศาสตร์ นอกจากนี้ยังได้รับการยกย่องในไวยากรณ์ที่สง่างามและค่อนข้างง่ายต่อการเรียนรู้

การติดตั้ง Python บน Linux

หลายการแจกจ่าย Linux (distributions) มักมี Python ติดตั้งมาโดยค่าเริ่มต้นแล้ว เพื่อตรวจสอบว่าระบบของคุณมี Python 3 ติดตั้งอยู่หรือไม่ สามารถรันคำสั่ง python3 พร้อมแฟล็ก --version ได้ดังนี้:

python3 --version

หากติดตั้ง Python แล้ว คำสั่งจะแสดงเวอร์ชันของ Python ที่กำหนดค่าไว้

สำหรับการติดตั้ง Python บน Ubuntu และ Debian:

sudo apt update && sudo apt upgrade -y
sudo apt install python3.10

ทางเลือกอื่นคือ ดาวน์โหลด Python ในรูปแบบไฟล์ ".tgz" หรือ ".xz" ได้เช่นกัน

การใช้โมดูล "os"

หนึ่งในไลบรารี Python ที่ดีที่สุดสำหรับผู้ดูแลระบบ Linux คือโมดูล "os" สามารถนำมาใช้ทำให้งานต่างๆ กลายเป็นอัตโนมัติ เช่น การจัดการไดเรกทอรีและไฟล์ รวมถึงการรันคำสั่งระบบ

ตัวอย่างเช่น สามารถใช้โมดูลนี้สร้างไดเรกทอรีใหม่ได้:

# นำเข้าโมดูล OS
import os
# ชื่อไดเรกทอรีใหม่
dir_name = "example"
try:
    # สร้างไดเรกทอรีใหม่
    os.mkdir(dir_name)
    # แสดงผลหากสร้างสำเร็จ
    print(f"Directory '{dir_name}' created successfully")
# แสดงผลหากไดเรกทอรีมีอยู่แล้ว
except FileExistsError:
    print(f"Directory '{dir_name}' already exists")

สามารถลบไดเรกทอรีได้เช่นกัน:

import os
dir_name = "example"
try:
    os.rmdir(dir_name)
    print(f"Directory '{dir_name}' deleted successfully")
except FileNotFoundError:
    print(f"Directory '{dir_name}' doesn't exist")

ย้ายชื่อไฟล์และไดเรกทอรี:

import os
current_name = "example"
new_name = "example2.0"
try:
    os.rename(current_name, new_name)
    print(f"Directory/File '{current_name}' was successfully renamed to '{new_name}'")
except FileNotFoundError:
    print(f"Directory/File '{current_name}' doesn't exist")

ลบไฟล์ได้ง่ายๆ:

import os
file_name = "example.txt"
try:
    os.remove(file_name)
    print(f"File '{file_name}' deleted successfully")
except FileNotFoundError:
    print(f"File '{file_name}' doesn't exist")

แสดงไดเรกทอรีทำงานปัจจุบัน:

import os
try:
    cwd = os.getcwd()
    print(cwd)
except:
    print("An error occurred")

ตรวจสอบเนื้อหาในไดเรกทอรี (ไฟล์และไดเรกทอรีย่อย):

import os
dir_name = "example"
try:
    content = os.listdir(dir_name)
    print(content)
except FileNotFoundError:
    print(f"Directory '{dir_name}' doesn't exist")

แสดงผู้ใช้ปัจจุบัน:

import os
try:
    user = os.getlogin()
    print(user)
except:
    print("An error occurred")

รันคำสั่ง Linux shell ผ่านโมดูล:

import os
command = "sudo apt update && sudo apt upgrade -y"
try:
    result = os.system(command)
    print(result)
except:
    print("An error occurred")

การทำงานด้านเครือข่ายด้วยโมดูล "socket"

Python มีโมดูลสำหรับงานเครือข่ายและสร้างเครื่องมือที่ซับซ้อน เช่น พอร์ตสแคนเนอร์ (port scanner) และเซิร์ฟเวอร์เกม โมดูล "socket" จึงสามารถใช้ทำงานเครือข่ายพื้นฐานบนระบบของคุณได้

ตัวอย่างเช่น ตรวจสอบที่อยู่ IP และโฮสต์เนมของระบบ:

import socket
try:
    host = socket.gethostname()
    ip = socket.gethostbyname(host)
    print(f"IP address: {ip}")
    print(f"Hostname: {host}")
except:
    print("An error occurred")

ตรวจสอบที่อยู่ IP ของเว็บไซต์:

import socket
try:
    domain = "duckduckgo.com"
    ip = socket.gethostbyname(domain)
    print(f"IP address: {ip}")
except:
    print("An error occurred")

ใช้ Paramiko ล็อกอิน SSH Server และรันคำสั่ง

หากต้องการทำให้กระบวนการล็อกอินเข้า SSH server และรันคำสั่งเป็นอัตโนมัติ ไลบรารี "Paramiko" จะเป็นประโยชน์มาก

ติดตั้งไลบรารีผ่าน pip3:

pip3 install paramiko

ใช้งาน Paramiko เพื่อเชื่อมต่อ SSH และรันคำสั่ง:

import paramiko
ip = '127.0.0.1'
port = 22
user = 'example'
password = 'example'
command = "uname -a"
try:
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(ip, port, user, password)
    stdin, stdout, stderr = ssh.exec_command(command)
    print(stdout.read().decode())
except:
    print("An error occurred")

คำถามที่พบบ่อย

1. จำเป็นต้องใช้ Python 3 สำหรับโมดูลและไลบรารีเหล่านี้หรือไม่?

แม้โมดูลและไลบรารีส่วนใหญ่จะทำงานกับ Python 2 ได้ แต่ไวยากรณ์แตกต่างกัน ทำให้โค้ดเหล่านี้รันไม่ได้ หากปรับเปลี่ยนบ้างอาจทำให้รันบน Python 2 ได้ แต่ Python 2 ล้าสมัยแล้ว ควรใช้ Python 3

2. ต้องติดตั้งโมดูล "os" และ "socket" เองหรือไม่?

โดยทั่วไป ไม่จำเป็น เพราะการติดตั้ง Python ส่วนใหญ่มาพร้อมกับโมดูลเหล่านี้อยู่แล้ว

3. สามารถใช้ Paramiko ล็อกอินระบบที่ไม่ใช่ Unix ได้หรือไม่?

ตามนักพัฒนา Paramiko ขณะนี้ไลบรารีนี้ยังไม่สามารถใช้ล็อกอินระบบที่ไม่ใช่ Unix ผ่าน SSH ได้