/*auto readmore*/ /*auto readmore*/ /* an hien script*/ // an hien password /*an hien ma chuong trinh cong tru */ /*Scrollbox thanh cuon*/ /***Nhung CODE***/ /* dòng xanh dòng trắng */ /* https://cdnjs.com/libraries/prism lay thu vien, can vao ten file ma goi 1. copy link vao vi du:prism-python.min.js 2. ten ngon nua la python */ /*=== New posts ===*/ /*header slider*/ /*=== bai viet lien quan===*/ /*===tabcode===*/

Zabbix, Cấu Hình Zabbix Cơ Bản / ICMP Template - Monitoring Map 1/5

Yêu cầu
1. Định nghĩa Icon
2. Tạo Group Host
3. Tạo ICMP monitor host
4. Kỹ thuật Import host từ file .XML
5. Map Network on Zabbix
6. Tạo User mới cho Zabbix

Xem cách cài đặt Zabbix trước khi xem bài này.

Thực hiện
1. Định nghĩa Icon

Chèn biểu tượng cần thể hiện cho host. Thực ra Zabbix đã có sẳn thư viện Icon rồi, tuy nhiên chúng tôi muốn giới thiệu cho các bạn để khi vẽ sơ đồ mạng sẽ có nhiều lựa chọn hơn trong việc lựa chọn Icon cho mình.

Chúng tôi chỉ thực hiện thêm 6 biểu tượng nhằm mục đích tham khảo.

2. Tạo Group Host

Tạo group có tên là: vck_ICMP Group

3. Tạo ICMP monitor host

Thêm host có IP 8.8.8.8 cần giám sát IMCP và host 8.8.8.8 thuộc group vừa tạo trên là vck_ICMP Group, ta thực hiện như hình

Kết quả sau khi thêm host mới

Tương tự vậy chúng ta có thể add nhiều host cần giám sát theo yêu cầu vào zabbix.
Hoặc chọn Full Clone để nhân bản một host, ví dụ 8.8.4.4


Tuy nhiên chúng ta cũng có thể thêm một hoặc host vào zabbix bằng cách import.

Trước tiên chúng ta export 1 host ra file .XML và mở nó lên.

Nhân xét: Chúng ta thấy rằng host 8.8.8.8 vừa định vừa tạo được định nghĩa từ dòng 11 đến dòng 32, nếu muốn thêm một hay nhiều host vào file này chúng ta chỉ việc copy nội dung trong từ dòng 11 đến dòng 32 chỉnh sửa thông tin các dòng 12, 13, 14, 17, 22 và 27 cho hợp lý rồi dán vào tab <hosts> </hosts> rồi import vào là được.

4. Kỹ thuật Import host từ file .XML
Tham khảo cách chỉnh sửa file .XML bằng kỹ thuật Merge Mail  sau khi chỉnh sửa xong chọn Configuration -> Hosts -> Choose File  để trỏ đến file XML vừa chỉnh sửa -> Import

Import thành công

Kết quả sau khi import từ file XML.

5. Map Network on Zabbix

Vào Monitoring -> Maps -> Create Map -> Điền tên, chiều cao, chiều rộng của Map, và chọn user được phép xem Map này (trong trường hợp này chúng tôi chọn user Admin) -> Add.

Chọn vào tên Map of ICMP (tên vừa tạo ở bước trên) -> edit map -> add Map element, và điền thông tin như hình
Giải thích:
  • {HOST.NAME}, {HOST.CONN}: biến tự động lấy thông tin của host ở trong phần định host ở các mục trên
  • host ICMP Net 8.8.8.8: host cần vẽ và sẽ được thể hiện trong Map
  • Icons Default: là hình chúng ta muốn thể hiện trên Map đang ở trạng thái monitor thành công
  • Icons Problem: là hình thể hiện trạng thái monitor KHÔNG thành công (phần định nghĩa Icon ở mục trên)

Tương tự add thêm Map element cho Route ISP với các Icon chúng ta đã định nghĩa mở các mục trên

Nhấn chọn 2 Icon -> Add Link để tạo đường kết nối 2 icon này (chúng ta có thể chọn màu và kiểu đường nối trong phần edit)

Tương tự chúng ta có thể thêm nhiều thiết bị cần monitor được thể hiện trên Map và chọn các đường link cho đúng với sơ đồ của mình

Bây giờ chúng ta đã có 1 map đơn giản với các icon như hình dưới. (chú ý nếu trạng thái monitor thành công thì có thêm chữ OK, ngược lại sẽ có hình như Icons Problem đã chọn và đã giải thích ở trên.)

6. Tạo User mới cho Zabbix

Administration -> Users -> Create User -> điền thông tin, chọn phân quyền cho user theo yêu cầu của các bạn -> Add
Đăng nhập để kiểm tra nhé.

Hy vọng đến đây sẽ giúp các bạn phần nào có cơ sở để tìm hiểu zabbix rộng hơn. Hẹn các bạn trong các bài sau.

Xong!


Zabbix, Cấu Hình Zabbix Cơ Bản / ICMP Template - Monitoring Map 1/5

Yêu cầu
1. Định nghĩa Icon
2. Tạo Group Host
3. Tạo ICMP monitor host
4. Kỹ thuật Import host từ file .XML
5. Map Network on Zabbix
6. Tạo User mới cho Zabbix

Xem cách cài đặt Zabbix trước khi xem bài này.

Thực hiện
1. Định nghĩa Icon

Chèn biểu tượng cần thể hiện cho host. Thực ra Zabbix đã có sẳn thư viện Icon rồi, tuy nhiên chúng tôi muốn giới thiệu cho các bạn để khi vẽ sơ đồ mạng sẽ có nhiều lựa chọn hơn trong việc lựa chọn Icon cho mình.

Chúng tôi chỉ thực hiện thêm 6 biểu tượng nhằm mục đích tham khảo.

2. Tạo Group Host

Tạo group có tên là: vck_ICMP Group

3. Tạo ICMP monitor host

Thêm host có IP 8.8.8.8 cần giám sát IMCP và host 8.8.8.8 thuộc group vừa tạo trên là vck_ICMP Group, ta thực hiện như hình

Kết quả sau khi thêm host mới

Tương tự vậy chúng ta có thể add nhiều host cần giám sát theo yêu cầu vào zabbix.
Hoặc chọn Full Clone để nhân bản một host, ví dụ 8.8.4.4


Tuy nhiên chúng ta cũng có thể thêm một hoặc host vào zabbix bằng cách import.

Trước tiên chúng ta export 1 host ra file .XML và mở nó lên.

Nhân xét: Chúng ta thấy rằng host 8.8.8.8 vừa định vừa tạo được định nghĩa từ dòng 11 đến dòng 32, nếu muốn thêm một hay nhiều host vào file này chúng ta chỉ việc copy nội dung trong từ dòng 11 đến dòng 32 chỉnh sửa thông tin các dòng 12, 13, 14, 17, 22 và 27 cho hợp lý rồi dán vào tab <hosts> </hosts> rồi import vào là được.

4. Kỹ thuật Import host từ file .XML
Tham khảo cách chỉnh sửa file .XML bằng kỹ thuật Merge Mail  sau khi chỉnh sửa xong chọn Configuration -> Hosts -> Choose File  để trỏ đến file XML vừa chỉnh sửa -> Import

Import thành công

Kết quả sau khi import từ file XML.

5. Map Network on Zabbix

Vào Monitoring -> Maps -> Create Map -> Điền tên, chiều cao, chiều rộng của Map, và chọn user được phép xem Map này (trong trường hợp này chúng tôi chọn user Admin) -> Add.

Chọn vào tên Map of ICMP (tên vừa tạo ở bước trên) -> edit map -> add Map element, và điền thông tin như hình
Giải thích:
  • {HOST.NAME}, {HOST.CONN}: biến tự động lấy thông tin của host ở trong phần định host ở các mục trên
  • host ICMP Net 8.8.8.8: host cần vẽ và sẽ được thể hiện trong Map
  • Icons Default: là hình chúng ta muốn thể hiện trên Map đang ở trạng thái monitor thành công
  • Icons Problem: là hình thể hiện trạng thái monitor KHÔNG thành công (phần định nghĩa Icon ở mục trên)

Tương tự add thêm Map element cho Route ISP với các Icon chúng ta đã định nghĩa mở các mục trên

Nhấn chọn 2 Icon -> Add Link để tạo đường kết nối 2 icon này (chúng ta có thể chọn màu và kiểu đường nối trong phần edit)

Tương tự chúng ta có thể thêm nhiều thiết bị cần monitor được thể hiện trên Map và chọn các đường link cho đúng với sơ đồ của mình

Bây giờ chúng ta đã có 1 map đơn giản với các icon như hình dưới. (chú ý nếu trạng thái monitor thành công thì có thêm chữ OK, ngược lại sẽ có hình như Icons Problem đã chọn và đã giải thích ở trên.)

6. Tạo User mới cho Zabbix

Administration -> Users -> Create User -> điền thông tin, chọn phân quyền cho user theo yêu cầu của các bạn -> Add
Đăng nhập để kiểm tra nhé.

Hy vọng đến đây sẽ giúp các bạn phần nào có cơ sở để tìm hiểu zabbix rộng hơn. Hẹn các bạn trong các bài sau.

Xong!

CDP - Cisco Discovery Protocol & LLDP - Link Layer Discovery Protocol

 1. CDP - Cisco Discovery Protocol: là giao thức độc quyền của Cisco cho phép thu thập thông tin các thiết bị kết nối trực tiếp (thiết bị láng giềng) với nó. CDP được enable mặc định trên các thiết bị của cisco và hoạt động ở lớp data-links, cứ 60s/lần thiết bị sẽ gửi (trạng thái cổng up/up) thông tin của mình cho thiết bị láng giềng, thời gian holdtime là 180s.

CDP giúp cho chúng ta biết được các thông tin của thiết bị láng giềng:

  • Device ID: Hostname của thiết bị láng giềng
  • Local Interface: Cổng nào đang được sử dụng để kết nối đến láng giềng
  • Outgoing Port: Láng giềng đang dùng cổng nào để kết nối với mình
  • Capability: Láng giềng có khả năng gì (Router, Switch, IGMP - giao thức sử dụng trong kỹ thuật Multicast)
  • Platform: Chuẩn loại thiết bị của láng giềng. Ví dụ: Router 2811, switch 2960
  • IP Address: IP của láng giềng
  • IOS: Hệ điều hành đang sử dụng

Các câu lệnh hay dùng:

    • show cdp neighbors: Xem thông tin về láng giềng
    • show cdp neighbors detail: Xem thông tin chi tiết về láng giềng
    • show cdp entry *
    • [no] cdp run: Bật/tắt CDP trên thiết bị
    • [no] cdp enable: Bật/tắt CDP trên interface (vào interface)
    • show cdp interface <interface>: biết trạng thái cổng, thời gian gửi gói tin, holdtime.


2.  LLDP - Link Layer Discovery Protocol: Hoạt động ở layer 2 - data links đây là giao thức chuẩn

Thiết bị cisco hỗ trợ chuẩn IEEE 802.1ab sử dụng cho LLDP nó cho phép quảng quá thông tin giữa các thiết non-cisco.

Nếu thiết bị có hỗ trợ LLDP sẽ gửi và nhận thông tin của các thiết bị láng giềng kết nối trực tiếp. Các thuộc tính của LLDP là: Type, Lenght, Value (TLVs).

  • Port descripion TLV
  • System name TLV
  • System description TLV
  • System capabilities TLV
  • Management Address TLV

Một số thiết bị đầu cuối như IP Phones có thể sử dụng LLDP để gán VLAN hoặc yêu cầu PoE (Power over Ethernet). LLDP-MED (Media Endpoint Discovery) là cải tiến của LLDP

Tùy theo từng thiết bị, IOS version mà LLDP được enable hay disable mặt định

Nhờ các thông tin của CDP và LLDP giúp chúng ta có thể vẽ lại/dựng lại sơ đồ mạng - Network Map qua các dòng lệnh show.

Câu lệnh tương tự CDP, chỉ thay cdp thành lldp


Xem lab về CDP và LLDP ở đây


Xong!


Học Python Qua Ví Dụ #006 - Python File Handle/Xử Lý File Trong Python

Yêu cầu:
1. Mở, đọc file và in nội dung file ra màn hình - Read
2. Mở và tự động đóng file sau khi đọc
3. Tạo và ghi file - Write
4. Ghi thêm dữ liệu vào file - Append

Thực hiện:
1. Mở, đọc file và in nội dung file ra màn hình - Read
  • Soạn ile DATA.txt có nội dung như dưới:
  • Thực hiện mở và đọc tất cả các dòng trong file, in ra màn hình:
Code:
f = open("DATA.txt","r") # r - read đọc, nếu file CÓ TỒN TẠI thì sẽ mở ra và đọc, nếu KHÔNG có sẽ lỗi 
print(f.read()) # đọc hết file
f.close() # đóng để giải phóng bộ nhớ

Noted:Với code trên nếu không tìm thấy file sẽ chương trình sẽ bị lỗi và không thực hiện các lệnh bên dưới.

Kết quả:
C:\python>python Demo.py
Interface                          IP-Address         OK?     Method        Status                Protocol
FastEthernet0/0              192.168.122.11  YES     NVRAM          up                    up
Serial0/0                          unassigned        YES     NVRAM         administratively down down
FastEthernet0/1              unassigned         YES     NVRAM        administratively down down
Serial0/1                          unassigned        YES     NVRAM        administratively down down
FastEthernet1/0              unassigned         YES     NVRAM        administratively down down
FastEthernet2/0              unassigned         YES     NVRAM        administratively down down
Loopback1                     10.10.10.1           YES     NVRAM          up                    up
Loopback2                     10.10.10.2           YES     NVRAM          up                    up



C:\python>

  • Hoặc đọc từng dòng từng dòng một trong file

Code:
f = open("DATA.txt","r") # r - read đọc, nếu file CÓ TỒN TẠI thì sẽ mở ra và đọc, nếu KHÔNG có sẽ lỗi 
print(f.readline()) # đọc từng dòng
print(f.readline())
print(f.readline())
print(f.readline())
f.close() # đóng để giải phóng bộ nhớ

Kết quả:
C:\python>python Demo.py
Interface                          IP-Address         OK?     Method        Status                Protocol
FastEthernet0/0              192.168.122.11  YES     NVRAM          up                    up
Serial0/0                          unassigned        YES     NVRAM         administratively down down

Kết quả trên cho thấy là nếu muốn đọc 4 dòng thì chúng ta phải dùng 4 dòng print(f.readline()) (vì có dòng trên cùng là dòng trắng trên cùng nên chúng ta thấy chỉ 3 dòng) cứ mỗi lần đọc như vậy con trỏ đọc/ghi seek() sẽ trượt, nếu chúng chúng ta muốn truy xuất lấy lại dữ liệu từ đầu file có 2 cách:

- Cách 1: đóng file và mở lại
- Cách 2: đưa con trỏ seek() về đầu file bằng lệnh f.seek(0)

  • Hoặc đọc từng dòng và đọc cho đến khi hết file.
Code:
f = open("DATA.txt","r") # r - read đọc, nếu file CÓ TỒN TẠI thì sẽ mở ra và đọc, nếu KHÔNG có sẽ lỗi 
for pl in f: # đọc cho đến hết file
	#print(pl) # kết quả sẽ chèn thêm dòng trắng sau mỗi dòng kết quả
	print(pl, end="") # xóa bỏ dòng trắng
f.close() # đóng để giải phóng bộ nhớ

Kết quả:

2. Mở và tự động đóng file sau khi đọc.

Code:
'''
Cách mở file tự động đóng
nó sẽ tự động đóng khi kết thúc khối lệnh trong with
'''
with open("DATA.txt","r") as f:
	output = f.read()
print(output)

Kết quả:
C:\python>python Demo.py
Interface                          IP-Address         OK?     Method        Status                Protocol
FastEthernet0/0              192.168.122.11  YES     NVRAM          up                    up
Serial0/0                          unassigned        YES     NVRAM         administratively down down
FastEthernet0/1              unassigned         YES     NVRAM        administratively down down
Serial0/1                          unassigned        YES     NVRAM        administratively down down
FastEthernet1/0              unassigned         YES     NVRAM        administratively down down
FastEthernet2/0              unassigned         YES     NVRAM        administratively down down
Loopback1                     10.10.10.1           YES     NVRAM          up                    up
Loopback2                     10.10.10.2           YES     NVRAM          up                    up



C:\python>

3. Tạo và ghi file - Write

  • Nếu file GhiDATA.txt chưa có thì tạo file mới với tên GhiDATA.txt
  • Nếu file đã có thì ghi đè nội dung lên file này

Code:
'''
"w" - Write
- Nếu file chưa có thì tạo file mới, 
- Nếu file đã tồn tại rồi thì xóa và ghi đè lên nội dung cũ
'''
f = open("GhiDATA.txt","w") 
f.write("Ghi lan thu 1\n")
f.write("Ghi lan thu 2\n")
f.write("...\n")
f.write("...\n")
f.write("Ghi lan thu n")

f.flush() # thực hiện ghi nội dung vào file
f.close() # nếu không có dòng "f.flush()", khi đóng file thì python thực hiện flush trước khi đóng.
'''
Đọc file mới ghi
'''
f = open("GhiDATA.txt","r")
print(f.read())
f.close()
Kết quả:
C:\python>python Demo.py
Ghi lan thu 1
Ghi lan thu 2
...
...
Ghi lan thu n

C:\python>


4. Ghi thêm dữ liệu vào file - Append
  • Nếu file GhiDATA.txt chưa có thì tạo file mới với tên GhiDATA.txt
  • Nếu file đã có thì chèn/thêm nội dung cần ghi vào cuối file

Code:
'''
"a" - Append
- Nếu file chưa có thì tạo file mới, 
- Nếu file đã tồn tại mở và GHI THÊM vào cuối nội dung của file
'''
f = open("GhiDATA.txt","a") 
f.write("\n")
f.write("GHI THEM VAO FILE\n")
f.write("Tiep tuc GHI THEM \n")

f.flush() # thực hiện ghi nội dung vào file
f.close() # nếu không có dòng "f.flush()", khi đóng file thì python thực hiện flush trước khi đóng.
'''
Đọc file mới ghi
'''
f = open("GhiDATA.txt","r")
print(f.read())
f.close()

Kết quả:
C:\python>python Demo.py
Ghi lan thu 1
Ghi lan thu 2
...
...
Ghi lan thu n
GHI THEM VAO FILE
Tiep tuc GHI THEM


C:\python>

Xong!

CentOS, Cài Đặt Ngày Giờ Trên CentOS

Yêu cầu:
1. Cài đặt thủ công
2. Cài đặt thông qua NTP - Network Time Protocol

Thực hiện:

1. Cài đặt thủ công
  • Kiểm tra trước khi cài đặt
[root@CentOS ~]# timedatectl status
      Local time: Wed 2020-06-17 08:15:01 IST
  Universal time: Wed 2020-06-17 01:15:01 UTC
        RTC time: Wed 2020-06-17 01:15:01
       Time zone: Asia/Kolkata (IST, +0530)
     NTP enabled: no
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a
[root@CentOS ~]# 

Noted: Trước khi chỉnh ngày giờ chúng ta nên chỉnh Time zone trước sau đó đến Local time sau

Để biết danh sách các Time zone chúng tôi dùng lệnh timedatectl list-timezones, hoặc chi tiết hơn timedatectl list-timezones | grep Ho_Chi_Minh

[root@CentOS ~]# timedatectl list-timezones | grep Ho_Chi_Minh
Asia/Ho_Chi_Minh

  •  Cài đặt Time zone là Asia/Ho_Chi_Minh
[root@CentOS ~]# timedatectl set-timezone Asia/Ho_Chi_Minh
[root@CentOS ~]# 

  • Cài đặt ngày giờ:
Sử dụng câu lệnh có dạng timedatectl set-time 'YYYY-MM-DD HH:MM:SS'
[root@CentOS ~]# timedatectl set-time '2020-06-17 09:19:50'
[root@CentOS ~]# 

  • Kiểm tra sau khi cài đặt
[root@CentOS ~]# timedatectl status 
      Local time: Sat 2020-06-17 09:21:06 +07
  Universal time: Sat 2020-06-17 02:21:06 UTC
        RTC time: Sat 2020-06-17 02:21:07
       Time zone: Asia/Ho_Chi_Minh (+07, +0700)
     NTP enabled: no
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a
[root@CentOS ~]#

2. Cài đặt thông qua NTP - Network Time Protocol
  • Kiểm tra trước khi cài đặt
[root@CentOS ~]# timedatectl status
      Local time: Wed 2020-06-17 09:48:56 +07
  Universal time: Wed 2020-06-17 02:48:56 UTC
        RTC time: Wed 2020-06-17 02:48:56
       Time zone: Asia/Ho_Chi_Minh (+07, +0700)
     NTP enabled: no
NTP synchronized: no

 RTC in local TZ: no
      DST active: n/a
[root@CentOS ~]# 

  • Cài đặt NTP server
[root@CentOS ~]# sudo yum -y install ntp
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
epel/x86_64/metalink                                                                                       | 8.3 kB  00:00:00   
 * base: mirrors.viethosting.com
 * centos-sclo-rh: mirrors.viethosting.com
 * centos-sclo-sclo: mirrors.viethosting.com
 * epel: mirrors.thzhost.com
 * extras: mirrors.viethosting.com
 * remi-php72: mirrors.thzhost.com
 * remi-safe: mirrors.thzhost.com
 * updates: mirrors.viethosting.com
base                                                                                                       | 3.6 kB  00:00:00   
centos-sclo-rh                                                                                             | 3.0 kB  00:00:00   
centos-sclo-sclo                                                                                           | 3.0 kB  00:00:00   
epel                                                                                                       | 5.3 kB  00:00:00   
extras                                                                                                     | 2.9 kB  00:00:00   
remi-php72                                                                                                 | 3.0 kB  00:00:00   
remi-safe                                                                                                  | 3.0 kB  00:00:00   
updates                                                                                                    | 2.9 kB  00:00:00   
zabbix                                                                                                     | 2.9 kB  00:00:00   
zabbix-frontend                                                                                            | 2.9 kB  00:00:00   
zabbix-non-supported                                                                                       |  951 B  00:00:00   
(1/3): updates/7/x86_64/primary_db                                                                         | 2.1 MB  00:00:00   
(2/3): epel/x86_64/updateinfo                                                                              | 1.0 MB  00:00:01   
(3/3): epel/x86_64/primary_db                                                                              | 6.8 MB  00:00:15   
Resolving Dependencies
--> Running transaction check
---> Package ntp.x86_64 0:4.2.6p5-28.el7.centos will be updated
---> Package ntp.x86_64 0:4.2.6p5-29.el7.centos will be an update
--> Processing Dependency: ntpdate = 4.2.6p5-29.el7.centos for package: ntp-4.2.6p5-29.el7.centos.x86_64
--> Running transaction check
---> Package ntpdate.x86_64 0:4.2.6p5-28.el7.centos will be updated
---> Package ntpdate.x86_64 0:4.2.6p5-29.el7.centos will be an update
--> Finished Dependency Resolution
Dependencies Resolved
==================================================================================================================================
 Package                     Arch                       Version                                    Repository                Size
==================================================================================================================================
Updating:
 ntp                         x86_64                     4.2.6p5-29.el7.centos                      base                     548 k
Updating for dependencies:
 ntpdate                     x86_64                     4.2.6p5-29.el7.centos                      base                      86 k
Transaction Summary
==================================================================================================================================
Upgrade  1 Package (+1 Dependent package)
Total size: 635 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Updating   : ntpdate-4.2.6p5-29.el7.centos.x86_64                                                                           1/4
  Updating   : ntp-4.2.6p5-29.el7.centos.x86_64                                                                               2/4
  Cleanup    : ntp-4.2.6p5-28.el7.centos.x86_64                                                                               3/4
  Cleanup    : ntpdate-4.2.6p5-28.el7.centos.x86_64                                                                           4/4
  Verifying  : ntp-4.2.6p5-29.el7.centos.x86_64                                                                               1/4
  Verifying  : ntpdate-4.2.6p5-29.el7.centos.x86_64                                                                           2/4
  Verifying  : ntpdate-4.2.6p5-28.el7.centos.x86_64                                                                           3/4
  Verifying  : ntp-4.2.6p5-28.el7.centos.x86_64                                                                               4/4
Updated:
  ntp.x86_64 0:4.2.6p5-29.el7.centos                                                                                           
Dependency Updated:
  ntpdate.x86_64 0:4.2.6p5-29.el7.centos                                                                                       
Complete!
[root@CentOS ~]# 

  • Sửa file /etc/ntp.conf với thông tin server NTP cần đồng bộ. Trong lab này chúng tôi chọn server là time.google.com
[root@CentOS ~]# sudo vim /etc/ntp.conf
{...}
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server  216.239.35.12
server time.google.com

#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
{...}

Noted: Nhấn i để sửa -> nhấn Esc :wq -> Enter để lưu lại thay đổi và thoát khỏi vim. Đảm bảo KHÔNG CÓ dấu thăng "#" phía trước.
  • Bật tính năng đồng bộ NTP và khởi động lại service
sudo timedatectl set-ntp yes
sudo systemctl start ntpd.service

  • Kiểm tra
[root@CentOS ~]# timedatectl status 
      Local time: Wed 2020-06-17 11:09:11 +07
  Universal time: Wed 2020-06-17 04:09:11 UTC
        RTC time: Wed 2020-06-17 04:09:11
       Time zone: Asia/Ho_Chi_Minh (+07, +0700)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a
[root@CentOS ~]#

Xong!

Học Python Qua Ví du #005 - String, Split, Format/Tách, Định Dạng Chuỗi Trong Python

Yêu cầu:
Có các chuỗi như dưới:
  • mac1 = "Internet  10.220.88.29           94   5254.abbe.5b7b  ARPA   FastEthernet4"
  • mac2 = "Internet  10.220.88.30            3   5254.ab71.e119  ARPA   FastEthernet4"
  • mac3 = "Internet  10.220.88.32          231   5254.abc7.26aa  ARPA   FastEthernet4"
lấy ra trường các trường "IP ADDR" và "MAC ADDRESS" Mỗi trường định dạng trong phạm vi 20 ký tự và căn lề phải

Thực hiện:
Code:
'''
Có các chuỗi như dưới:
mac1 = "Internet  10.220.88.29           94   5254.abbe.5b7b  ARPA   FastEthernet4"
mac2 = "Internet  10.220.88.30            3   5254.ab71.e119  ARPA   FastEthernet4"
mac3 = "Internet  10.220.88.32          231   5254.abc7.26aa  ARPA   FastEthernet4"
Yêu cầu:
lấy ra trường các trường "IP ADDR" và "MAC ADDRESS", Mỗi trường định dạng trong phạm vi 20 ký tự và căn lề phải
'''
mac1 = "Internet  10.220.88.29           94   5254.abbe.5b7b  ARPA   FastEthernet4"
mac2 = "Internet  10.220.88.30            3   5254.ab71.e119  ARPA   FastEthernet4"
mac3 = "Internet  10.220.88.32          231   5254.abc7.26aa  ARPA   FastEthernet4"
'''
dùng hàm split và căn cứ vào khoảng trắng để tách ra thành từng cụm
trong ví dụ này tách được 6 cụm
'''
fields = mac1.split() 
ip_addr1 = fields[1] # lấy cụm thứ 1 từ trái sang phải (vì python đếm từ số 0)
mac1 = fields[3] # lấy cụm thư 3

# tương tự cho mac2, mac3
fields = mac2.split()
ip_addr2 = fields[1]
mac2 = fields[3]
fields = mac3.split()
ip_addr3 = fields[1]
mac3 = fields[3]

print()
print("{:>20} {:>20}".format("IP ADDR", "MAC ADDRESS"))
print("{:>20} {:>20}".format("-" * 20, "-" * 20))
print("{:>20} {:>20}".format(ip_addr1, mac1))
print("{:>20} {:>20}".format(ip_addr2, mac2))
print("{:>20} {:>20}".format(ip_addr3, mac3))
print()

Kết quả:
C:\python>python Demo.py
             IP ADDR          MAC ADDRESS
      --------------------       --------------------
        10.220.88.29       5254.abbe.5b7b
        10.220.88.30       5254.ab71.e119
        10.220.88.32       5254.abc7.26aa


C:\python>

Xong!
/*header slide*/