Tiếp series lập trình Python, xin giới thiệu với các bạn đoạn code Python 3 sau sử dụng thư viện paramiko có nhiệm vụ kết nối SSH tới 1 Remote Linux Server và chạy command “cat /etc/*-release” trên đó.paramiko có nhiệm vụ kết nối SSH tới 1 Remote Linux Server và chạy command “cat /etc/*-release” trên đó.
Kết nối SSH và chạy command sử dụng Python 3
import paramiko ssh = paramiko.SSHClient[] # Auto add host to known hosts ssh.set_missing_host_key_policy[paramiko.AutoAddPolicy[]] # Connect to server ssh.connect["192.168.2.100", username="root", password="123456"] # Do command [ssh_stdin, ssh_stdout, ssh_stderr] = ssh.exec_command["cat /etc/*-release"] # Get status code of command exit_status = ssh_stdout.channel.recv_exit_status[] # Print status code print ["exit status: %s" % exit_status] # Print content for line in ssh_stdout.readlines[]: print[line.rstrip[]] # Close ssh connect ssh.close[]
Kết quả chạy thử:
Cài đặt paramiko module cho Python 3
Để chạy đoạn code trên cần cài đặt Python Module/Package là paramiko, chúng ta cài thông qua pip3paramiko, chúng ta cài thông qua pip3
pip3 install paramiko
Khắc phục một số lỗi khi cài đặt paramiko
Fix lỗi:
CryptographyDeprecationWarning: encode_point has been deprecated on EllipticCurvePublicNumbers and will be removed in a future version. Please use EllipticCurvePublicKey.public_bytes to obtain both compressed and uncompressed point encoding.
pip3 install cryptography==2.4.2
Nguồn: vinasupport.com
Mô hÌnh mạng:
Gồm 1 máiy ảo kali linux, 1 bộ định tuyến cisco giả lập trênn gns3.
1. cấu hÌnh trên bộ định tuyến r1
1.1 CấU HÌNH SSH Phiên bản 2
#config Terminal [config] #Enable Mật khẩu & nbsp; mật khẩu [config] #line vty 0 4 [config-line]#mật khẩu & nbsp; 123 [config-line] #Login local [config-line] #exitconfig terminal
[config]#enable password password
[config]#line vty 0 4
[config-line]#password 123
[config-line]#login local
[config-line]#exit
. Phạm vi từ 360 đến 2048 cho các khóa mục đích chung của bạn. Chọn một mô đun chính lớn hơn 512 có thể mất vài phút. Làm thế nào nhiều bit trong mô đun [512]: 1024 [config] #IP SSH phiên bản 2username vnpro password 123
[config]#ip domain-name vnpro
[config]#crypto key generate rsa
The name for the keys will be: R1.vnpro .Choose the size of the key modulus in the range of 360 to 2048 for your
General Purpose Keys. Choosing a key modulus greater than 512 may take a few minutes.How many bits in the modulus [512]: 1024
[config]#ip ssh version 2
R1 [config] #Interface fastEthernet 0/0interface fastEthernet 0/0
R1 [config-if] #IP Địa chỉ DHCPip address dhcp
R1 [config-if] #no shutdownno shutdown
R1[config-if]#exitexit
- Thực hiện kiểm tra /a chỉ ip của giao diện fastethenet 0/0
FastEthernet0/0 là lên, giao thức dòng đã tăng
Địa chỉ Internet là 192.168.186.131/24192.168.186.131/24
Địa chỉ phát sóng là 255.255.255.255
Địa chỉ được xác định bởi DHCP
2. Trên Kali
Yêu cầu cần: Đạo
2.1 thực hiện kiểm tra kết nối ssh vào r1
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; SSH
+ Nếu gó lỗi
"
@@@@@@@@@ nhớ
@& nbsp; & nbsp; & nbsp; Cảnh báo: Nhận dạng máy chủ từ xa đã thay đổi! @
@@@@@@@@@ nhớ
@& nbsp; & nbsp; & nbsp; Cảnh báo: Nhận dạng máy chủ từ xa đã thay đổi! @
", thực hiện lệnh sau:ssh-keygen -f "/root/.ssh/known_hosts" -R "192.168.186.131"
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; ssh -keygen -f "/root/.ssh/known_hosts" -r "192.168.186.131" & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;
+ Nếu Có lỗi "Không tìm thấy phương thức trao đổi khóa phù hợp. Ưu đãi của họ: Diffie-Hellman-group1-sha1":ssh -oKexAlgorithms=+diffie-hellman-group1-sha1
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; SSH -OKEXALGORITHMS =+Diffie-Hellman-Group1-Sha1
+ Nếu Có lỗi "Không tìm thấy mật mã phù hợp. Ưu đãi của họ: AES128-CBC, 3DES-CBC, AES192-CBC, AES256-CBC":
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Tệp Truy Cập Vào:vi /etc/ssh/ssh_config
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; vi/etc/ssh/ssh_config
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Tệpso vào cuối:Ciphers aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; CIPHERS AES128-CBC, 3DES-CBC, AES192-CBC, AES256-CBC
=> Thực hiện kiểm tra lại kết nối ssh
SSH -OKEXALGORITHMS =+Diffie-Hellman-Group1-Sha1
Tính xác thực của máy chủ '192.168.186.131 [192.168.186.131]' không thể được thiết lập.
Dấu vân tay chính của RSA là SHA256: HSXD9PAK+WFL1W2NXJPJDHFTKHYU2THI2MIIPK4SWBS.yes
Bạn có chắc là bạn muốn tiếp tục kết nối [có/không/[dấu vân tay]]? Vâng
Cảnh báo: Đã thêm vĩnh viễn '192.168.186.131' [RSA] vào danh sách các máy chủ đã biết.username vnpro password 123]
R1>enable
Mật khẩu của mình: [NHập 123] [Tên người dùng & NBSP; VNPRO & NBSP; Mật khẩu & NBSP; 123]password] [enable password password]
- Mật khẩu: [Mật khẩu NHập] [Bật mật khẩu & NBSP; Mật khẩu]
Kết nối ssh vào router r1 thàn
2.2 CÀi ĐặT thư Viện NetMiko
Yêu cầu: Máiy ảo kali truy cập đun internet.sudo apt-get install python3-netmiko
Thực hiện lệnh: sudo apt-get install python3-netmikoY để tiếp tục quá trình cài đặt]
Không
2.3 lập trình python sử dụng thư viện netmiko Để Th
2.3.1 Tệp Tạo Python & NBSP;
vi AddipInterface.py
2.3.2 Thiết Lập SSH
từ NetMiko Nhập khẩu Connecthandler
R1 = {'device_type': 'cisco_ios',
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 'Máy chủ': '192.168.186.131',
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 'Tên người dùng': 'VNPRO',
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 'Mật khẩu': '123',
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 'mật khẩu bí mật', }
net_connect = Connecthandler [** R1]
From netmiko import ConnectHandler
Gọi hanecthandler trong thư viện netmiko bằng dầmg lệNH: & nbsp; & nbsp; & nbsp; & nbsp; ; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Từ NetMiko Nhập khẩu Connecthandler
+ device_type: các thiết bị của cisco thuờng là ‘cisco_ios’
+ host: IP của thiết bị
+ username: tên đăng nhập
+ password: mật khẩu đăng nhập
+ secret : mật khẩu enable
gán giá trị khi thực hiện hàm ConnectHandler cho biến net_connect .
Tới đây chúng ta đã thiết lập thành công SSH bằng netmiko .
. Gán Giá trị Khim thực hiện Hàm Connecthandler Cho Biến Net_Connect. Tới đNy chún ta đeo thiết lập thong
2.2.3 sử dụng một số ha
- Để GửI 1 Câu lệNH ĐếN Bộ định tuyến/Switch Quan SSH ở Chế độ Exec đặc quyền, Ta Dùnoutput = net_connect.send_command['sh ip int bri']
print[output]
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; output = net_connect.send_command ['sh ip int bri']]
net_connect.enable[]net_connect.enable[]
- Để VÀO Chế độ EXEC đặc quyền, Ta DùnĐể gửi 1 câu lệnh đến Router/Switch ở config mode ta dùng hàm send_config_set[], VD:
net_connect.enable[]
- Để GửI 1 CâU lệNH ĐếN Bộ định tuyến/Switch ở Cấu hình Chế độ ta
net_connect.send_config_set[addIPInterface]
Một số lệnh khác thường dùng : net_connect.save_config[] - lưu cấu hình net_connect.find_prompt[] - trả về tên host R/Sw net_connect.disconnect[] - Đóng kết nối
net_connect.save_config[] - lưu cấu hình
net_connect.find_prompt[] - trả về tên host R/Sw
net_connect.disconnect[] - Đóng kết nối
2.3.4 File cấu hình về kết quả thực thi
File addIPInterface.py như sau :addIPInterface.py như sau :
Thực hiện chạy file addIPInterface.py :
#python3 addIPInterface.py
Kết quả :
- Ta đã thực hiện thành công cấu hình IP cho 1 interface trên router R1 thông qua sử dụng thư viện netmiko trong python.
Thông tin khác
- » TỔNG QUAN VỀ MẠNG LAN [LOCAL AREA NETWORK] [21.02.2022][21.02.2022]
- » Mô tả cấu tạo, quá trình khởi động và các chế độ cấu hình của Router. [19.02.2022][19.02.2022]
- » Giới thiệu sách hay cần đọc CCNA Ops SECFND [CCNA SECURITY] [18.02.2022][18.02.2022]
- » Tổng quan về Ethernet Frame và MAC address [18.02.2022][18.02.2022]
- » Tổng quan về Collision domain, broadcast domain và cơ chế CSMA/CD [17.02.2022][17.02.2022]
- » TỔNG QUAN VỀ GIAO THỨC CDP VÀ LLDP [17.02.2022][17.02.2022]
- » Mô tả cơ chế hoạt động của giao thức ARP [16.02.2022][16.02.2022]
- » TỔNG QUAN VỀ CÁC LOẠI CÁP MẠNG VÀ TIÊU CHUẨN BẤM CÁP MẠNG [16.02.2022][16.02.2022]