Computer >> Hướng Dẫn Máy Tính >  >> Hệ Thống >> Linux

Cách dùng Python cho quản trị hệ thống Linux và tác vụ mạng cơ bản

Python là ngôn ngữ lập trình tuyệt vời tự động hóa tác vụ quản trị hệ thống trên Linux. Với thư viện đa dạng, nhiều trong số đó cải thiện hiệu quả các tác vụ khác nhau. Sử dụng các ví dụ dưới đây, bạn dễ dàng chạy lệnh hệ thống Linux, làm việc với file và thư mục, thực hiện tác vụ mạng và tự động hóa quy trình xác thực chỉ trong vài giây.

Python là gì?

Python được mô tả tốt nhất là ngôn ngữ lập trình đa mục đích. Được phát triển bởi nhà khoa học máy tính người Hà Lan Guido van Rossum cuối thập niên 1980 và đầu 1990 để là ngôn ngữ lập trình kiểu động (dynamically-typed) và kế thừa ngôn ngữ "ABC".

Ngày nay nó được coi là một trong những ngôn ngữ lập trình phổ biến nhất thế giới, với trường hợp sử dụng từ phát triển web đến toán học phức tạp và tính toán khoa học. Cũng được trân trọng vì cú pháp thanh lịch và dễ học tương đối.

Cài đặt Python trên Linux

Nhiều bản phân phối Linux đã cài sẵn Python mặc định. Kiểm tra xem hệ thống có Python 3 không bằng lệnh python3 với cờ --version:

python3 --version

Nếu Python đã cài, lệnh hiển thị phiên bản cấu hình Python.

Cài Python trên Ubuntu và Debian:

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

Thay vào đó, Python cũng tải được dưới dạng file ".tgz" hoặc ".xz".

Sử dụng module "os"

Một trong những thư viện Python tốt nhất cho quản trị viên hệ thống Linux là module "os". Dùng nó tự động hóa nhiều loại tác vụ khác nhau, như xử lý thư mục và file. Nó cũng chạy lệnh hệ thống.

Ví dụ, dùng module tạo thư mục mới:

# Import module OS
import os
# Tên thư mục mới
dir_name = "example"
try:
    # Tạo thư mục mới
    os.mkdir(dir_name)
    # In kết quả, nếu thư mục tạo thành công
    print(f"Directory '{dir_name}' created successfully")
    # In kết quả, nếu thư mục đã tồn tại
except FileExistsError:
    print(f"Directory '{dir_name}' already exists")

Cũng xóa thư mục bằng module:

# Import module OS
import os
# Tên thư mục cần xóa
dir_name = "example"
try:
    # Xóa thư mục
    os.rmdir(dir_name)
    # In kết quả, nếu xóa thành công
    print(f"Directory '{dir_name}' deleted successfully")
    # In kết quả, nếu thư mục không tồn tại
except FileNotFoundError:
    print(f"Directory '{dir_name}' doesn't exist")

Đổi tên file và thư mục:

# Import module OS
import os
# Tên hiện tại của thư mục hoặc file
current_name = "example"
new_name = "example2.0"
try:
    # Đổi tên thư mục hoặc file
    content = os.rename(current_name, new_name)
    # In nội dung thư mục
    print(f"Directory/File '{current_name}' was successfully renamed to '{new_name}'")
    # In thông báo lỗi, nếu thư mục hoặc file không tồn tại
except FileNotFoundError:
    print(f"Directory/File '{current_name}' doesn't exist")

File dễ dàng xóa bằng module:

# Import module OS
import os
# Tên file cần xóa
file_name = "example.txt"
try:
    # Xóa file
    os.remove(file_name)
    # In kết quả, nếu xóa thành công
    print(f"File '{file_name}' deleted successfully")
    # In kết quả, nếu file không tồn tại
except FileNotFoundError:
    print(f"File '{file_name}' doesn't exist")

Thư mục làm việc hiện tại dễ dàng in ra:

# Import module OS
import os
try:
    # Lấy thư mục làm việc hiện tại
    cwd = os.getcwd()
    # In tên thư mục làm việc hiện tại
    print(cwd)
    # Nếu lỗi xảy ra, in ra
except:
    print("An error occurred")

Nội dung thư mục, như file và thư mục con, kiểm tra dễ dàng:

# Import module OS
import os
# Tên thư mục
dir_name = "example"
try:
    # Lấy nội dung thư mục
    content = os.listdir(dir_name)
    # In nội dung thư mục
    print(content)
    # In lỗi, nếu thư mục không tồn tại
except FileNotFoundError:
    print(f"Directory '{dir_name}' doesn't exist")

Dùng module in ra người dùng hiện tại:

# Import module OS
import os
try:
    # Lấy tên người dùng hiện tại
    user = os.getlogin()
    # In tên người dùng hiện tại
    print(user)
    # In thông báo lỗi, nếu có
except:
    print("An error occurred")

Chạy lệnh shell Linux dùng module:

# Import module OS
import os
# Lệnh shell cần chạy
command = "sudo apt update && sudo apt upgrade -y"
try:
    # Chạy lệnh hệ thống
    result = os.system(command)
    # In kết quả lệnh
    print(result)
    # In thông báo lỗi, nếu có lỗi
except:
    print("An error occurred")

Thực hiện tác vụ mạng dùng module "socket"

Python có module xây dựng thực hiện tác vụ mạng khác nhau và tạo tiện ích mạng phức tạp, như quét cổng và máy chủ game video. Không ngạc nhiên module "socket" cũng dùng cho tác vụ mạng phổ biến và cơ bản trên hệ thống.

Ví dụ, kiểm tra địa chỉ IP và hostname hệ thống:

# Import module socket
import socket
try:
    # Lấy hostname
    host = socket.gethostname()
    # Lấy địa chỉ IP của host
    ip = socket.gethostbyname(host)
    # In địa chỉ IP
    print(f"IP address: {ip}")
    # In hostname
    print(f"Hostname: {host}")
    # In thông báo lỗi, nếu có lỗi
except:
    print("An error occurred")

Cũng dùng module kiểm tra địa chỉ IP trang web:

# Import module socket
import socket
try:
    # Tên miền cần kiểm tra
    domain = "duckduckgo.com"
    # Lấy địa chỉ IP tên miền
    ip = socket.gethostbyname(domain)
    # In địa chỉ IP
    print(f"IP address: {ip}")
    # In thông báo lỗi, nếu có lỗi
except:
    print("An error occurred")

Dùng Paramiko đăng nhập SSH Server và chạy lệnh

Nếu muốn tự động hóa quy trình đăng nhập SSH server và chạy lệnh đó, thư viện Python "Paramiko" cực kỳ hữu ích.

Trước hết tải thư viện bằng trình quản lý gói pip3 của Python:

pip3 install paramiko

Dùng module đăng nhập SSH server và chạy lệnh:

# Import thư viện Paramiko
import paramiko
# Chỉ định IP và thông tin đăng nhập
ip = '127.0.0.1'
port = 22
user = 'example'
password = 'example'
command = "uname -a"
try:
    # Khởi tạo client Paramiko
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    # Kết nối SSH server
    ssh.connect(ip, port, user, password)
    # Chạy lệnh trên hệ thống
    stdin, stdout, stderr = ssh.exec_command(command)
    # In kết quả lệnh
    print(stdout.read().decode())
    # In thông báo lỗi, nếu có lỗi
except:
    print("An error occurred")

Câu hỏi thường gặp

1. Cần Python 3 để dùng các module và thư viện này không?

Mặc dù hầu hết thư viện và module này hoạt động với Python 2, có khác biệt về cú pháp và các đoạn code này không chạy. Với vài thay đổi, bạn có thể điều chỉnh chạy Python 2. Tuy nhiên, Python 2 đã lỗi thời, nên dùng Python 3.

2. Cần cài module "os" và "socket" không?

Chung chung, không. Hầu hết cài đặt Python đi kèm các module này sẵn.

3. Có dùng Paramiko đăng nhập hệ thống non-Unix không?

Theo nhà phát triển Paramiko, hiện tại thư viện không dùng được đăng nhập hệ thống non-Unix qua SSH.