Thực thi Command Line trên Linux sử dụng Python


Để 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

 

             
SHARE

Bài viết liên quan

mode_edit Bình luận của bạn

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

account_circle
web