Để thực thi Command Line trên Linux, chúng ta có cách cách sau đây:
1. Sử dụng module os
Module os là module sẵn có trong Python, chúng ta có thể gọi ra sử dụng bất cứ lúc nào mà không cần phải cài đặt gì cả. Xem xét ví dụ sau:
import os os.system('ls -l /usr')
Đoạn code sẽ gọi command: “ls -l /usr ” sẽ liệt kê danh sách file và thư mục tại thư mục “/usr” của hệ điều hành
Trường hợp chúng ta muốn chạy lệnh trên Linux và lưu nó vào 1 biến trong Python.
Chúng ta dùng hàm os.popen(), khác với hàm os.system(). Nó sẽ ngăn không output ra stdout mà lưu nó vào 1 biến trong Python.
import os stream = os.popen('cat /etc/services') output = stream.read() print(output)
2. Sử dụng module subprocess
Module subprocess cũng là module tích hợp sẵn trong Python, nó được sử dụng phổ biến hơn và mềm dẻo hơn với nhiều đối số đầu vào.
import subprocess process = subprocess.Popen('ls -l /usr', stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True ) stdout, stderr = process.communicate() print(stdout.decode('utf-8'))
- stdout sẽ lưu kết quả của command
- stderr sẽ lưu lỗi của command trong trường hợp phát sinh lỗi
Trường hợp chúng ta muốn đọc từng line trong kết quả output
import subprocess process = subprocess.Popen('ls -l /usr', stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True ) while process.poll() is None: line = process.stdout.readline() print('<', line.strip().decode('utf-8'), '>')
3. Sử dụng module paramiko
Module paramiko thực sự là module mạnh để thực thi command trên Linux. Nó không những chạy được lệnh trên local mà còn có thể chạy command trên Remote Server thông qua SSH.
Để cài đặt và sử dụng paramiko các bạn vui lòng tham khảo bài viết mà mình viết dành riêng cho paramiko: Kết nối SSH và chạy command trên Remote Linux Server
Nguồn: vinasupport.com – Vui lòng không copy dưới mọi hình thức