Otomatis cadangan konfigurasi (setiap menit) di Cisco IOS

16

Saya ingin membuat router Cisco saya secara otomatis melakukan copy menjalankan TFTP (dan mengisi bidang secara otomatis) setiap 1 menit. Saya juga ingin dijalankan di latar belakang. Adakah yang tahu apakah ini mungkin / bagaimana cara melakukannya? Saya ingin melakukan ini demi melihat konfigurasi berjalan dari router saya di notepad ++ (yang memperbarui waktu nyata) daripada harus melakukan show run dan tekan spasi 4 atau 5 kali sebelum saya mendapatkan apa yang perlu saya lihat. Saya pikir ini akan sangat berguna untuk laboratorium yang kompleks. Selain itu, makro tidak berfungsi karena perintah server TFTP yang membutuhkan input.

Michael May
sumber
3
Apakah sekali menit benar-benar diperlukan? Sudahkah Anda juga mempertimbangkan menggunakan pemfilteran bawaan pada CLI dengan regex untuk memfilter bagian dari konfigurasi yang sedang berjalan yang ingin Anda lihat? Yaitu | includeatau | exclude? Saya berjuang untuk melihat manfaat dapat melihat konfigurasi berjalan Anda "secara real time".
John Jensen
Saya suka memiliki satu monitor dengan topologi saya dan jendela CLI (tab dan label). Monitor kedua saya dengan semua konfigurasi perangkat saya yang sedang berjalan saat ini. Mampu melihat semua menjalankan-konfigurasi saya secara real-time membuat pemecahan masalah, membandingkan dan menyalin / menempel blok perintah jauh lebih mudah. Terutama ketika masuk jauh ke pernyataan rute-peta dan ACL, itu manfaat besar tidak harus mengetik acara lari | S rute-peta beberapa kali untuk melihat dan membandingkan bagian konfigurasi ini dengan perangkat yang berbeda. Maaf Anda berjuang untuk menemukan ini berguna tetapi saya kira masing-masing.
Michael May
@JohnJensen poin bagus, saya tidak menangkap bagian tentang setiap menit. Christian, sudahkah Anda mempertimbangkan untuk membuka sesi ssh terpisah kedua untuk perangkat Anda pada monitor kedua, daripada membuka konfigurasi yang sedang berjalan dalam dokumen teks? Monitor sesi CLI A untuk perubahan dan monitor sesi CLI B untuk melihat konfigurasi. Tidak mengatakan satu cara lebih baik dari yang lain, hanya membuang ide di luar sana. :)
Brett Lykins
Brett, 'show running-config' tidak menghasilkan output waktu nyata. Saya harus mengetik show run lagi setiap kali saya membuat perubahan dan saya harus menekan tombol spasi beberapa kali untuk membuatnya menunjukkan semua konfigurasi. Sasarannya adalah memiliki konfigurasi berjalan penuh yang diperbarui hampir segera setelah Anda membuat perubahan tanpa intervensi pengguna.
Michael May
@ ChristiandelaPeña saya mengikuti Anda, saya hanya mengatakan bahwa orang yang berbeda bekerja dengan cara yang berbeda. Saya kira saya pribadi tidak melihat kebutuhan untuk memiliki live memperbarui konfigurasi dengan cara yang Anda gambarkan. Itu tidak membuatnya salah, hanya saja bukan cara saya bekerja. :) Saya ingin memberi Anda alat untuk melakukan apa yang Anda inginkan, seperti yang Anda inginkan. Selama Anda berlatih dan belajar, itu yang terpenting bagi saya.
Brett Lykins

Jawaban:

19

Anda memiliki beberapa opsi untuk mendapatkan fungsionalitas jenis ini di perangkat Cisco. (Yang mana yang Anda gunakan tergantung pada kebutuhan Anda dan kadang-kadang pada perangkat dan beban IOS. Beberapa perangkat yang lebih lama / beban IOS akan memiliki kemampuan yang berbeda.)

EDIT: Anda bertanya tentang melakukan ini setiap satu menit, yang seperti yang Anda temukan di obrolan kami tentang pertanyaan ini, akan merusak router Anda. (Terutama di GNS3.) Opsi di bawah ini tersedia untuk Anda untuk mengotomatiskan cadangan konfirmasi, namun saya tidak akan merekomendasikan melakukannya setiap 1 menit.

Anda dapat:

  1. Gunakan fungsionalitas Kron Cisco untuk penjadwalan perintah. Ini akan memungkinkan Anda untuk mengeksekusi perintah yang telah ditentukan pada jadwal yang dijadwalkan. Seperti yang Anda tunjukkan, copy run tftpmemerlukan konfirmasi file prompt. (Kecuali jika Anda mematikan konfirmasi prompt file , namun saya tidak merekomendasikannya sebagai pengaturan normal.) Redirect tidak memerlukan konfirmasi. Jadi perintah yang digunakan dalam scheduler adalahshow run | redirect tftp://$SERVERIP/$PATH/$FILE

  2. Gunakan fungsi Arsip Cisco untuk manajemen konfigurasi. Arsip adalah cara untuk menyimpan banyak salinan konfigurasi secara berurutan dan mengembalikan konfigurasi jika diperlukan ke versi sebelumnya. Menyalin dengan Kron menimpa konfigurasi sebelumnya, sementara Arsip memungkinkan Anda untuk menyimpan hingga 14 versi konfigurasi yang berbeda di lokasi yang ditentukan. Lihat tautan ini di jaringan Cisco Learning untuk info lebih berguna tentang Archive. Khususnya cara mengatur nama file secara dinamis dengan tag $ h dan $ t.

Dalam salah satu dari contoh di bawah ini, Anda dapat menyesuaikan waktu dengan kebutuhan Anda, ini adalah apa yang dengan cepat saya keluarkan dari beberapa peralatan produksi.


Contoh konfigurasi untuk meminta Kron write config dan cadangkan ke server tftp seminggu sekali:

kron occurrence SaveConfig at 23:50 Mon recurring
policy-list SaveConfig
!
kron occurrence BackupRunningConfig at 23:55 Mon recurring
policy-list BackupRunningConfig
!
kron policy-list SaveConfig
cli write
!
kron policy-list BackupRunningConfig
cli show running-config | redirect tftp://10.10.10.10/configs/testswitch.txt

Contoh config agar Archive mencadangkan konfigurasi Anda ke server tftp setiap hari:

archive
 path tftp://10.10.10.10/configs/$h-$t
 time-period 1440
 maximum 14
Brett Lykins
sumber
12

Ada sebenarnya cara lain.

Anda dapat memicu salinan TFTP menggunakan SNMP. Ini tidak terlalu lurus ke depan, tetapi sangat berguna.

Pertama, Anda membutuhkan server TFTP (tidak mengejutkan). Anda juga akan membutuhkan sesuatu yang dapat mengirim permintaan snmp. Saya telah melakukannya secara efektif dengan alat snmp Linux.

Anda ingin mengatur komunitas baru untuk SNMP yang memiliki akses tulis terbatas, dan mungkin menguncinya lebih jauh dengan IP ACL. Sebenarnya Anda hanya perlu bisa menulis ke ccCopyTableOID.

Di sisi Linux, Anda akan memerlukan MIB berikut (untuk keterbacaan, bukan fungsionalitas)

CISCO-CONFIG-COPY-MIB
CISCO-SMI
CISCO-ST-TC

Dengan MIB yang diinstal di lokasi yang relevan untuk konfigurasi SNMP Anda di Linux, Anda seharusnya dapat menguji konektivitas dengan snmptable sebagai berikut:

snmptable -v2c -c writeCommunity 192.168.1.1 ccCopyTable
CISCO-CONFIG-COPY-MIB::ccCopyTable: No entries

Anda biasanya perlu membuat pra-file pada server TFTP agar router dapat menyalinnya.

Untuk memicu salinan TFTP, Anda harus memasukkan baris ke dalam ccCopyTable.

snmpset memungkinkan Anda untuk melakukan ini.

# snmpset -v2c -c writeCommunity 192.168.1.1 \
> ccCopyProtocol.23 i tftp \
> ccCopySourceFileType.23 i runningConfig \
> ccCopyDestFileType.23 i networkFile \
> ccCopyServerAddress.23 a 192.168.1.100 \
> ccCopyFileName.23 s router.conf

CISCO-CONFIG-COPY-MIB::ccCopyProtocol.23 = INTEGER: tftp(1)
CISCO-CONFIG-COPY-MIB::ccCopySourceFileType.23 = INTEGER: runningConfig(4)
CISCO-CONFIG-COPY-MIB::ccCopyDestFileType.23 = INTEGER: networkFile(1)
CISCO-CONFIG-COPY-MIB::ccCopyServerAddress.23 = IpAddress: 192.168.1.100
CISCO-CONFIG-COPY-MIB::ccCopyFileName.23 = STRING: router.conf

Setelah Anda selesai melakukannya, Anda harus dapat menjalankan kembali perintah pertama, dan melihat perintah salin di ccCopyTable.

snmptable -v 2c -c writeCommunity 192.168.1.1 ccCopyTable

SNMP table: CISCO-CONFIG-COPY-MIB::ccCopyTable

 index Protocol SourceFileType DestFileType ServerAddress    FileName UserName
    23     tftp  runningConfig  networkFile     192.168.1.100 router.conf        ?

SNMP table CISCO-CONFIG-COPY-MIB::ccCopyTable, part 2

 index UserPassword NotificationOnCompletion State TimeStarted TimeCompleted
    23            ?                    false     ?           ?             ?

SNMP table CISCO-CONFIG-COPY-MIB::ccCopyTable, part 3

 index FailCause EntryRowStatus ServerAddressType ServerAddressRev1
    23         ?              ?              ipv4       "192.168.1.100"

Tidak ada yang akan terjadi sampai Anda mengatur kolom lain pada ccCopyTable untuk mengaktifkan baris.

 snmpset  -v2c -c writeCommunity 192.168.1.1 \
> ccCopyEntryRowStatus.23 i active

Jika Anda memeriksa ccCopyTable lagi, Anda akan melihat bahwa Status dan TimeStarted telah diperbarui untuk mencerminkan bahwa file telah disalin.

Ada lebih banyak detail di tautan sumber di bawah ini, termasuk cara mengosongkan ccCopyTable (jika Anda mau).

Saya telah menggunakan metode yang sama dalam sebuah skrip dari server Linux untuk memicu salinan TFTP, kemudian mengkomit file ke git, dan mendorongnya kembali ke repositori, semuanya dalam satu proses cepat.

Sumber: http://www.ciscozine.com/2013/08/22/how-to-save-configurations-using-snmp/

dan http://bodgitandscarper.co.uk/networks/using-snmp-to-trigger-cisco-tftp-backups/

Tom O'Connor
sumber
2
Ini adalah cara saya telah melakukannya selama bertahun-tahun, menggunakan Pancho, sampai saya baru saja beralih ke RANCID untuk mendapatkan lebih banyak dukungan perangkat. RANCID sangat disarankan, murni karena Anda mendapatkan kontrol versi juga - gunakan 'svn menyalahkan' untuk mengetahui kapan antarmuka itu berubah dari dupleks penuh ke otomatis, atau membuktikan bahwa tidak ada yang berubah selama x bulan.
AnotherHowie
Bisakah RANCID memeriksa Git daripada SVN?
Tom O'Connor
Saya kira tidak. CVS adalah default. SVN adalah sebuah opsi. Karena ini adalah situasi kontrol versi versi hanya-tulis, cabang-tunggal, pengguna-tunggal (RANCID), tidak ada manfaat khusus untuk menggunakan sesuatu yang lain. RANCID 3 sedang dikerjakan sekarang, jadi mungkin saja mereka memperbarui bagian itu. Ini adalah perangkat lunak yang relatif kuno - perl, ekspektasi dan shell.
AnotherHowie
Baru diperiksa dan RANCID 3 tidak menyebutkan opsi VC baru, di sini: gossamer-threads.com/lists/rancid/users/6555#6555
AnotherHowie
2

Anda bisa menggunakan EEM

Contoh:

event manager applet dumpconfig
 event timer {absolute time time-value | countdown time time-value | cron cron-entry cron-entry | watchdog time time-value} [name timer-name]
 action 1.0 cli command "enable"
 action 2.0 cli show running-config | redirect tftp://10.10.10.10/configs/testswitch.txt
 action 998.0 cli command "end"
 action 999.0 cli command "exit"
pyatka
sumber
Hanya di NX-OS, saya curiga ...
Tom O'Connor
1
@ Tom, saya tidak punya nexus (sayangnya ;-)), di iOS itu didukung ... Saya kira EEM didukung oleh semua router dan kebanyakan dari semua switch: misalnya, saya hanya punya satu model, yang tidak mendukung EEM - 2950, ​​tetapi dalam 2960-an, 3560, 3750 (E dan bukan E), 4500, 4948, 6500 didukung.
pyatka
2

Anda dapat menggunakan RANCID untuk melakukan ini.

Anda mendapatkan beberapa hal bagus lainnya seperti kontrol versi konfigurasi, perbedaan email dan hal-hal baik lainnya (secara default dibutuhkan inventaris perangkat keras sehingga jika perangkat keras berubah Anda mendapat peringatan tentang itu).

Ia bekerja dengan setiap switch dan router yang saya gunakan sejauh ini (Cisco / Juniper / Dell) yang merupakan nilai tambah lainnya.

shthead
sumber
1

Anda dapat menggunakan skrip perl, seperti ini . Pemakaian:perl cisco_backup.pl "my-enable-password"

cisco
sumber
1
Kiriman khusus tautan terbatas kegunaannya. Bisakah Anda menambahkan bagian yang relevan dari solusi ini ke jawaban Anda?
Ryan Foley
Jangan pernah memasukkan kata sandi ke baris perintah jika memungkinkan. Gunakan lingkungan sebagai gantinya.
Cougar
0

fetchconfig adalah alat lain untuk ini:

fetchconfig adalah skrip Perl untuk mengambil konfigurasi beberapa perangkat. Ini telah diuji di Linux dan Windows, dan saat ini mendukung berbagai perangkat, termasuk Cisco IOS, Cisco Catalyst, Cisco ASA, Cisco PIX, FortiGate Firewalls, ProCurve, Router Ethernet Alcatel (alias Riverstone), Dell PowerConnect Switches, Terayon 3200 / 3500 CMTS, Datacom DmSwitch Switch, HP MSR Router, Mikrotik Routers, Tellabs MSR Routers, Juniper EX Switch JunOS, Paket Oracle Acme, Mediant Kodokode, Cisco IOS XR, NEC Univerge IX.

Everton
sumber