Làm cách nào để sử dụng Python trong thiết bị đầu cuối Linux?

Python là ngôn ngữ được lựa chọn để viết shell script và tự động hóa tác vụ. Nó phổ biến trong quản trị hệ thống vì nó có thể thực thi các lệnh shell chỉ bằng các thư viện mặc định của nó. Có hai cách để chạy các lệnh Linux bằng Python. sử dụng mô-đun os và sử dụng mô-đun quy trình con

Trong hướng dẫn này, chúng ta sẽ xem cách chạy các lệnh shell của Linux bằng Python bằng cách sử dụng các mô-đun os và quy trình con trên Raspberry Pi

Sử dụng mô-đun hệ điều hành

Đầu tiên là mô-đun os. Theo tài liệu chính thức, mô-đun os cung cấp một cách di động để sử dụng chức năng phụ thuộc vào hệ điều hành. Điều đó không thuận tiện sao? . Phương pháp hệ thống cho phép bạn thực hiện chính xác điều này. Để sử dụng nó để chạy lệnh Linux, mã của bạn sẽ giống như bên dưới

Mã mẫu sử dụng hệ thống[]

import os
os.system['pwd']
os.system['cd ~']
os.system['ls -la']

4-liner này kiểm tra thư mục hiện tại của bạn, thay đổi vị trí thành thư mục chính của bạn và liệt kê chi tiết tất cả nội dung. Đó là một triển khai khá đơn giản, nhưng có một nhược điểm. Với system[], bạn không được phép lưu trữ kết quả đầu ra dưới dạng một biến

Thay vào đó, bạn có thể sử dụng phương thức popen[] vẫn nằm trong mô-đun os. Nó mở một đường dẫn từ hoặc đến dòng lệnh. Một đường ống kết nối đầu ra của lệnh với đầu vào của lệnh khác. Điều này làm cho nó có thể truy cập được trong Python. Để sử dụng popen[] để lưu trữ dưới dạng biến, hãy xem mã ví dụ bên dưới

Mã mẫu sử dụng popen[]

import os
stream = os.popen['ls -la']
output = stream.readlines[]

Nếu bạn in biến luồng, bạn sẽ thấy dữ liệu trả về của nó. Điều này bao gồm các lệnh thực tế được thực thi, chế độ và địa chỉ. Hơn nữa, nếu bạn muốn lấy toàn bộ đầu ra dưới dạng một chuỗi, hãy thay đổi

import os
stream = os.popen['ls -la']
output = stream.readlines[]
1 thành
import os
stream = os.popen['ls -la']
output = stream.readlines[]
2

Sử dụng Mô-đun quy trình con

Cách thứ hai để chạy các lệnh Linux bằng Python là sử dụng mô-đun quy trình con mới hơn. Mô-đun này cho phép bạn sinh ra các quy trình mới, kết nối với các đường ống đầu vào/đầu ra/lỗi của chúng và lấy mã trả về của chúng. Nó được tạo ra để thay thế cả hai chức năng

import os
stream = os.popen['ls -la']
output = stream.readlines[]
3 và
import os
stream = os.popen['ls -la']
output = stream.readlines[]
4

Phương pháp duy nhất quan trọng trong quy trình con là

import os
stream = os.popen['ls -la']
output = stream.readlines[]
5. Với nó, bạn có thể làm mọi thứ chúng tôi đã làm ở trên và hơn thế nữa bằng cách sử dụng các đối số khác nhau. Sử dụng các mã sau đây làm tài liệu tham khảo

Viết một lệnh đơn giản bằng quy trình con

import subprocess

subprocess.run['ls']

Sử dụng phương thức như thế này sẽ thực thi lệnh ls trong thiết bị đầu cuối của bạn. Không giống như

import os
stream = os.popen['ls -la']
output = stream.readlines[]
3, nó không hoạt động khi bạn thêm công tắc và nhập đầy đủ như
import os
stream = os.popen['ls -la']
output = stream.readlines[]
7. Tính năng này cho phép phương pháp xử lý các vấn đề về trích dẫn và thoát, do đó ngăn ngừa lỗi định dạng. Để thực thi
import os
stream = os.popen['ls -la']
output = stream.readlines[]
8, bạn phải truyền lệnh dưới dạng danh sách.
import os
stream = os.popen['ls -la']
output = stream.readlines[]
9. Ngoài ra, bạn có thể đặt đối số shell là True để chuyển toàn bộ nội dung dưới dạng chuỗi. Chỉ cần lưu ý rằng điều này có thể gây rủi ro bảo mật nếu bạn đang sử dụng nguồn đầu vào không đáng tin cậy

Viết lệnh với công tắc

import subprocess

x = subprocess.run[['ls', '-la']]
import subprocess

subprocess.run[['ls -la'], shell=True]

Tiếp theo, để lưu đầu ra lệnh bên trong một biến, chỉ cần thực hiện nó giống như bất kỳ dữ liệu nào khác. Tuy nhiên, kết quả sẽ không như bạn mong đợi. Vì mục đích chính của 'run' là thực thi lệnh shell trong python, nên kết quả sẽ không giống như đầu ra mà bạn thấy trong thiết bị đầu cuối. Nó sẽ là dữ liệu trả về giống như trong

import subprocess

subprocess.run['ls']
0. Bạn có thể kiểm tra nó bằng cách sử dụng mã dưới đây

Lưu trữ đầu ra lệnh vào một biến

import subprocess

x = subprocess.run[['ls', '-la']]
print[x]
print[x.args]
print[x.returncode]
print[x.stdout]
print[x.stderr]

Bản phác thảo này phân tích dữ liệu trả về của lệnh của bạn bằng cách sử dụng các đối số của phương thức. Dưới đây là một số trong những cái thường được sử dụng

  • args – trả về các lệnh thực tế được thực thi
  • returncode – trả về mã trả về của đầu ra;
  • thiết bị xuất chuẩn - bắt thiết bị xuất chuẩn từ tiến trình con
  • stderr – bắt luồng stderr từ tiến trình con

Vì chúng tôi không nắm bắt đầu ra của mã trước đó, chúng tôi sẽ nhận được 'none' với cả đối số thiết bị xuất chuẩn và thiết bị xuất chuẩn. Để bật đối số đầu ra chụp, hãy tham khảo đoạn mã sau

import subprocess

x = subprocess.run[['ls', '-la'], capture_output=True]

Nếu bạn in x, bạn sẽ nhận được danh sách các mục trong thư mục hiện tại của bạn kiểu byte. Chuyển đổi nó thành một chuỗi bằng cách viết

import subprocess

subprocess.run['ls']
1. Ngoài ra, bạn có thể truyền đối số
import subprocess

subprocess.run['ls']
2 bằng hàm main. Đầu ra bây giờ trông giống hệt như những gì bạn có trong thiết bị đầu cuối

Cuối cùng, chúng ta sẽ chạy các lệnh Linux bằng Python và lưu đầu ra mà bạn nhìn thấy trong thiết bị đầu cuối vào một tệp văn bản—một tác vụ đơn giản với quy trình con. Bạn chỉ cần chuyển hướng luồng xuất chuẩn sang tệp văn bản của mình bằng cách sử dụng đối số

import subprocess

subprocess.run['ls']
3

Lưu đầu ra lệnh vào tệp văn bản

import subprocess

with open['list.txt', 'w'] as f:
    subprocess.run[['ls','-la'], stdout=f]

Đó là nó cho hướng dẫn này. Tóm lại, để thực thi nhanh một đoạn script ngắn, hãy cân nhắc sử dụng các phương thức

import os
stream = os.popen['ls -la']
output = stream.readlines[]
3 và
import os
stream = os.popen['ls -la']
output = stream.readlines[]
4. Nhưng nếu bạn có tập lệnh toàn diện hơn để chạy, bạn có thể muốn sử dụng mô-đun
import subprocess

subprocess.run['ls']
6 để thay thế

Bạn có thể viết mã Python trong thiết bị đầu cuối Linux không?

Python được cài đặt sẵn trên hầu hết các bản phân phối Linux và có sẵn dưới dạng gói trên tất cả các bản phân phối khác.

Lệnh Python trong Linux là gì?

Python mạnh đến mức chúng ta có thể sử dụng nó để tương tác với hệ điều hành. Trong Linux, python hoạt động như một ngôn ngữ thay thế cho ngôn ngữ lệnh bash để viết tập lệnh . Nó được cài đặt sẵn trong hầu hết các bản phân phối vì nó phụ thuộc vào nhiều công cụ và phần mềm. Và nếu không, thật dễ dàng để cài đặt.

Chủ Đề