/*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===*/

Học Python Qua Ví Dụ #002- Date, DateTime, Weekday/Lấy Ngày Giờ Trong Python

Yêu Cầu:  In ra màn hình theo các yêu cầu:
1. Lấy ngày hệ thống
2. Lấy ngày, giờ hệ thống
3. Lấy thứ (weekday) của hệ thống:

Thực hiện:

1. Lấy ngày hệ thống


Code:
from datetime import date
today = date.today()
# dd-mm-YY
Hnay = "Hom nay: "
d1 = today.strftime("%d-%m-%Y")
print(Hnay, d1)
# Textual month, day and year	
d2 = today.strftime("%B %d, %Y")
print(Hnay, d2)
# mm-dd-y
d3 = today.strftime("%m-%d-%y")
print(Hnay, d3)
# Month abbreviation, day and year	
d4 = today.strftime("%b-%d-%Y")
print(Hnay, d4)

Kết quả:
C:\python>python Demo.py
Hom nay ngay:  16-07-2020
Hom nay ngay:  July 16, 2020
Hom nay ngay:  07-16-20
Hom nay ngay:  Jul-16-2020

C:\python>

2. Lấy ngày giờ hệ thống

Code:
from datetime import datetime
# datetime object containing current date and time
now = datetime.now()
dt_str1 = now.strftime("%Y-%m-%d_%H-%M-%S")
dt_str2 = now.strftime("%Y-%B-%d_%H-%M-%S")
dt_str3 = now.strftime("%Y-%b-%d_%H-%M-%S")
print(dt_str1)
print(dt_str2)
print(dt_str3)

Kết quả:
C:\python>python Demo.py
2020-07-16_14-16-16
2020-July-16_14-16-16
2020-Jul-16_14-16-16

C:\python>

3. Lấy thứ (weekday) của hệ thống:
Code:
from datetime import datetime
now = datetime.now()
#Thứ mấy trong tuần, tên đầy đủ
print(now.strftime("%A"))
#Hoặc Lấy 3 ký tự đầu tiên của thứ
print(now.strftime("%a"))
#Hoặc Lấy 3 ký tự đầu tiên của chuỗi 
dt_str = now.strftime("%c")[0:3] 
print(dt_str)

Kết quả:
C:\python>python Demo.py
Thursday
Thu
Thu

C:\python>


Bảng định dạng các biến lấy ngày giờ.

Xong!

Cài Đặt Thư Viện Cho Python / Installing Python Modules / Installing Python Packages

Yêu cầu:

1. Cài đặt thư viện Netmiko

2. Cài đặt ntc-templates

3. Jinja2 template

4. Một số thư viện hay dùng

5. Kiểm tra các thư viện đã cài đặt trên python


Thực hiện:

1. Cài đặt thư viện Netmiko: Dùng để cài đặt và thiết lập kết nối ssh vào thiết bị

C:\Users\Admin\Downloads>pip install netmiko

Collecting netmiko
  Using cached netmiko-3.1.1-py2.py3-none-any.whl (147 kB)
Collecting pyserial
  Using cached pyserial-3.4-py2.py3-none-any.whl (193 kB)
Collecting scp>=0.13.2
  Using cached scp-0.13.2-py2.py3-none-any.whl (9.5 kB)
Collecting paramiko>=2.4.3
  Using cached paramiko-2.7.1-py2.py3-none-any.whl (206 kB)
Requirement already satisfied: setuptools>=38.4.0 in c:\program files (x86)\python38-32\lib\site-packages (from netmiko) (41.2.0)
Collecting textfsm
  Using cached textfsm-1.1.0-py2.py3-none-any.whl (37 kB)
Collecting bcrypt>=3.1.3
  Using cached bcrypt-3.1.7-cp38-cp38-win32.whl (26 kB)
Collecting cryptography>=2.5
  Using cached cryptography-2.9.2-cp38-cp38-win32.whl (1.3 MB)
Collecting pynacl>=1.0.1
  Using cached PyNaCl-1.4.0-cp38-cp38-win32.whl (193 kB)
Collecting six
  Using cached six-1.15.0-py2.py3-none-any.whl (10 kB)
Processing c:\users\admin\appdata\local\pip\cache\wheels\8e\70\28\3d6ccd6e315f65f245da085482a2e1c7d14b90b30f239e2cf4\future-0.18.2-py3-none-any.whl
Collecting cffi>=1.1
  Using cached cffi-1.14.0-cp38-cp38-win32.whl (165 kB)
Collecting pycparser
  Using cached pycparser-2.20-py2.py3-none-any.whl (112 kB)
Installing collected packages: pyserial, pycparser, cffi, six, bcrypt, cryptography, pynacl, paramiko, scp, future, textfsm, netmiko
Successfully installed bcrypt-3.1.7 cffi-1.14.0 cryptography-2.9.2 future-0.18.2 netmiko-3.1.1 paramiko-2.7.1 pycparser-2.20 pynacl-1.4.0 pyserial-3.4 scp-0.13.2 six-1.15.0 textfsm-1.1.0
C:\Users\Admin\Downloads>


2. Cài đặt ntc-templates

C:\python>git clone https://github.com/networktocode/ntc-templates

Cloning into 'ntc-templates'...

remote: Enumerating objects: 8346, done.

remote: Total 8346 (delta 0), reused 0 (delta 0), pack-reused 8346

Receiving objects: 100% (8346/8346), 2.14 MiB | 880.00 KiB/s, done.

Resolving deltas: 100% (4671/4671), done.


C:\python>



3. Jinja2 template: Dùng import dữ liệu từ danh sách vào template với những trị trí đã được định sẵn (tương tự như mail merger trong word).
C:\>pip install jinja2
Defaulting to user installation because normal site-packages is not writeable
Collecting jinja2
  Downloading Jinja2-2.11.2-py2.py3-none-any.whl (125 kB)
     |████████████████████████████████| 125 kB 939 kB/s
Collecting MarkupSafe>=0.23
  Downloading MarkupSafe-1.1.1-cp38-cp38-win32.whl (16 kB)
Installing collected packages: MarkupSafe, jinja2
Successfully installed MarkupSafe-1.1.1 jinja2-2.11.2
WARNING: You are using pip version 20.2; however, version 20.2.2 is available.
You should consider upgrading via the 'c:\program files (x86)\python38-32\python.exe -m pip install --upgrade pip' command.

C:\>

4. Một số thư viện hay dùng

- pip install netmiko
- pip install textfsm
- pip install pandas
- pip install jinja2
- pip install xlwings
- pip install pyinstaller
- pip install tabula-py

5. Kiểm tra các thư viện đã cài đặt trên python

pip freeze
Khi gõ lệnh này thì các thư viện đã cài sẽ được list ra


Xong!

Mô Hình Mạng Cho Các Doanh Nghiệp Vừa & Nhỏ - Bài 4 - Chuyên Đề Radius Authentication (802.1x) on Windows 2/4

Yêu cầu:
1. Đăng ký Network Policy Server với Domain Controller
2. Tạo Radius Client và secret key.
3. Cấu hình Policy
4. Tạo Username & Group
5. Tạo policies
6. Test kết nối Radius
7. Cấu hình Phương thức chứng thực.

Thực hiện:
1. Đăng ký Network Policy Server với Domain Controller



2. Tạo Radius Client và secret key.


Với cấu hình trên có nghĩa là: cho phép thiết bị có IP 192.168.0.112 có thể giao tiếp với Radius server và secrect key là 123456 với Friendly Name là "Sw_Port-baseAuthentication"

3. Cấu hình Policy
Thiết lập Connection

Policies name: là tên chỉ mang tính gợi nhớ, chúng ta điền tên gì cũng được.
Client Friendly Name: là trên Radius client chúng vừa tạo ở bước 2. Trong lab này Frient Name có tên là "Sw_Port-baseAuthentication"




4. Tạo Username & Group

Tạo Group có tên RADIUS GROUP nhằm chuẩn bị cho việc tạo Network Policies

Tạo mới user với thông tin:
  • Username: u10;
  • Password: 123;
  • Password không bao giờ hết hạn.

Thêm user u10 vào group có tên RADIUS GROUP (vừa tạo ở trên).
Khi làm policy với group sẽ tiện hơn thay vì làm policy cho từng user riêng, vì chỉ policy cho group thì nó sẽ cho các user trong group.



Tạo thêm user u20 với password 123, chúng tôi chọn copy u10 cho u20. Khi làm vậy mặc định u20 sẽ là thành viên của group RADIUS GROUP luôn.


5. Tạo policies





6. Test kết nối Radius
Chạy Windows PowerShell và thực hiện lệnh trên máy Radius Server:
netsh advfirewall firewall add rule name="Allow Port 1645" dir=in action=allow protocol=TCP localport=1645

Có nghĩa: đảm bảo firewall trên Radius server của windows cho phép truy cập port 1645- TCP

Dùng 1 máy tính dùng hệ điều hành windows đặt IP 192.168.0.112/24 (đây là IP chúng ta đã cấu hình ở bước 2 trong bài lab này, và máy tính này chỉ dùng để test xem Radius có hoạt động không, test xong bỏ PC này ra khỏi hệ thống).

Ở đây chúng tôi hướng dẫn các bạn từng bước chậm mà chắc, nếu bạn nào tự tin là đúng thì có thể bỏ qua phần kiểm tra này.

Tải phần mềm NTRadping tại đây chạy file NTRadping và điền các thông tin như dưới rồi nhấn Send. Nếu kết quả trả về Accept là kết nối thành công
  • Radius server: 192.168.0.111
  • Port: 1645
  • Secret key: 123456
  • User  name: u10
  • Password: 123


Xem log file trong radius server cũng đã ghi nhận Radius client có IP 192.168.0.112 dùng username u10 để chứng thực.



7. Cấu hình Phương thức chứng thực.



Noted: Với PEAP chúng dùng trong phần wireless authentication

Xong!

Học Python Qua Ví Dụ #001 - Ví Dụ Kinh Điển, Comments, Printing to stdout and Reading from stdin

Tham khảo các cài đặt python ở đây

Yêu cầu:
1. Dùng hàm Print() in ra chuỗi 
2. Dùng hàm Print() in ra chuỗi thông qua biến (có từ khóa của python)
3. In ra chuỗi với dữ liệu nhập từ bàn phím với hàm input
4. Chú thích trong python. Hàm input với cách bắt lỗi try, except. 

Thực hiện:

Ví dụ1:
In ra màn hình 1 dòng trắng
In ra màn hình chữ Hello World

  • Tạo file Demo.PY có nội dung như hình dưới
  • Từ màn hình command prompt chuyển đến thư mục chứa file Demo.py sau đó gõ lệnh python demo.py. Trong ví dụ này chúng tôi lưu ở c:\python


Ví vụ 2:
In ra chuỗi "c:\python\test\newfolder" thông qua biến.

Code:
path = "c:\python\test\newfolder"
print(path)
 
Kết quả:
C:\python>python Demo.py
c:\python       est
ewfolder

C:\python>
Nhận xét: Chúng ta thấy:
- "\t" không được in ra mà thay vào đó là 1 cái tab
- "\n" không được in ra và thay vào đó là 1 xuống hàng (hay enter)
Vì chúng trùng với các ký hiệu hay từ khóa của hệ thống nên nó sẽ không được in ra mà python sẽ ưu tiên xử lý chuỗi theo từ khóa trước.

Để giải quyết vấn đề này chúng ta thêm chữ r phía trước chuỗi, ý nghĩa bỏ qua các ký hiệu/từ khóa trong chuỗi, nhập sao xuất vậy:
code:
path = r"c:\python\test\newfolder"
print(path)

Kết quả:
C:\python>python Demo.py
c:\python\test\newfolder

Vidu 3:
Yêu cầu nhập dữ liệu từ bàn phím và in nội dung vừa nhập ra màn hình.

Code:

output = input("Nhap vao Chuoi: ")

print("Chuoi ban vua nhap vao: ", output)
Kết quả:
C:\python>python Demo.py
Nhap vao Chuoi: Hoc Python qua vi du
Chuoi ban vua nhap vao: Hoc Python qua vi du
C:\python>

Ví dụ 4:
Hàm input chỉ chạy trên python3.6 trờ lên và không chạy trên python2.x viết chương trình nhập chuỗi từ bàn phím và in ra chuỗi vừa nhập và đảm bảo chạy được trên cả python3.x và python2.x

Code:
'''Đây là chú thích nhiều dòng!!!
Hàm input chỉ chạy trên python3.6 trờ lên và không chạy trên python2.x
viết chương trình nhập chuỗi từ bàn phím và in ra chuỗi vừa nhập và
đảm bảo chạy được trên cả python3.x và python2.x
'''
from __future__ import print_function # nếu sử dụng python 2.x phải thêm dòng này
try: # trước tiên thử với python2.x
    output = raw_input("'python2' Nhap vao Chuoi: ")
except NameError: # nếu không phải pytho2.x thì chạy code bên dưới.
    output = input("'python3' Nhap vao Chuoi: ")
print("Chuoi ban vua nhap vao: ", output)

Chú thích trong python:
 
  • Dùng dấu thăng # chú thích 1 dòng, nội dung sau dấu # là chú thích python sẽ bỏ qua không thực thi 
  • Nếu muốn chú thích nhiều dòng liên tiếp thì dùng 1 cặp 3 dấu nháy đơn ''' ''' nội dung chú thích trong cặp nháy này
Kết quả:
C:\python>python Demo.py
'python3' Nhap vao Chuoi: 8.8.8.8
Chuoi ban vua nhap vao: 8.8.8.8
C:\python>

Xong!

Mô Hình Mạng Cho Các Doanh Nghiệp Vừa & Nhỏ - Bài 4 - Chuyên Đề Radius Authentication (802.1x) on Windows 1/4

Sơ đồ tổng quan mô hình

Trong Lab chuyên đề Radius Authentication chúng tôi chia ra làm 4 phần. Theo sơ đồ trên mỗi phần chúng tôi thực hiện một Zone với nội dung như sau:
  • Lab 1: Chuẩn bị và cài đặt các thứ cần thiết để xây dựng một Radius Server trên Windows - Zone #1
  • Lab 2: Cài đặt cấu hình Radius Server trên Windows - Zone #1
  • Lab 3: Cài đặt cấu hình sao cho khi cắm thiết đầu cuối vào switch thì phải đăng nhập bằng user và password thông qua Radius server đã xây dựng ở Lab 1 - Zone #1 & Zone #2
  • Lab 4: Cài đặt cấu hình sao cho khi các thiết bị không dây khi kết nối vào hệ thống phải đăng nhập trông qua Radius server đã xây dựng ở Lab 1 - Zone #1 & Zone #3
LAB 1
Yêu cầu:
1. Cài đặt domain controller trên Windows 2012 R2
2. Cài đặt Network Policy Server
3. Cài đăt Certification Authority
4. Cấu hình Root CA Enterprise

Thực hiện:
1. Cài đặt domain controller trên Windows 2012 R2

Cài đặt IP với các thông tin:
IPv4 Address. . . . . . . . . . . : 192.168.0.111
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . : 192.168.0.1
DNS Servers . . . . . . . . . . . : 127.0.0.1

Cài Active Directory Domain Services
Server Roles -> Active Directory Domain Services -> Add Features -> Next -> Next -> Next -> Install

Cài đặt Domain Controller
Promote this server to domain controller -> Add a new forest -> nhập trên domain cần tạo (Lab này nhập: KHANHVC.com) -> Next -> để mặc định -> nhập password -> Next -> Next  -> Next  -> Next  -> Next  -> Install -> xong bước này server sẽ tự khởi động -> Xong

Vì đây là bài nói về chuyên Radius xây dựng để chuẩn bị phần Radius Authentication 802.1x nên chúng tôi lướt nhanh, chỉ hướng dẫn cho các bạn cách xây dựng một domain controller mới hoàn toàn.

Thiết lập chính sách password: 

Thực hiện như hình

Bước này cho phép chúng ta tạo user với password đơn giản, và chiều dài của password thấp nhất là 3 ký tự.

2. Cài đặt Network Policy Server
Server Roles -> Network Policies and Access Services -> Add Features -> Next -> Next -> Next -> Network Policy Server -> Next -> Install


3. Cài đăt Certification Authority 
Server Roles -> Active Directory Certificate Services -> Add Features -> Next -> Next -> Next -> Certification Authority -> Next -> Install


Kết quả cài đặt ở mục 1, 2 và 3

4. Cấu hình Root CA Enterprise
Server Roles -> Active Directory Certificate Services on the destination Server -> Next -> Certificate Authority -> Next


CA Enterprise -> Next -> Root CA -> Next


Create a new private key -> Next -> chọn RSA# Microsoft Software Key Storage Provider;  Key length 2048;  SHA1 -> Next


Next -> Next ->  Next -> configure




Request and Enroll Certificate các bước thực hiện như hình bên dưới:




Kết quả sau khi Enroll CA

Đến đây chúng đã hoàn thành xong các điều kiện cơ bản đủ để xây dựng Raidius Server trên Windows Server. Chúng ta còn tiếp tục với chuyên đề này trong các bài Lab 2, Lab 3, Lab 4.

Xong!

P/s: Trong bài lab này chúng tôi thực hiện cài đặt DC, Root CA và Network Policy Server trên 1 máy. Trong thực tế triển khai các bạn có thể làm trên nhiều server, mỗi server làm một nhiệm vụ khác nhau.

Cisco, Cách Sao Lưu/Backup & Phục Hồi/Restore Cấu Hình Thiết Bị Cisco và TFTP Server

Yêu cầu:
1. Chuẩn bị mô hình:
2. Sao lưu/Backup cấu hình trên thiết bị cisco đến TFTP server
3. Phục hồi/Restore cấu hình có thiết bị với TFTP Server

Thực hiện:
1. Chuẩn bị mô hình:


1.1. Download TFTP Server và cài mặt định
1.2. Cài đặt thông tin cơ bản


Đảm bảo TFTP đã Start


Cài đặt port sẽ sử dụng khi truyền file (trong trường hợp này là port 69 và giao thức UDP); nơi lưu trữ logfile là C:\TFTPServer\Logs

Nơi lưu trữ file backup, trong trường hợp này là C:\TFTPServer\BackupStore

1.3. Chỉnh firewall trên Windows

Đảm máy tính cài TFTP Server đã được cho phép truy cập port 69 UDP theo chiều inbound, và từ thiết bị cisco (router hoặc switch) có thể ping thấy được server TFTP.

Thực hiện trên PowerShell:
netsh advfirewall firewall add rule name="Allow UDP 69 for TFTP" dir=in action=allow protocol=UDP localport=69

Cisco#ping 192.168.0.48
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.0.48, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/4/9 ms

2. Sao lưu/Backup cấu hình trên thiết bị cisco đến TFTP server
2.1 Trên thiết bị cisco:
Cisco#copy startup-config tftp:
Address or name of remote host []? 192.168.0.48 
Destination filename [cisco-confg]? cisco-config-bk.cfg 
!!
4898 bytes copied in 0.042 secs (116619 bytes/sec)

Giải thích: 192.168.0.48 là IP của TFTP server; cisco-config-bk.cfg tên của file backup cần lưu

P/S: Chúng ta cũng có thể copy running-config tftp:

HOẶC:

Như chúng ta đã biết mọi cấu hình sẽ được lưu trong flash:
Cisco#dir flash:
Directory of flash:/
    2  -rwx        2084   Mar 4 1993 05:54:43 +00:00  private-config.text
    3  -rwx        1936   Mar 1 1993 00:00:43 +00:00  vlan.dat
    5  -rwx        3096   Mar 1 1993 00:00:50 +00:00  multiple-fs
    6  -rwx        4898   Mar 4 1993 05:54:43 +00:00  config.text
    7  drwx         192   Mar 1 1993 00:47:57 +00:00  c2960-lanbasek9-mz.150-2.SE8
  592  drwx          64   Mar 1 1993 00:52:20 +00:00  dc_profile_dir
65544192 bytes total (49498112 bytes free)
Cisco#

Noted: dir flash: có dấu 2 chấm nhé!

File config.text chính là file cấu hình hiện tại cần phải sao lưu

Cisco#copy flash:config.text tftp:
Address or name of remote host []? 192.168.0.48
Destination filename [config.text]? config.text.cfg
!!
4898 bytes copied in 0.034 secs (144059 bytes/sec)
Cisco#

Giải thích: Copy file config.text từ flash đến TFTP và đổi tên thành config.text.cfg

Chú ý: Nếu thiết bị là switch, khi backup cấu hình chúng ta phải thực hiện backup cấu hình của vlan, file cấu hình này được lưu trữ trong flash với tên vlan.dat

Cisco#copy flash:vlan.dat tftp:
Address or name of remote host []? 192.168.0.48
Destination filename [vlan.dat]? vlan.dat.100.21.cfg
!!
1936 bytes copied in 0.017 secs (113882 bytes/sec)
Cisco#

Backup file vlan.dat từ flash của switch đến TFTP server và lưu với tên là vlan.dat.100.21.cfg

2.2 Quan sát trên TFTP Server


Giải thích:
     - 1: Tên file "cisco-config-bk.cfg" đã được tạo ra trong đường dẫn đã cài đặt ở phần chuẩn bị
     - 2: Từ thiết bị có IP là 192.168.100.21
     - 3. Đã upload thành công

3. Phục hồi/Restore cấu hình có thiết bị với TFTP Server

Cisco#copy tftp: flash:
Address or name of remote host []? 192.168.0.48
Source filename []? config.text.cfg
Destination filename [config.text.cfg]? config.text
%Warning:There is a file already existing with this name
Do you want to over write? [confirm] Y
Accessing tftp://192.168.0.48/config.text.cfg...
Loading config.text.cfg from 192.168.0.48 (via Vlan1): !
[OK - 4898 bytes]
4898 bytes copied in 8.104 secs (604 bytes/sec)
Cisco#

Thực hiện copy file config.text.cfg từ trên TFTP server có IP 192.168.0.48 vào flash: của thiết bị và đổi tên thành file config.text (khi thiết bị boot nó sẽ tìm đọc file config.text và load cấu hình file này vào startup-config, nếu muốn load file cấu hình đó thì chúng ta phải đặt tên là config.text). Vì file đã tồn tại nên có cảnh báo, chúng ta chọn Yes để xác nhận và thực hiện copy.

Nếu thiết bị là switch và đã cấu hình vlan chúng ta phải thực hiện thêm phần restore file vlan.dat nữa nhé.

Xong!

/*header slide*/