Tìm hiểu cách sử dụng các hàm, lớp, vòng lặp, v.v. trong tập lệnh Python của bạn để đơn giản hóa các tác vụ quản trị hệ thống phổ biến
Đã đăng. Ngày 30 tháng 3 năm 2022 . %t phút đọc . của Peter Gervase [Sudoer], Bart Zhang [Red Hat]
Hình ảnh
Trò chuyện WOCinTech, CC BY 2. 0
Python là một trong những ngôn ngữ phát triển phổ biến nhất; . Python có nhiều trường hợp sử dụng và hướng dẫn này khám phá cách sử dụng nó để tạo tập lệnh cho các tác vụ quản trị hệ thống phổ biến
Hình ảnh
Tải ngay
Đây là môi trường được sử dụng trong hướng dẫn này. Hệ điều hành là Red Hat Enterprise Linux 8, 4. 18. 0-348. 12. 2. el8_5. x86_64 và phiên bản Python là python36-3. 6. 8-38. mô-đun + el8. 5. 0+12207+5c5719bc. x86_64. Hệ thống của bạn không cần phải khớp với điều này một cách hoàn hảo; . Để tải xuống Python, bạn có thể sử dụng kho lưu trữ của hệ điều hành hoặc tải phiên bản mới nhất từ Python. tổ chức
Những thứ cơ bản
Để bắt đầu với những điều cơ bản, đây là tập lệnh Hello World bằng Python
$ cat hello.py3
#!/usr/bin/python3
print["hello world!"]
$ python3 hello.py3
hello world!
$ echo $?
0
Dòng đầu tiên trong
$ echo $?
0
0 có shebang [$ echo $?
0
1] và sau đó là đường dẫn đến tệp Python thực thiKiểm tra trình thông dịch Python qua công cụ giao diện dòng lệnh [CLI] của
$ echo $?
0
2. Điều này cho thấy trình thông dịch dựa trên phiên bản 3. 6$ rpm -qf /usr/bin/python3
python36-3.6.8-38.module+el8.5.0+12207+5c5719bc.x86_64
$ ll /usr/bin/python3
lrwxrwxrwx. 1 root root 25 Feb 3 2020 /usr/bin/python3 -> /etc/alternatives/python3
Dòng thứ hai của tập lệnh Hello World gọi hàm
$ echo $?
0
3 với đối số là $ echo $?
0
4 Print là hàm Python tích hợp cho phép người dùng in thông báo tới dòng lệnh. Điều này đặc biệt hữu ích cho việc gỡ lỗi nhanh chóng. Hàm là một đoạn mã mà bạn có thể sử dụng mà không cần nhập lại trực tiếp vào chương trình của mình mỗi khi bạn muốn sử dụng nó. Chúng tôi sẽ sớm đi sâu vào việc xây dựng các chức năng tùy chỉnhSau khi chạy tập lệnh Hello World, hãy xác minh lối thoát sạch bằng cách lặp lại mã trả về của lệnh trước đó
$ echo $?
0
Nếu có vấn đề với tập lệnh, mã trả về sẽ khác 0. Bạn sẽ học cách sử dụng các mã trả về đó trong tập lệnh ở phần sau của bài viết này
[ Nhận thêm thông tin chi tiết về tự động hóa bằng cách tải xuống Sách điện tử Red Hat Ansible Automation Platform 2. ]
Chức năng
Đối với tập lệnh nâng cao hơn một chút, hãy tạo một hàm có tên là
$ echo $?
0
5 và chuyển ba đối số cho nó. Các hàm hữu ích khi bạn sẽ sử dụng và sử dụng lại cùng một mã. Thay vì viết lại tất cả đoạn mã đó mỗi lần, bạn có thể đặt nó vào một hàm và sau đó bạn có thể gọi hàm đó bất cứ khi nào bạn cần$ cat func.py3
#!/usr/bin/python3
def greeting[fname,lname,state]:
print["Hello, %s %s! How is the weather in %s?" % [fname, lname, state]]
first_name = "Peter"
last_name = "Gervase"
mystate = "North Carolina"
greeting[first_name, last_name, mystate]
$ python3 func.py3
Hello, Peter Gervase! How is the weather in North Carolina?
Hai khía cạnh cần lưu ý là thứ tự bạn truyền các biến phải khớp với những gì hàm mong đợi và đồng thời, số lượng biến được truyền vào phải khớp với những gì hàm mong đợi
Vì vậy, sử dụng
$ echo $?
0
0sẽ làm cho đầu ra
$ echo $?
0
1Ngoài ra, vì hàm này cần ba biến, nên bạn cần nhập chính xác ba biến. Nếu bạn có ít hơn hoặc nhiều hơn ba biến thì tập lệnh sẽ không thành công
$ echo $?
0
2Đối số dòng lệnh
Bạn có thể sử dụng các đối số được truyền từ dòng lệnh cho tập lệnh. Đối với ví dụ này, hãy bắt đầu bằng cách nhập mô-đun
$ echo $?
0
6 để có quyền truy cập vào nội dung của nó$ echo $?
0
4Như với các ví dụ về hàm, bạn phải chuyển số lượng đối số mà tập lệnh của bạn mong đợi. Nếu bạn nhập quá ít, thì tập lệnh sẽ bị lỗi vì không có
$ echo $?
0
7$ echo $?
0
6Nếu bạn chuyển quá nhiều, điều đó không sao cả vì tất cả những gì kịch bản quan tâm là
$ echo $?
0
7$ echo $?
0
8[ Tìm hiểu thêm về 30 viên ngọc ẩn trong Python 3. ]
Truy cập tệp
Python cho phép truy cập vào các tập tin. Để bắt đầu, bạn có thể đọc một tệp hiện có
$ rpm -qf /usr/bin/python3
python36-3.6.8-38.module+el8.5.0+12207+5c5719bc.x86_64
$ ll /usr/bin/python3
lrwxrwxrwx. 1 root root 25 Feb 3 2020 /usr/bin/python3 -> /etc/alternatives/python3
0Các lớp học
Các lớp cung cấp cho bạn khả năng gán nhiều thuộc tính cho một đối tượng. Ví dụ, hãy nghĩ về cách bạn sử dụng các biến để lưu trữ thông tin cho một bộ sách. Bạn sẽ lưu trữ dữ liệu ở định dạng sau.
$ echo $?
0
9, $ cat func.py3
#!/usr/bin/python3
def greeting[fname,lname,state]:
print["Hello, %s %s! How is the weather in %s?" % [fname, lname, state]]
first_name = "Peter"
last_name = "Gervase"
mystate = "North Carolina"
greeting[first_name, last_name, mystate]
$ python3 func.py3
Hello, Peter Gervase! How is the weather in North Carolina?
0, $ cat func.py3
#!/usr/bin/python3
def greeting[fname,lname,state]:
print["Hello, %s %s! How is the weather in %s?" % [fname, lname, state]]
first_name = "Peter"
last_name = "Gervase"
mystate = "North Carolina"
greeting[first_name, last_name, mystate]
$ python3 func.py3
Hello, Peter Gervase! How is the weather in North Carolina?
1, v.v.? Sử dụng các lớp để theo dõi thông tin đó sẽ tốt hơn nhiều. Bạn có thể mô tả một cuốn sách theo nhiều cách, bao gồm tiêu đề, tác giả, độ dài và tóm tắt nội dung của cuốn sách. Các lớp cho phép bạn xây dựng các khung xung quanh các đối tượng mà bạn xác định, như minh họa ở đây trong ví dụ về một lớp có tên
$ cat func.py3
#!/usr/bin/python3
def greeting[fname,lname,state]:
print["Hello, %s %s! How is the weather in %s?" % [fname, lname, state]]
first_name = "Peter"
last_name = "Gervase"
mystate = "North Carolina"
greeting[first_name, last_name, mystate]
$ python3 func.py3
Hello, Peter Gervase! How is the weather in North Carolina?
2$ rpm -qf /usr/bin/python3
python36-3.6.8-38.module+el8.5.0+12207+5c5719bc.x86_64
$ ll /usr/bin/python3
lrwxrwxrwx. 1 root root 25 Feb 3 2020 /usr/bin/python3 -> /etc/alternatives/python3
1Khi mã chạy, bạn nhận được đầu ra sau
$ rpm -qf /usr/bin/python3
python36-3.6.8-38.module+el8.5.0+12207+5c5719bc.x86_64
$ ll /usr/bin/python3
lrwxrwxrwx. 1 root root 25 Feb 3 2020 /usr/bin/python3 -> /etc/alternatives/python3
2Thêm tài nguyên Linux
- Bảng cheat lệnh Linux nâng cao
- Tải xuống RHEL 9 miễn phí thông qua chương trình Red Hat Developer
- Hướng dẫn cài đặt ứng dụng trên Linux
- Đánh giá kỹ năng quản trị hệ thống Linux
Bằng cách tạo một lớp có tên là
$ cat func.py3
#!/usr/bin/python3
def greeting[fname,lname,state]:
print["Hello, %s %s! How is the weather in %s?" % [fname, lname, state]]
first_name = "Peter"
last_name = "Gervase"
mystate = "North Carolina"
greeting[first_name, last_name, mystate]
$ python3 func.py3
Hello, Peter Gervase! How is the weather in North Carolina?
2, bạn có thể nhóm mọi thứ cho book1, book2 và book3. Có một vài mục để chỉ ra từ ví dụ này. Trước tiên, hãy lưu ý rằng book2 chưa bao giờ được chỉ định một loại sách cụ thể, vì vậy, nó đã sử dụng giá trị $ cat func.py3
#!/usr/bin/python3
def greeting[fname,lname,state]:
print["Hello, %s %s! How is the weather in %s?" % [fname, lname, state]]
first_name = "Peter"
last_name = "Gervase"
mystate = "North Carolina"
greeting[first_name, last_name, mystate]
$ python3 func.py3
Hello, Peter Gervase! How is the weather in North Carolina?
2 từ thông tin lớp mặc định làm mô tả. Thứ hai, lưu ý rằng điều này sử dụng ____95 cho số trang. Nếu bạn chỉ sử dụng $ cat func.py3
#!/usr/bin/python3
def greeting[fname,lname,state]:
print["Hello, %s %s! How is the weather in %s?" % [fname, lname, state]]
first_name = "Peter"
last_name = "Gervase"
mystate = "North Carolina"
greeting[first_name, last_name, mystate]
$ python3 func.py3
Hello, Peter Gervase! How is the weather in North Carolina?
6 cho số thì đầu ra sẽ có sáu số 0 sau dấu thập phân. Ví dụ, cuốn sách đầu tiên sẽ có 270. 000000 trangphân lớp
Bạn có thể mở rộng các lớp bằng cách sử dụng phương thức lớp con của Python. Bằng cách bao gồm đối tượng mà lớp mới của bạn kế thừa trong định nghĩa lớp của bạn, bạn có thể chuyển các thuộc tính hiện có cũng như xác định các thuộc tính mới dành riêng cho các lớp mở rộng. Bạn có thể mở rộng lớp
$ cat func.py3
#!/usr/bin/python3
def greeting[fname,lname,state]:
print["Hello, %s %s! How is the weather in %s?" % [fname, lname, state]]
first_name = "Peter"
last_name = "Gervase"
mystate = "North Carolina"
greeting[first_name, last_name, mystate]
$ python3 func.py3
Hello, Peter Gervase! How is the weather in North Carolina?
2 thành nhiều lớp con. Ví dụ, định nghĩa một lớp mới có tên là $ cat func.py3
#!/usr/bin/python3
def greeting[fname,lname,state]:
print["Hello, %s %s! How is the weather in %s?" % [fname, lname, state]]
first_name = "Peter"
last_name = "Gervase"
mystate = "North Carolina"
greeting[first_name, last_name, mystate]
$ python3 func.py3
Hello, Peter Gervase! How is the weather in North Carolina?
8$ rpm -qf /usr/bin/python3
python36-3.6.8-38.module+el8.5.0+12207+5c5719bc.x86_64
$ ll /usr/bin/python3
lrwxrwxrwx. 1 root root 25 Feb 3 2020 /usr/bin/python3 -> /etc/alternatives/python3
3vòng lặp
Python hỗ trợ sử dụng
$ cat func.py3
#!/usr/bin/python3
def greeting[fname,lname,state]:
print["Hello, %s %s! How is the weather in %s?" % [fname, lname, state]]
first_name = "Peter"
last_name = "Gervase"
mystate = "North Carolina"
greeting[first_name, last_name, mystate]
$ python3 func.py3
Hello, Peter Gervase! How is the weather in North Carolina?
9, $ echo $?
0
00 và các cách khác để quản lý điều khiển luồng. Bạn có thể tìm hiểu thêm trong tài liệu Python. Vòng lặp cho phép bạn lặp lại các bước dựa trên một số lần cố định, cho đến khi một điều kiện được đáp ứng hoặc cho đến khi một điều kiện không còn được đáp ứng. Đây là một ví dụ về việc sử dụng $ cat func.py3
#!/usr/bin/python3
def greeting[fname,lname,state]:
print["Hello, %s %s! How is the weather in %s?" % [fname, lname, state]]
first_name = "Peter"
last_name = "Gervase"
mystate = "North Carolina"
greeting[first_name, last_name, mystate]
$ python3 func.py3
Hello, Peter Gervase! How is the weather in North Carolina?
9$ rpm -qf /usr/bin/python3
python36-3.6.8-38.module+el8.5.0+12207+5c5719bc.x86_64
$ ll /usr/bin/python3
lrwxrwxrwx. 1 root root 25 Feb 3 2020 /usr/bin/python3 -> /etc/alternatives/python3
4Mảng
Bạn sẽ làm gì nếu bạn có một tập hợp các giá trị liên quan đến nhau? . Ví dụ: nếu bạn có một danh sách những chiếc ô tô mà bạn sở hữu, bạn có thể lưu trữ chúng dưới dạng một mảng
$ rpm -qf /usr/bin/python3
python36-3.6.8-38.module+el8.5.0+12207+5c5719bc.x86_64
$ ll /usr/bin/python3
lrwxrwxrwx. 1 root root 25 Feb 3 2020 /usr/bin/python3 -> /etc/alternatives/python3
5Hoặc, nếu bạn đang theo dõi điểm kiểm tra của mình ở trường, bạn có thể có
$ rpm -qf /usr/bin/python3
python36-3.6.8-38.module+el8.5.0+12207+5c5719bc.x86_64
$ ll /usr/bin/python3
lrwxrwxrwx. 1 root root 25 Feb 3 2020 /usr/bin/python3 -> /etc/alternatives/python3
6Để thêm vào mảng, sử dụng
$ rpm -qf /usr/bin/python3
python36-3.6.8-38.module+el8.5.0+12207+5c5719bc.x86_64
$ ll /usr/bin/python3
lrwxrwxrwx. 1 root root 25 Feb 3 2020 /usr/bin/python3 -> /etc/alternatives/python3
7Một chương trình ví dụ có thể là
$ rpm -qf /usr/bin/python3
python36-3.6.8-38.module+el8.5.0+12207+5c5719bc.x86_64
$ ll /usr/bin/python3
lrwxrwxrwx. 1 root root 25 Feb 3 2020 /usr/bin/python3 -> /etc/alternatives/python3
8Đối với một ví dụ phức tạp hơn, hãy ghép một số phần trên lại với nhau. Tập lệnh này đọc các tên miền từ một tệp đầu vào và sau đó gọi một hàm để kiểm tra xem các miền đó có thể ping được không. Điều này sử dụng chức năng đọc từ tệp, sử dụng lệnh hệ thống và phản ứng với mã trả về của chức năng. Đây là kịch bản
$ rpm -qf /usr/bin/python3
python36-3.6.8-38.module+el8.5.0+12207+5c5719bc.x86_64
$ ll /usr/bin/python3
lrwxrwxrwx. 1 root root 25 Feb 3 2020 /usr/bin/python3 -> /etc/alternatives/python3
9Tìm hiểu thêm
Tìm hiểu thêm về dịch vụ đám mây
- Đám mây lai là gì?
- sách điện tử. Hiện đại hóa CNTT của bạn với các dịch vụ đám mây được quản lý
- Dùng thử 60 ngày. Red Hat OpenShift chuyên dụng
- sách điện tử. Chiến lược đám mây lai cho người mới bắt đầu
Để tiếp tục tìm hiểu thêm về Python [hoặc bất kỳ ngôn ngữ lập trình nào], hãy tạo một dự án thú vị để sử dụng nó. Đây là hai gợi ý
- Có thể bạn là huấn luyện viên của một đội bóng đá trẻ địa phương và bạn cần gửi lời nhắc mỗi tuần về trận đấu sắp tới. Bạn có thể đặt ngày, sân, giờ và đối thủ vào tệp CSV, sau đó sử dụng Python để phân tích cú pháp tệp CSV, tìm mục nhập khớp với ngày chính xác và gửi email cho đồng đội của bạn với thông tin thích hợp
- Có thể mỗi sáng, bạn phải kết nối với VPN công việc của mình. Bạn có thể viết một tập lệnh Python để xác minh trước rằng bạn có kết nối mạng, dừng mọi kết nối VPN cũ, bắt đầu một VPN mới, nhận vé Kerberos mới, sau đó kết nối với máy chủ IRC
Bạn thậm chí có thể muốn tạo một trò chơi điện tử bằng Python. Bất kể dự án học tập nào bạn quyết định thực hiện, bạn sẽ có nhiều khả năng hoàn thành nó bằng cách làm cho nó có ý nghĩa và thú vị
Xem các bài viết liên quan này trên Enable Sysadmin
Hình ảnh
3 khung giao diện người dùng để viết các ứng dụng thân thiện với người dùng bằng Python
Tìm hiểu cách chọn thư viện giao diện người dùng đồ họa phù hợp để viết các ứng dụng thân thiện với người dùng
Đã đăng. Ngày 3 tháng 12 năm 2021
Tác giả. Jose Vicente Nunez [Sudoer]
Hình ảnh
Cách tìm lỗ hổng của bên thứ ba trong mã Python của bạn
Tìm hiểu cách sử dụng công cụ pip-audit để tìm tư vấn CVE được ban hành cho các mô-đun Python mà bạn đang sử dụng trong dự án của mình
Đã đăng. Ngày 16 tháng 2 năm 2022
Tác giả. Jose Vicente Nunez [Sudoer]
Hình ảnh
3 khung giao diện người dùng để viết các ứng dụng thân thiện với người dùng bằng Python
Tìm hiểu cách chọn thư viện giao diện người dùng đồ họa phù hợp để viết các ứng dụng thân thiện với người dùng
Đã đăng. Ngày 3 tháng 12 năm 2021
Tác giả. Jose Vicente Nunez [Sudoer]
Hình ảnh
Cách thiết lập và sử dụng môi trường ảo Python cho Ansible
Mô-đun venv của Python cho phép bạn tự do thử nghiệm các tính năng Ansible mới trước khi triển khai chúng vào sản xuất và không làm ảnh hưởng đến quá trình cài đặt hệ thống của bạn
Đã đăng. Ngày 18 tháng 8 năm 2021
Tác giả. Gineesh Madapparambath [Sudoer, Mũ đỏ]
Hình ảnh
Viết và kiểm tra đơn vị một ứng dụng Python để truy vấn cơ sở dữ liệu RPM
Viết chương trình Python in danh sách phần mềm được cài đặt trên hệ thống của bạn, sau đó kiểm tra xem ứng dụng có hoạt động chính xác không
Đã đăng. Ngày 1 tháng 12 năm 2021
Tác giả. Jose Vicente Nunez [Sudoer]
chủ đề. Lập trình Python
Peter Gervase
Tôi là Kiến trúc sư bảo mật chính cấp cao tại Verizon. Trước đó, tôi đã làm việc tại Red Hat với nhiều vai trò khác nhau như tư vấn và Kiến trúc sư giải pháp, nơi tôi chuyên về Quản lý thông minh, Ansible và OpenShift. Thêm về tôi
Bart Zhang
Bart là một chuyên gia công nghệ và là một Red Hatter thích đi sâu vào DevOps, container và mọi thứ về Linux. Bart hiện đang hỗ trợ các đối tác Hệ sinh thái của Red Hat nhưng đã làm việc với các khách hàng doanh nghiệp thuộc mọi hình dạng và quy mô về chuyển đổi kỹ thuật số trong suốt sự nghiệp của mình. Thêm về tôi
Hội nghị thượng đỉnh mũ đỏ 2022. theo yêu cầu
Nhận thông tin mới nhất về Ansible, Red Hat Enterprise Linux, OpenShift, v.v. từ sự kiện ảo theo yêu cầu của chúng tôi
Đăng kí miễn phí
Nội dung liên quan
Hình ảnh
Tìm hiểu cách Unix ảnh hưởng đến Linux, hiểu các danh sách và từ điển Ansible và các mẹo khác dành cho quản trị viên hệ thống
Xem 10 bài viết hàng đầu của Enable Sysadmin từ tháng 11 năm 2022
Đã đăng. Ngày 5 tháng 12 năm 2022
Tác giả. Vicki Walker [Nhóm biên tập, Mũ đỏ]
Hình ảnh
2 cách thiết thực để sử dụng mô-đun quy trình con Python
Tìm hiểu cách chạy các lệnh và tập lệnh Bash trong tập lệnh Python của bạn bằng mô-đun quy trình con
Đã đăng. Ngày 23 tháng 11 năm 2022
Tác giả. Nicole Lama [Sudoer, Mũ đỏ]
Hình ảnh
Cách làm máy cho chó ăn tự động với Arduino và Linux
Hãy thử dự án DIY này để học [hoặc dạy gia đình bạn] cách viết mã giao diện với phần cứng thực