Python untuk Automasi Rangkaian
Gunakan pustaka Python seperti `paramiko` dan `netmiko` untuk berinteraksi dengan peranti rangkaian melalui SSH serta mengautomatikkan konfigurasi.
Python untuk Automasi Rangkaian ialah pelajaran Rangkaian Linux dan TCP/IP untuk Pembangun percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Rangkaian Linux dan TCP/IP untuk Pembangun, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Rangkaian Linux dan TCP/IP untuk Pembangun merangkumi sejumlah 4 pelajaran.
Python untuk Automasi Rangkaian
Selamat datang ke automasi rangkaian dengan Python! Python ialah bahasa yang berkuasa dan serba boleh, menjadikannya pilihan kegemaran untuk mengautomasikan tugasan rangkaian.
Python memudahkan operasi yang kompleks, membantu mengurus peranti dan berintegrasi dengan pelbagai API rangkaian. Mari lihat caranya!
Memperkenalkan Paramiko
Alat pertama kita ialah Paramiko. Ia ialah pustaka Python yang melaksanakan protokol SSHv2. Anggaplah ia sebagai kit alat aras rendah untuk sambungan shell selamat (SSH).
- Klien/Pelayan SSH: Boleh bertindak sebagai klien dan pelayan.
- Selamat: Menggunakan penyulitan kukuh untuk komunikasi.
- Serba boleh: Sesuai untuk tugasan SSH umum, seperti menjalankan perintah atau memindahkan fail.
Paramiko: Sambungan SSH Asas
Berikut ialah cara menggunakan Paramiko untuk menyambung kepada pelayan jauh dan melaksanakan perintah. Ingat untuk menggantikan kelayakan ruang letak!
import paramiko
def connect_and_run(hostname, username, password, command):
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
client.connect(hostname=hostname, username=username, password=password, timeout=5)
stdin, stdout, stderr = client.exec_command(command)
print(f"Output:\n{stdout.read().decode().strip()}")
print(f"Errors:\n{stderr.read().decode().strip()}")
except paramiko.AuthenticationException:
print("Authentication failed, please check your credentials.")
except paramiko.SSHException as e:
print(f"SSH connection error: {e}")
except Exception as e:
print(f"An error occurred: {e}")
finally:
client.close()
if __name__ == "__main__":
# Replace with your actual server details and command
HOST = "your_server_ip"
USER = "your_username"
PASS = "your_password"
CMD = "echo Hello from Paramiko!"
print("Attempting to connect with Paramiko...")
connect_and_run(HOST, USER, PASS, CMD)
print("Note: This code won't connect without a live server and valid credentials.")Mengendalikan Output Perintah
Apabila anda menjalankan client.exec_command(command), ia mengembalikan tiga objek seperti fail: stdin, stdout dan stderr.
- stdout: Output piawai bagi perintah.
- stderr: Sebarang mesej ralat yang dihasilkan oleh perintah.
- stdin: Digunakan untuk menghantar input kepada perintah (kurang biasa untuk pelaksanaan mudah).
Sentiasa nyahkod output (contohnya, .decode()) kerana output diterima sebagai bait.
Paramiko untuk Pemindahan Fail (SFTP)
Selain menjalankan perintah, Paramiko juga menyokong SFTP (SSH File Transfer Protocol). Ini membolehkan Anda menyalin fail dengan selamat ke dan dari sistem jauh.
Anda boleh menggunakannya untuk memuat naik fail konfigurasi, memuat turun log atau mengurus pakej perisian pada peranti rangkaian Anda.
Memperkenalkan Netmiko
Walaupun Paramiko berkuasa, interaksi dengan peranti rangkaian tertentu sering memerlukan logik tambahan untuk gesaan, penomboran halaman dan mod perintah yang berbeza. Di sinilah Netmiko menyerlah!
- Dibina berasaskan Paramiko: Menggunakan Paramiko di sebalik tabir.
- Khusus untuk peranti: Menyokong banyak vendor (Cisco, Juniper, Arista dan lain-lain).
- API dipermudah: Mengendalikan interaksi biasa dengan peranti rangkaian secara automatik.
Netmiko: Menyambung ke Peranti Rangkaian
Netmiko menggunakan kamus untuk mentakrifkan butiran peranti, menjadikan sambungan lebih mudah. Ia memudahkan banyak tugas automasi rangkaian.
from netmiko import ConnectHandler
def connect_with_netmiko(device_info):
try:
print(f"Attempting to connect to {device_info['host']} with Netmiko...")
net_connect = ConnectHandler(**device_info)
print(f"Successfully connected to {net_connect.base_prompt}")
net_connect.disconnect()
print("Disconnected from device.")
except Exception as e:
print(f"Netmiko connection error: {e}")
if __name__ == "__main__":
# Replace with your actual device details
device = {
"device_type": "cisco_ios", # e.g., cisco_ios, juniper_junos, etc.
"host": "your_device_ip",
"username": "your_username",
"password": "your_password",
"secret": "your_enable_secret" # Optional, for enable mode
}
connect_with_netmiko(device)
print("Note: This code won't connect without a live device and valid credentials.")Netmiko: Menghantar Konfigurasi
Netmiko sangat sesuai untuk menghantar perintah konfigurasi. Gunakan send_config_set() untuk senarai perintah dan send_command() untuk perintah operasi.
from netmiko import ConnectHandler
def send_config_to_device(device_info, config_commands):
try:
print(f"Connecting to {device_info['host']} to send config...")
net_connect = ConnectHandler(**device_info)
print("Sending configuration commands...")
output = net_connect.send_config_set(config_commands)
print(f"Configuration Output:\n{output}")
net_connect.disconnect()
print("Disconnected.")
except Exception as e:
print(f"Netmiko config error: {e}")
if __name__ == "__main__":
# Replace with your actual device details
device = {
"device_type": "cisco_ios",
"host": "your_device_ip",
"username": "your_username",
"password": "your_password",
"secret": "your_enable_secret"
}
# Example configuration commands
config_lines = [
"hostname CoddyRouter",
"no ip domain lookup",
"line vty 0 4",
"login local"
]
send_config_to_device(device, config_lines)
print("Note: This code won't apply config without a live device and valid credentials.")Amalan Terbaik & Keselamatan
Semasa melakukan automasi, sentiasa utamakan keselamatan dan keteguhan:
- Pengurusan Kredensial: Jangan sekali-kali menulis kata laluan terus dalam kod. Gunakan pemboleh ubah persekitaran, peti besi selamat atau gesaan input.
- Pengendalian Ralat: Gunakan blok
try-exceptuntuk menangkap masalah sambungan atau kegagalan perintah dengan cara yang terkawal. - Pembalakan: Catatkan semua tindakan dan output untuk tujuan pengauditan dan penyelesaian masalah.
- Idempoten: Reka bentuk skrip supaya idempoten (menjalankannya beberapa kali menghasilkan kesan yang sama seperti menjalankannya sekali).
Paramiko berbanding Netmiko
Anda telah melihat Paramiko dan Netmiko. Sekarang, mari uji pemahaman Anda tentang masa yang sesuai untuk menggunakan setiap alat bagi tugas automasi rangkaian Anda.
Ulang Kaji: Python untuk Automasi Rangkaian
Syabas! Dalam pelajaran ini, Anda telah mempelajari:
- Paramiko: Pustaka Python aras rendah untuk tugas klien/pelayan SSH umum dan SFTP.
- Netmiko: Pustaka aras lebih tinggi yang dibina berasaskan Paramiko, khusus untuk mengautomasi interaksi dengan pelbagai peranti rangkaian.
Alat-alat ini membolehkan Anda menulis skrip Python yang berkuasa untuk mengurus, mengkonfigurasi dan memantau infrastruktur rangkaian secara berprogram!
Pelajari Rangkaian Linux dan TCP/IP untuk Pembangun dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 12
- Pelajaran
- 48
Soalan Lazim
Adakah pelajaran “Python untuk Automasi Rangkaian” percuma?
Ya — teks penuh “Python untuk Automasi Rangkaian” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Rangkaian Linux dan TCP/IP untuk Pembangun, tingkat taraf kepada CoddyKit PRO. Kursus Rangkaian Linux dan TCP/IP untuk Pembangun merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Python untuk Automasi Rangkaian”?
Gunakan pustaka Python seperti `paramiko` dan `netmiko` untuk berinteraksi dengan peranti rangkaian melalui SSH serta mengautomatikkan konfigurasi. Anda berlatih Rangkaian Linux dan TCP/IP untuk Pembangun menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Rangkaian Linux dan TCP/IP untuk Pembangun?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Rangkaian Linux dan TCP/IP untuk Pembangun di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.
Berapa lamakah pelajaran “Python untuk Automasi Rangkaian” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Rangkaian Linux dan TCP/IP untuk Pembangun ini?
Ya. Setiap pelajaran Rangkaian Linux dan TCP/IP untuk Pembangun menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Skrip Bash untuk Rangkaian
- Python untuk Automasi Rangkaian
- API REST untuk Peranti Rangkaian
- Konfigurasi Rangkaian dengan Ansible