Part 5: Sử dụng Postman để gửi PUT Request
Trong Part 5, chúng ta sẽ cấu hình Postman để gửi PUT request đến R1 để tạo interface loopback mới.
Step 1: Sao y và sửa đổi yêu cầu GET cuối cùng.
Ghi chú: Cho bước này, sử dụng thông tin interface loopback được chỉ định bởi giảng viên. Nếu bạn không được chỉ định thông tin loopback và không có học viên nào khác truy cập vào router R1 cùng lúc với bạn, thì bạn có thể sử dụng thông tin loopback được chỉ định bên dưới.
a. Sao y yêu cầu GET cuối cùng.
b. Phần Type của request, nhấn nút mũi tên xuống kế bên GET và chọn PUT.
c. Phần tham số interface= , thay đổi nó thành =Loopback1 để chỉ định cổng mới.
Step 2: Định cấu hình phần thân của yêu cầu chỉ định thông tin cho loopback mới.
a. Để gửi yêu cầu PUT, chúng ta cần cung cấp thông tin phần thân của yêu cầu. Kế bên Headers tab, nhấn Body. Sau đó nhân nút tròn Raw. Trường thông tin hiện tại đang trống. Nếu nhấn Send ngay, chúng ta sẽ nhận được status code 400 Bad Request bởi vì Loopback1 chưa tồn tại và chúng ta chưa cung cấp đủ thông tin để tạo interface.
b. Thay thế văn bản trong ngoặc trong trường description bằng tên của bạn. Xóa dấu ngoặc. Điều này sẽ thêm tên của bạn vào mô tả cổng.
c. Điền vào phần Body với dữ liệu JSON cần thiết để tạo giao diện Loopback1 mới. Chúng ta có thể sao chép phần Body của yêu cầu GET trước đó và sửa đổi nó. Hoặc bạn có thể sao chép phần sau vào phần Body của yêu cầu PUT của bạn. Lưu ý rằng loại cổng phải được đặt thành softwareLoopback.
d. Nhấp vào Send để gửi yêu cầu PUT đến R1. Trong trường phản hồi, bạn sẽ nhận được mã phản hồi HTTP được tạo 201. Điều này chỉ ra rằng tài nguyên đã được tạo thành công.
e. Bạn có thể xác minh rằng cổng đã được tạo bằng cách nhập show ip int brief trên R1. Bạn cũng có thể chạy tab Postman có chứa yêu cầu nhận thông tin về các cổng trên R1 đã được tạo trong Part 4 của lab này.
Part 6: Sửu dụng script Python để gửi GET Requests
Trong Part 6, Chúng ta sẽ viết script Python để gửi yêu cầu GET đến R1.
Step 1: Nhập mô-đun và tắt cảnh báo SSL.
a. Mở IDLE. Sau đó nhấn File > New File để mở IDLE Editor.
b. Lưu file tên restconf-get.py.
c. Nhập các lệnh sau để nhập các mô-đun được yêu cầu và tắt cảnh báo chứng chỉ SSL:
Mô-đun json bao gồm các phương thức để chuyển đổi dữ liệu JSON thành các đối tượng Python và ngược lại. Mô-đun yêu cầu có các phương thức cho phép chúng ta gửi các yêu cầu REST đến một URI.
Step 2: Tạo các biến sẽ là thành phần của yêu cầu.
Tạo một biến chuỗi để giữ URI điểm cuối API và hai từ điển, một cho các tiêu đề yêu cầu và một cho phần thân JSON. Lưu ý rằng đây là tất cả các nhiệm vụ giống như bạn đã hoàn thành trong ứng dụng Postman.
a. Tạo biến api_url và đăng ký URL sẽ kết nối thông tin cổng R1.
b. Tạo biến từ điển tên headers có keys là Accept và Content-type và đăng ký giá trị của keys là application/yang-data+json.
c. Tạo một biến tuple Python có tên basicauth có hai khóa cần thiết để xác thực, username và password.
Step 3: Tạo một biến để gửi yêu cầu và lưu trữ phản hồi JSON.
Sử dụng các biến được tạo ở bước trước làm tham số cho phương thức request.get (). Phương thức này gửi yêu cầu HTTP GET đến API RESTCONF trên R1. Gán kết quả của yêu cầu cho một biến có tên là resp. Biến đó sẽ giữ phản hồi JSON từ API. Nếu yêu cầu thành công, JSON sẽ chứa mô hình dữ liệu YANG được trả về.
a. Nhập câu lệnh sau:
Bảng dưới đây liệt kê các yếu tố khác nhau của câu lệnh này:
b. Để xem HTTP response , thêm print.
c. Lưu và chạy script. Bạn sẽ nhận được đầu ra hiển thị dưới đây. Nếu không, hãy kiểm tra tất cả các bước trước trong phần này cũng như cấu hình SSH và RESTCONF cho R1.
Step 4: Định dạng và hiển thị dữ liệu JSON nhận từ R1.
Bây giờ các giá trị phản hồi của mô hình YANG có thể được trích xuất từ response JSON.
a. JSON phản hồi không tương thích với từ điển Python và danh sách các đối tượng, vì vậy nó phải được chuyển đổi sang định dạng Python. Tạo một biến mới gọi là answer_json và gán biến tương ứng cho nó. Thêm phương thức json () để chuyển đổi JSON. Khai báo như sau:
b. Thêm lệnh print để hiện thị dữ liệu JSON.
c. Lưu và chạy script. Chúng ta sẽ có thông tin đàu ra như sau:
d. Để chỉnh sửa đầu ra, hãy chỉnh sửa câu lệnh in của bạn để sử dụng hàm json.dumps () với tham số indent:
e. Lưu và chạy script. Chúng ta sẽ nhận được đầu ra hiển thị dưới đây. Đầu ra này gần như giống hệt với đầu ra của yêu cầu GET Postman đầu tiên của bạn.
Ghi chú: Đầu ra sau đây bị cắt ngắn để chỉ hiển thị các cổng có cấu hình.
Part 7: Sử dụng Python Script để gửi PUT Request
Trong Phần 7, bạn sẽ tạo một script Python để gửi yêu cầu PUT đến R1. Như đã được thực hiện trong Postman, bạn sẽ tạo cổng loopback mới.
Step 1: Nhập mô-đun và tắt cảnh báo SSL.
Ghi chú: Đối với bước này, hãy sử dụng thông tin cổng loopback được chỉ định bởi người hướng dẫn của bạn. Tăng giá trị thêm 1 vào số cổng và octet thứ 2 của địa chỉ IP. Ví dụ: nếu bạn được chỉ định Loopback 200 và 10.200.1.1/24 để cấu hình địa chỉ loopback trong Postman, hãy sử dụng Loopback 201 và 10.201.1.1/24 cho bước này. Nếu bạn không được chỉ định thông tin loopback và không có học viên nào khác truy cập vào router R1 cùng lúc với bạn, thì có thể sử dụng thông tin loopback được chỉ định bên dưới.
a. Mở IDLE. Sau đó nhấn File > New File để mở IDLE Editor.
b. Lưu file tên restconf-put.py.
c. Nhập các lệnh sau để nhập mô-đun và tắt cảnh báo chứng chỉ SSL:
Step 2: Tạo các biến sẽ là thành phần của yêu cầu.
Tạo một biến string để giữ URI điểm cuối API và hai từ điển, một cho các tiêu đề yêu cầu và một cho phần thân JSON. Lưu ý rằng đây là tất cả các nhiệm vụ giống như bạn đã hoàn thành trong ứng dụng Postman.
a. Tạo một biến có tên api_url và gán cho nó URL với mục tiêu tạo cổng Loopback2 mới.
Ghi chú: Biến chỉ định này phải nằm trên một dòng trong script.
b. Tạo một biến từ điển có tên là các header có các khóa cho Accecpt và Content-Type và gán giá trị cho các khóa là application/yang-data+json.
c. Tạo một biến tuple Python có tên basicauth có hai giá trị cần thiết để xác thực, tên người dùng và mật khẩu.
d. Tạo một biến từ điển Python yangConfig sẽ giữ dữ liệu YANG được yêu cầu để tạo cổng mới Loopback2. Bạn có thể sử dụng cùng một từ điển mà bạn đã sử dụng trong Part 5 cho Postman. Tuy nhiên, thay đổi số cổng và địa chỉ. Ngoài ra, hãy lưu ý rằng các giá trị Boolean phải được viết hoa trong Python. Do đó, đảm bảo rằng chữ T được viết hoa trong cặp khóa / giá trị cho “enabled”: True.
Ghi chú: Nếu sử dụng dấu nháy đơn trong chuỗi văn bản mô tả, thì bạn phải thoát nó bằng dấu gạch chéo ngược, như được hiển thị ở trên.
Step 3: Tạo biến để gửi yêu cầu và lưu trữ JSON response.
Sử dụng các biến được tạo ở bước trước làm tham số cho phương thức request.put(). Phương thức này gửi yêu cầu PUT HTTP đến RESTCONF API. Gán kết quả của yêu cầu cho một biến có tên là resp. Biến đó sẽ giữ phản hồi JSON từ API. Nếu yêu cầu thành công, JSON sẽ chứa mô hình dữ liệu YANG được trả về.
a. Trước khi nhập các câu lệnh, xin lưu ý rằng đặc tả biến này chỉ nên ghi một dòng trong script. Nhập các lệnh sau:
Ghi chú: Giá trị của biến này phải nằm trên một dòng trong script của bạn.
b. Nhập mã dưới đây để xử lý phản hồi. Nếu phản hồi là một trong những thông báo HTTP thành công, thông báo đầu tiên sẽ được in. Bất kỳ giá trị mã khác được coi là một lỗi. Mã phản hồi và thông báo lỗi sẽ được in trong trường hợp phát hiện lỗi.
Bảng dưới đây liệt kê các thuộc tính khác nhau của các trạng thái này:
c. Chạy tập lệnh để gửi yêu cầu PUT tới R1. Bạn sẽ nhận được một thông báo 201 Status Created. Nếu không, hãy kiểm tra mã của bạn và cấu hình cho R1.
d. Chúng ta có thể kiểm tra cổng đã tạo bằng lệnh show ip interface brief trên R1.
Chương trình được sử dụng trong Lab
Scripts Python dưới đây được sử dụng trong lab này:
Bảng tổng hợp cổng của Router
Ghi chú: Để tìm hiểu cách cấu hình router, hãy xem các cổng để xác định loại router và số lượng cổng của router. Không có cách nào để liệt kê hiệu quả tất cả các kết hợp cấu hình cho từng lớp router. Bảng này bao gồm các mã định danh cho các kết hợp giao diện Ethernet và serial có thể có trong thiết bị. Bảng không bao gồm bất kỳ loại cổng nào khác, mặc dù một router cụ thể có thể chứa một loại cổng. Một ví dụ về điều này có thể là cổng ISDN BRI. Chuỗi trong ngoặc đơn là tên viết tắt hợp pháp có thể được sử dụng trong các lệnh Cisco IOS để thể hiện cổng.
Hoàn thành Lab.
Thank you.
Trong Part 5, chúng ta sẽ cấu hình Postman để gửi PUT request đến R1 để tạo interface loopback mới.
Step 1: Sao y và sửa đổi yêu cầu GET cuối cùng.
Ghi chú: Cho bước này, sử dụng thông tin interface loopback được chỉ định bởi giảng viên. Nếu bạn không được chỉ định thông tin loopback và không có học viên nào khác truy cập vào router R1 cùng lúc với bạn, thì bạn có thể sử dụng thông tin loopback được chỉ định bên dưới.
a. Sao y yêu cầu GET cuối cùng.
b. Phần Type của request, nhấn nút mũi tên xuống kế bên GET và chọn PUT.
c. Phần tham số interface= , thay đổi nó thành =Loopback1 để chỉ định cổng mới.
Code:
[FONT=Arial]https://192.168.1.1/restconf/data/ietf-interfaces:interfaces/interface=Loopback1[/FONT]
a. Để gửi yêu cầu PUT, chúng ta cần cung cấp thông tin phần thân của yêu cầu. Kế bên Headers tab, nhấn Body. Sau đó nhân nút tròn Raw. Trường thông tin hiện tại đang trống. Nếu nhấn Send ngay, chúng ta sẽ nhận được status code 400 Bad Request bởi vì Loopback1 chưa tồn tại và chúng ta chưa cung cấp đủ thông tin để tạo interface.
b. Thay thế văn bản trong ngoặc trong trường description bằng tên của bạn. Xóa dấu ngoặc. Điều này sẽ thêm tên của bạn vào mô tả cổng.
c. Điền vào phần Body với dữ liệu JSON cần thiết để tạo giao diện Loopback1 mới. Chúng ta có thể sao chép phần Body của yêu cầu GET trước đó và sửa đổi nó. Hoặc bạn có thể sao chép phần sau vào phần Body của yêu cầu PUT của bạn. Lưu ý rằng loại cổng phải được đặt thành softwareLoopback.
Code:
[FONT=Courier New]{[/FONT] [FONT=Courier New]"ietf-interfaces:interface": {[/FONT] [FONT=Courier New]"name": "Loopback1",[/FONT] [FONT=Courier New]"description": "[Student Name]'s Loopback",[/FONT] [FONT=Courier New]"type": "iana-if-type:softwareLoopback",[/FONT] [FONT=Courier New]"enabled": true,[/FONT] [FONT=Courier New]"ietf-ip:ipv4": {[/FONT] [FONT=Courier New]"address": [[/FONT] [FONT=Courier New]{[/FONT] [FONT=Courier New]"ip": "10.1.1.1",[/FONT] [FONT=Courier New]"netmask": "255.255.255.0"[/FONT] [FONT=Courier New]}[/FONT] [FONT=Courier New]][/FONT] [FONT=Courier New]},[/FONT] [FONT=Courier New]"ietf-ip:ipv6": {}[/FONT] [FONT=Courier New]}[/FONT] [FONT=Courier New]}[/FONT]
e. Bạn có thể xác minh rằng cổng đã được tạo bằng cách nhập show ip int brief trên R1. Bạn cũng có thể chạy tab Postman có chứa yêu cầu nhận thông tin về các cổng trên R1 đã được tạo trong Part 4 của lab này.
Code:
[FONT=Courier New]R1# [B]show ip interface brief[/B][/FONT] [FONT=Courier New]Any interface listed with OK? value "NO" does not have a valid configuration[/FONT] [FONT=Courier New]Interface IP-Address OK? Method Status Protocol[/FONT] [FONT=Courier New]GigabitEthernet0/0/0 unassigned YES unset administratively down down[/FONT] [FONT=Courier New]GigabitEthernet0/0/1 192.168.1.1 YES manual up up[/FONT] [FONT=Courier New]Serial0/1/0 unassigned NO unset down down[/FONT] [FONT=Courier New]Serial0/1/1 unassigned NO unset down down[/FONT] [FONT=Courier New]GigabitEthernet0 unassigned YES unset administratively down down[/FONT] [FONT=Courier New]Loopback1 10.1.1.1 YES other up up[/FONT]
Part 6: Sửu dụng script Python để gửi GET Requests
Trong Part 6, Chúng ta sẽ viết script Python để gửi yêu cầu GET đến R1.
Step 1: Nhập mô-đun và tắt cảnh báo SSL.
a. Mở IDLE. Sau đó nhấn File > New File để mở IDLE Editor.
b. Lưu file tên restconf-get.py.
c. Nhập các lệnh sau để nhập các mô-đun được yêu cầu và tắt cảnh báo chứng chỉ SSL:
Code:
[FONT=Courier New]import json[/FONT] [FONT=Courier New]import requests[/FONT] [FONT=Courier New]requests.packages.urllib3.disable_warnings()[/FONT]
Step 2: Tạo các biến sẽ là thành phần của yêu cầu.
Tạo một biến chuỗi để giữ URI điểm cuối API và hai từ điển, một cho các tiêu đề yêu cầu và một cho phần thân JSON. Lưu ý rằng đây là tất cả các nhiệm vụ giống như bạn đã hoàn thành trong ứng dụng Postman.
a. Tạo biến api_url và đăng ký URL sẽ kết nối thông tin cổng R1.
Code:
[FONT=Courier New][COLOR=black]api_url [/COLOR][COLOR=#808030]=[/COLOR] "https://192.168.1.1/restconf/data/ietf-interfaces:interfaces"[/FONT]
Code:
[FONT=Courier New]headers = { "Accept": "application/yang-data+json",[/FONT] [FONT=Courier New]"Content-type":"application/yang-data+json"[/FONT] [FONT=Courier New]}[/FONT]
Code:
[FONT=Courier New][COLOR=black]basicauth [/COLOR][COLOR=#808030]=[/COLOR] [COLOR=#808030]([/COLOR]"cisco"[COLOR=#808030],[/COLOR] "cisco123!"[COLOR=#808030])[/COLOR][/FONT]
Sử dụng các biến được tạo ở bước trước làm tham số cho phương thức request.get (). Phương thức này gửi yêu cầu HTTP GET đến API RESTCONF trên R1. Gán kết quả của yêu cầu cho một biến có tên là resp. Biến đó sẽ giữ phản hồi JSON từ API. Nếu yêu cầu thành công, JSON sẽ chứa mô hình dữ liệu YANG được trả về.
a. Nhập câu lệnh sau:
Code:
[FONT=Courier New]resp = requests.get(api_url, auth=basicauth, headers=headers, verify=False)[/FONT]
b. Để xem HTTP response , thêm print.
Code:
[FONT=Courier New]print(resp)[/FONT]
Code:
[FONT=Courier New][COLOR=black]================= RESTART: /home/student/restconf-script.py =================[/COLOR][/FONT] [FONT=Courier New][COLOR=black]<Response [200]>[/COLOR][/FONT] [FONT=Courier New][COLOR=black]>>>[/COLOR][/FONT]
Bây giờ các giá trị phản hồi của mô hình YANG có thể được trích xuất từ response JSON.
a. JSON phản hồi không tương thích với từ điển Python và danh sách các đối tượng, vì vậy nó phải được chuyển đổi sang định dạng Python. Tạo một biến mới gọi là answer_json và gán biến tương ứng cho nó. Thêm phương thức json () để chuyển đổi JSON. Khai báo như sau:
Code:
[FONT=Courier New]response_json = resp.json()[/FONT]
Code:
[FONT=Courier New]print(response_json)[/FONT]
Code:
[FONT=Courier New]================= RESTART: /home/student/restconf-script.py =================[/FONT] [FONT=Courier New]<Response [200]>[/FONT] [FONT=Courier New]{'ietf-interfaces:interfaces': {'interface': [{'name': 'GigabitEthernet0', 'type': 'iana-if-type:ethernetCsmacd', 'enabled': False, 'ietf-ip:ipv4': {}, 'ietf-ip:ipv6': {}}, {'name': 'GigabitEthernet0/0/0', 'type': 'iana-if-type:ethernetCsmacd', 'enabled': False, 'ietf-ip:ipv4': {}, 'ietf-ip:ipv6': {}}, {'name': 'GigabitEthernet0/0/1', 'description': 'Link to PC', 'type': 'iana-if-type:ethernetCsmacd', 'enabled': True, 'ietf-ip:ipv4': {'address': [{'ip': '192.168.1.1', 'netmask': '255.255.255.0'}]}, 'ietf-ip:ipv6': {}}, {'name': 'Loopback1', 'description': "[Student's Name] Loopback", 'type': 'iana-if-type:softwareLoopback', 'enabled': True, 'ietf-ip:ipv4': {'address': [{'ip': '10.1.1.1', 'netmask': '255.255.255.0'}]}, 'ietf-ip:ipv6': {}}]}}[/FONT] [FONT=Courier New]>>>[/FONT]
Code:
[FONT=Courier New]print(json.dumps(response_json, indent=4))[/FONT]
Ghi chú: Đầu ra sau đây bị cắt ngắn để chỉ hiển thị các cổng có cấu hình.
Code:
[FONT=Courier New]================= RESTART: /home/student/restconf-script.py =================[/FONT] [FONT=Courier New]<Response [200]>[/FONT] [FONT=Courier New]{[/FONT] [FONT=Courier New]"ietf-interfaces:interfaces": {[/FONT] [FONT=Courier New]"interface": [[/FONT] [FONT=Courier New](output omitted)[/FONT] [FONT=Courier New]"name": "GigabitEthernet0/0/1",[/FONT] [FONT=Courier New]"description": "Link to PC",[/FONT] [FONT=Courier New]"type": "iana-if-type:ethernetCsmacd",[/FONT] [FONT=Courier New]"enabled": true,[/FONT] [FONT=Courier New]"ietf-ip:ipv4": {[/FONT] [FONT=Courier New]"address": [[/FONT] [FONT=Courier New]{[/FONT] [FONT=Courier New]"ip": "192.168.1.1",[/FONT] [FONT=Courier New]"netmask": "255.255.255.0"[/FONT] [FONT=Courier New]}[/FONT] [FONT=Courier New]][/FONT] [FONT=Courier New]},[/FONT] [FONT=Courier New]"ietf-ip:ipv6": {}[/FONT] [FONT=Courier New]},[/FONT] [FONT=Courier New]{[/FONT] [FONT=Courier New]"name": "Loopback1",[/FONT] [FONT=Courier New]"description": "[Student's Name] Loopback",[/FONT] [FONT=Courier New]"type": "iana-if-type:softwareLoopback",[/FONT] [FONT=Courier New]"enabled": true,[/FONT] [FONT=Courier New]"ietf-ip:ipv4": {[/FONT] [FONT=Courier New]"address": [[/FONT] [FONT=Courier New]{[/FONT] [FONT=Courier New]"ip": "10.1.1.1",[/FONT] [FONT=Courier New]"netmask": "255.255.255.0"[/FONT] [FONT=Courier New]}[/FONT] [FONT=Courier New]][/FONT] [FONT=Courier New]},[/FONT] [FONT=Courier New]"ietf-ip:ipv6": {}[/FONT] [FONT=Courier New]}[/FONT] [FONT=Courier New]][/FONT] [FONT=Courier New]}[/FONT] [FONT=Courier New]}[/FONT]
Trong Phần 7, bạn sẽ tạo một script Python để gửi yêu cầu PUT đến R1. Như đã được thực hiện trong Postman, bạn sẽ tạo cổng loopback mới.
Step 1: Nhập mô-đun và tắt cảnh báo SSL.
Ghi chú: Đối với bước này, hãy sử dụng thông tin cổng loopback được chỉ định bởi người hướng dẫn của bạn. Tăng giá trị thêm 1 vào số cổng và octet thứ 2 của địa chỉ IP. Ví dụ: nếu bạn được chỉ định Loopback 200 và 10.200.1.1/24 để cấu hình địa chỉ loopback trong Postman, hãy sử dụng Loopback 201 và 10.201.1.1/24 cho bước này. Nếu bạn không được chỉ định thông tin loopback và không có học viên nào khác truy cập vào router R1 cùng lúc với bạn, thì có thể sử dụng thông tin loopback được chỉ định bên dưới.
a. Mở IDLE. Sau đó nhấn File > New File để mở IDLE Editor.
b. Lưu file tên restconf-put.py.
c. Nhập các lệnh sau để nhập mô-đun và tắt cảnh báo chứng chỉ SSL:
Code:
[FONT=Courier New]import json[/FONT] [FONT=Courier New]import requests[/FONT] [FONT=Courier New]requests.packages.urllib3.disable_warnings()[/FONT]
Tạo một biến string để giữ URI điểm cuối API và hai từ điển, một cho các tiêu đề yêu cầu và một cho phần thân JSON. Lưu ý rằng đây là tất cả các nhiệm vụ giống như bạn đã hoàn thành trong ứng dụng Postman.
a. Tạo một biến có tên api_url và gán cho nó URL với mục tiêu tạo cổng Loopback2 mới.
Ghi chú: Biến chỉ định này phải nằm trên một dòng trong script.
Code:
[FONT=Courier New]api_url = "https://192.168.1.1/restconf/data/ietf-interfaces:interfaces/interface=Loopback2"[/FONT]
Code:
[FONT=Courier New]headers = { "Accept": "application/yang-data+json",[/FONT] [FONT=Courier New]"Content-type":"application/yang-data+json"[/FONT] [FONT=Courier New]}[/FONT]
Code:
[FONT=Courier New][COLOR=black]basicauth [/COLOR][COLOR=#808030]=[/COLOR] [COLOR=#808030]([/COLOR]"cisco"[COLOR=#808030],[/COLOR] "cisco123!"[COLOR=#808030])[/COLOR][/FONT]
Code:
[FONT=Courier New]yangConfig = {[/FONT] [FONT=Courier New]"ietf-interfaces:interface": {[/FONT] [FONT=Courier New]"name": "Loopback2",[/FONT] [FONT=Courier New]"description": "[Student\’s Name] loopback interface",[/FONT] [FONT=Courier New]"type": "iana-if-type:softwareLoopback",[/FONT] [FONT=Courier New]"enabled": True,[/FONT] [FONT=Courier New]"ietf-ip:ipv4": {[/FONT] [FONT=Courier New]"address": [[/FONT] [FONT=Courier New]{[/FONT] [FONT=Courier New]"ip": "10.2.1.1",[/FONT] [FONT=Courier New]"netmask": "255.255.255.0"[/FONT] [FONT=Courier New]}[/FONT] [FONT=Courier New]][/FONT] [FONT=Courier New]},[/FONT] [FONT=Courier New]"ietf-ip:ipv6": {}[/FONT] [FONT=Courier New]}[/FONT] [FONT=Courier New]}[/FONT]
Step 3: Tạo biến để gửi yêu cầu và lưu trữ JSON response.
Sử dụng các biến được tạo ở bước trước làm tham số cho phương thức request.put(). Phương thức này gửi yêu cầu PUT HTTP đến RESTCONF API. Gán kết quả của yêu cầu cho một biến có tên là resp. Biến đó sẽ giữ phản hồi JSON từ API. Nếu yêu cầu thành công, JSON sẽ chứa mô hình dữ liệu YANG được trả về.
a. Trước khi nhập các câu lệnh, xin lưu ý rằng đặc tả biến này chỉ nên ghi một dòng trong script. Nhập các lệnh sau:
Ghi chú: Giá trị của biến này phải nằm trên một dòng trong script của bạn.
Code:
[FONT=Courier New]resp = requests.put(api_url, data=json.dumps(yangConfig), auth=basicauth, headers=headers, verify=False)[/FONT]
Code:
[FONT=Courier New]if(resp.status_code >= 200 and resp.status_code <= 299):[/FONT] [FONT=Courier New]print("STATUS OK: {}".format(resp.status_code))[/FONT] [FONT=Courier New]else:[/FONT] [FONT=Courier New]print('Error. Status Code: {} \nError message: {}'.format(resp.status_code,resp.json()))[/FONT]
c. Chạy tập lệnh để gửi yêu cầu PUT tới R1. Bạn sẽ nhận được một thông báo 201 Status Created. Nếu không, hãy kiểm tra mã của bạn và cấu hình cho R1.
d. Chúng ta có thể kiểm tra cổng đã tạo bằng lệnh show ip interface brief trên R1.
Code:
[FONT=Courier New]R1# [B]show ip interface brief[/B][/FONT] [FONT=Courier New]Any interface listed with OK? value "NO" does not have a valid configuration[/FONT] [FONT=Courier New]Interface IP-Address OK? Method Status Protocol[/FONT] [FONT=Courier New]GigabitEthernet0/0/0 unassigned YES unset administratively down down[/FONT] [FONT=Courier New]GigabitEthernet0/0/1 192.168.1.1 YES manual up up[/FONT] [FONT=Courier New]Serial0/1/0 unassigned NO unset down down[/FONT] [FONT=Courier New]Serial0/1/1 unassigned NO unset down down[/FONT] [FONT=Courier New]GigabitEthernet0 unassigned YES unset administratively down down[/FONT] [FONT=Courier New]Loopback1 10.1.1.1 YES other up up[/FONT] [FONT=Courier New]Loopback2 10.2.1.1 YES other up up[/FONT]
Chương trình được sử dụng trong Lab
Scripts Python dưới đây được sử dụng trong lab này:
Code:
[FONT=Courier New]========================= resconf-get.py =========================[/FONT] [FONT=Courier New]import json[/FONT] [FONT=Courier New]import requests[/FONT] [FONT=Courier New]requests.packages.urllib3.disable_warnings()[/FONT] [FONT=Courier New]api_url = "https://192.168.1.1/restconf/data/ietf-interfaces:interfaces"[/FONT] [FONT=Courier New]headers = { "Accept": "application/yang-data+json",[/FONT] [FONT=Courier New]"Content-type":"application/yang-data+json"[/FONT] [FONT=Courier New]}[/FONT] [FONT=Courier New]basicauth = ("cisco", "cisco123!")[/FONT] [FONT=Courier New]resp = requests.get(api_url, auth=basicauth, headers=headers, verify=False)[/FONT] [FONT=Courier New]print(resp)[/FONT] [FONT=Courier New]response_json = resp.json()[/FONT] [FONT=Courier New]print(json.dumps(response_json, indent=4))[/FONT] [FONT=Courier New]========================= resconf-put.py =========================[/FONT] [FONT=Courier New]import json[/FONT] [FONT=Courier New]import requests[/FONT] [FONT=Courier New]requests.packages.urllib3.disable_warnings()[/FONT] [FONT=Courier New]api_url = "https://192.168.1.1/restconf/data/ietf-interfaces:interfaces/interface=Loopback2"[/FONT] [FONT=Courier New]headers = { "Accept": "application/yang-data+json",[/FONT] [FONT=Courier New]"Content-type":"application/yang-data+json"[/FONT] [FONT=Courier New]}[/FONT] [FONT=Courier New]basicauth = ("cisco", "cisco123!")[/FONT] [FONT=Courier New]yangConfig = {[/FONT] [FONT=Courier New]"ietf-interfaces:interface": {[/FONT] [FONT=Courier New]"name": "Loopback2",[/FONT] [FONT=Courier New]"description": "[Student\'s Name] loopback interface",[/FONT] [FONT=Courier New]"type": "iana-if-type:softwareLoopback",[/FONT] [FONT=Courier New]"enabled": True,[/FONT] [FONT=Courier New]"ietf-ip:ipv4": {[/FONT] [FONT=Courier New]"address": [[/FONT] [FONT=Courier New]{[/FONT] [FONT=Courier New]"ip": "10.2.1.1",[/FONT] [FONT=Courier New]"netmask": "255.255.255.0"[/FONT] [FONT=Courier New]}[/FONT] [FONT=Courier New]][/FONT] [FONT=Courier New]},[/FONT] [FONT=Courier New]"ietf-ip:ipv6": {}[/FONT] [FONT=Courier New]}[/FONT] [FONT=Courier New]}[/FONT] [FONT=Courier New]resp = requests.put(api_url, data=json.dumps(yangConfig), auth=basicauth, headers=headers, verify=False)[/FONT] [FONT=Courier New]if(resp.status_code >= 200 and resp.status_code <= 299):[/FONT] [FONT=Courier New]print("STATUS OK: {}".format(resp.status_code))[/FONT] [FONT=Courier New]else:[/FONT] [FONT=Courier New]print('Error. Status Code: {} \nError message: {}'.format(resp.status_code, resp.json()))[/FONT]
Ghi chú: Để tìm hiểu cách cấu hình router, hãy xem các cổng để xác định loại router và số lượng cổng của router. Không có cách nào để liệt kê hiệu quả tất cả các kết hợp cấu hình cho từng lớp router. Bảng này bao gồm các mã định danh cho các kết hợp giao diện Ethernet và serial có thể có trong thiết bị. Bảng không bao gồm bất kỳ loại cổng nào khác, mặc dù một router cụ thể có thể chứa một loại cổng. Một ví dụ về điều này có thể là cổng ISDN BRI. Chuỗi trong ngoặc đơn là tên viết tắt hợp pháp có thể được sử dụng trong các lệnh Cisco IOS để thể hiện cổng.
Hoàn thành Lab.
Thank you.
Nguồn : VNPRO