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

Using Streams, Pipes & Redirects - STDOUT/STDIN/STDERR In Linux/Ubuntu/CentOS

Nội dung:

  • Redirecting standard input/output/error
  • Pipe: dữ liệu output của command này trở thành dữ liệu input của command khác
  • Sử dung output của command như là argument của command khác
  • Đẩy output của command đến stdout và log file


Command 

Lệnh Giải Thích Ví Dụ
> Đưa STDOUT ghi vào file, nếu file đã có thì ghi đè, file chưa tồn tại thì tạo file
>> chèn vào cuối file
2> STDERR nếu có lỗi sẽ ghi vào file, ghi đề lên file cũ
2>> STDERR lỗi chèn vào cuối file
< STDIN đưa dữ liệu vào từ 1 file
<> STDIN dữ liệu vào của 1 file sẽ redirect sang STDOUT vào file
tr tạm hiểu là tìm và thay thế.
Nếu trong chuỗi "Hoc linux go miet" có khoảng trắng thì thay thế bằng dấu "_" echo "Hoc linux go miet" | tr " " "_"
Nếu nội dung trong file.txt có khoảng trắng thì thay dấu "_" tr " " "_" < file.txt
tee cho phép ghi output ra file và ghi output ra terminal
ghi chuỗi "example" vào file có tên là file.txt echo "example" | tee file.txt
chèn thêm chuỗi "example-1" vào file.txt (không ghi đè) echo "example-1" | tee -a file.txt

Xong!

Basic File Management In Linux / Quản Lý File Căn Bản Trong Linux

 Nội dung:

  • Copy, duy chuyển và xóa file và thư mục
  • Copy nhiều file, nhiều thư mục với đệ qui (recursively)
  • Xóa file, thư mục đệ qui
  • Tìm kiếm


Command

Lệnh Giải Thích Ví Dụ
mkdir tạo thư mục mới mkdir vidu
rmdir xóa thư mục rmdir vidu
touch tạo file mới rỗng touch vidu.txt
rm xóa file đã có rm vidu.txt

xóa thư mục vidu và tất cả các file thư mục này rm -r vidu/

xóa thư mục vidu và tất cả các file thư mục này mà không cần hỏi. f: force rm -rf vidu/
cp copy file hoặc thư mục. Cấu trúc: cp file_nguon file_dich
mv duy chuyển file hay thư mục. cấu trúc mv nguon dich
tar
Tape Archive (tarball) - là chương trình cho phép lưu trữ nhiều file dưới dạng một file (đóng gói)

Tạo file vidu.tar với dữ liệu được lấy từ thư mục vidu. c: tạo file; v: hiển thị dánh sách các file trong tiến trình; f: tên file tar -cvf vidu.tar vidu/

Giải nén file.tar, các file sau khi giải nén sẽ được đưa vào thư mục vidu. x: giải nén file tar -xvf vidu.tar vidu/
gzip
tar.gz hoặc tgz: Nén và giải nén tốc độ nhưng nén (compressed) không cao
bz2
tab.bz2 hoặc tbz hoặc tb2: nén và giải nén tốn nhiều thời gian hơn gzip, do thuật toán giải nén có độ nén cao hơn
find
tìm kiếm. ví dụ tìm kiếm tất cả các file .txt và ký tự bắt đầu là fi find -name fi*.txt

Xong!

History Commands In Linux/Ubuntu/CentOS - Lệnh History Trên Linux

Ví Dụ Giải Thích
history hiển thị các câu lệnh user đã thực hiện trước đó
history 3 hiển thị 3 câu lệnh gần nhất
!! Thực hiện lại câu lệnh gần nhất
!101 thực hiện lại câu lệnh có số thứ tự là 101
!systemctl thực hiện lại câu lệnh cuối cùng bắt đầu bằng chuỗi "systemctl"
history | grep date hiển thị các câu lệnh đã thực thi có chuỗi "date"
history -w ghi lịch sử vào file users ~/.bash_history
history -c xóa lịch sử các câu lệnh đã thực hiện
history -d 101 xóa lịch sử câu lệnh có số thứ tự 101
echo "test"; history -d $(history 1) thực hiện in ra mà hình chữ test và không ghi câu lệnh này vào history
echo $HISTSIZE hiển thị kích thước lưu trử hiện tại
HISTSIZE=1500 Tăng khả năng lưu trữ lên là 1500 câu lệnh

Xong!

Basic Shell Commands In Linux/Ubuntu/CentOS - Các Lệnh Shell Cơ Bản Trong Linux - Ubuntu

Mục lục:

1. Mở terminal trong Linux

2. Trợ giúp trong linux

3. Các phím tắt cơ bản

4. Các lệnh cơ bản

5. Các biến môi trường


Nội dung:

1. Mở terminal trong Linux



2. Trợ giúp trong linux
  • Man page: Để xem các tùy chọn các lệnh cụ thể, 
Ví dụ: man ls 
Trong đó: 
- man: là từ khóa
- ls: là lệnh cần xem các tùy chọn
  • --help:
Ví dụ: ls --help. muốn xem các tùy chọn của lệnh ls


3. Các phím tắt cơ bản
  • Tab: Hoàn thành dòng lệnh
  • Tab + Tab: hiện thị/liệt kê tất cả các lệnh có liên qua đến từ vừa gõ
Ví dụ: gõ pin và nhấn Tab 2 lần sẽ cho kết quả như hình

  • CTRL + L: clear terminal
  • CTRL + D: logout
  • CTRL + K: xóa về phải đến hết dòng
  • CTRL + U: xóa về trái đến hết dòng
  • CTRL + W: xóa trái "word"
  • CTRL + Y: paste sau khi U, K, W
  • CTRL + P: command vừa chạy trước đó
  • CTRL + N: command vừa chạy sau đó
  • CTRL + A: về đầu dòng lệnh
  • CTRL + E: về cuối dòng lệnh
  • CTRL + E: Reserve history command search
  • SHIFT Page Up/Down: up/down terminal
  • !!: thực thi dòng lệnh cuối cùng

4. Các lệnh cơ bản

Lệnh Giải Thích Ví Dụ
echo In ra nội dung những gì đứng sau nó, có thể là chuỗi hoặc là biến giá trị echo "hello world"
ls liệt kê các thư mục
pwd hiển thị đường dẫn đến thư mục đang hoạt động
cd thay đổi thư mục
lùi ra một cấp so với thư mục hiện tại cd ..
vào thư mục vidu cd vidu
clear xóa màn hình
history hiển thị các lệnh đã dùng trước đó
hiển thị 10 trước đó history 10
uname hiển thị phiên bản hệ điều hành uname -a
alias cơ bản là một shortcut/bí danh, có thể thay thế cho 1 lệnh hoặc tập lệnh alias vck="sudo apt-get update"
sau khi tạo alias xong, để thực thi lệnh/tập lệnh đã khai báo chúng ta chỉ cần gọi tên của alias vừa định nghĩa vck
unalias xóa alias unalias vck
ifconfig có thể biết được địa chỉ ip hiện tại của thiết bị
whoami hiển thị user hiện tại
adduser thêm user mới adduser vck311
passwd đổi password cho user passwd vck311
sudo thực thi câu lệnh với quyền cao nhất, đó là quyền root (khi thực hiện hệ thống yêu cầu nhập password) sudo adduser vck311
shutdown tắt máy tính sudo shutdown -h now
reboot khởi động lại máy tính

5. Các biến môi trường

Lệnh Giải Thích Ví Dụ
printenv hiển thị toàn bộ hoặc một phần các biến môi trường
env chạy chương trình trong 1 môi trường với các biến tùy chỉnh
set hiển thị tên/giá trị của Shell. Thay đổi các thuộc tính của Shell

Xong!

Học Python Qua Ví Dụ #023 - Jinja2 Template / Jinja2 Template For Loop

Nên xem bài dưới đây trước khi xem bài này:


  • Ví dụ 1:

import jinja2

vlan_dict = {				# định nghĩa dictionary có
    "vlan_id": 100,			# giá trị 100 (vlan 100)
    "vlan_name": "Thietbi",	# tên của vlan là "Thietbi"
}

# định nghĩa chuỗi
vlan_template = """			
vlan {{ vlan_id }}
   name {{ vlan_name }}
"""
'''
thực hiện nối các giá trị của dictionary vào chuỗi, 
nối giá trị vào các key nằm giữa 2 cặp dấu {{}}
'''
template = jinja2.Template(vlan_template)
print(template.render(vlan_dict))	


Kết quả:

vlan 100

   name Thietbi

[Finished in 0.2s]



  • Ví dụ 2 (for loop):

import jinja2

my_vlans = {			# định nghĩa dictionary có nhiều cặp giá trị
    "501": "blue501",
    "502": "blue502",
    "503": "blue503",
    "504": "blue504",
    "505": "blue505",
    "506": "blue506",
    "507": "blue507",
    "508": "blue508",
}
template_vars = {"vlans": my_vlans} # định nghĩa thêm một dictionary nữa, giá trị của dictionnary này là một dictionnary

# tạo vòng lặp lấy từng cặp key và giá trị gán vào vlan_id và vlan_name
# dấu - phía sau % là dùng bỏ dòng trắng khi xuất ra template
vlan_template = """
{%- for vlan_id, vlan_name in vlans.items() %}	
vlan {{ vlan_id }}
   name {{ vlan_name }}
{%- endfor %}
"""

# thực hiện nối
template = jinja2.Template(vlan_template)
print(template.render(template_vars))

Kết quả:
vlan 501
   name blue501
vlan 502
   name blue502
vlan 503
   name blue503
vlan 504
   name blue504
vlan 505
   name blue505
vlan 506
   name blue506
vlan 507
   name blue507
vlan 508
   name blue508
[Finished in 0.2s]


Xong!

Network Automation #003 - Netmiko Backup VLAN Configuration on Cisco IOS Switch

 Nên xem các bài dưới đây trước khi xem bài này:


Sơ đồ lab:


Yêu cầu:

Dùng thư viện netmiko để SSH vào và thực hiện backup cấu vlan trên switch


Chuẩn bị:

        Sw:

enable
conf t
hostname Sw1
ip domain name netmiko.lab

username admin privilege 15 password admin1234@sw1

line vty 0 4
login local
transport input ssh
crypto key generate rsa general-keys modulus 1024
ip ssh version 2

interface vlan 1
no shutdown
ip address 192.168.0.8 255.255.255.0
exit

vlan 10-20
do wri


Thực hiện:

from netmiko import ConnectHandler 
from datetime import datetime

bk_device = { 
	"host":"192.168.0.8",
	"username":"admin",
	"password":"admin1234@sw1",
	"device_type":"cisco_ios" 
	}

tftpserver = "192.168.0.48" 

def cisco_ios_sw(txt): # định nghĩa hàm backup VLAN cho switch cisco ios
	
	cmd = "copy vlan.dat tftp:"
	filename = txt + "vlan.dat"
	
	net_connect = ConnectHandler(**bk_device)

	output = net_connect.send_command_timing(cmd)
	if "Address or name of remote host []" in  output:
		output += net_connect.send_command_timing(tftpserver)
	if "Destination filename" in output:
		output += net_connect.send_command_timing(filename)

	print(output)
	print("-" * 80)	


print(f"Dang ket noi vao IP:'{bk_device['host']}' voi Username: '{bk_device['username']}'")	

now = datetime.now().strftime("%Y-%b-%d_%H%M%S")
filename = now + "_" + bk_device["device_type"] + "_" + bk_device["host"] 

cisco_ios_sw(filename)


  • Kết quả:

C:\python>python Demo.py

Dang ket noi vao IP:'192.168.0.8' voi Username: 'admin'

Address or name of remote host []? Destination filename [vlan.dat]? !!

2076 bytes copied in 0.025 secs (83040 bytes/sec)

--------------------------------------------------------------------------------

C:\python>


Xong!

/*header slide*/