Archive for the ‘IOS’ Category

IOS tipy a triky

17 januára, 2011

V tomto príspevku by som rád ukázal zopár trikov v IOS, ktoré sa vám môžu zísť. Pôjde o príkazy do, alias, vloženie otáznika do textu, filtrovanie výpisu a zresetovanie konfigurácie.

Príkaz do

Ak si chceme zobraziť napríklad smerovaciu tabuľku, alebo hocaký iný príkaz z kategórie exec príkazov, no nie sme v privilegovanom režime, neostáva nám nič iné, ako napísať príkaz end, alebo stlačiť príslušnú klávesovú skratku. Ak však nechceme odísť z príslušného režimu, môžeme si pomôcť príkazom do. Ak si teda chceme zobraziť smerovaciu tabuľku a konfigurujeme, čo ja viem, protokol RIP, tak napíšeme nasledovné:

Router(config-router)#do show ip route

Problém je, že akonáhle napíšeme príkaz do, otáznik ani tabulátor nám nie a nie pomôcť. Musíme teda príkaz napísať správne aj bez ich pomoci. Príkazy sa dajú písať aj skratkovito, napr. „do sh ip ro“. Tento príkaz nie je v starších verziách IOS.

Príkaz alias

show ip interface brief. Dlhý príkaz, skúsme si to skrátiť: sh ip int brie. Stále veľa na môj vkus. Tak si nahraďme celý tento príkaz nejakým aliasom. Alias vytvorí pre definovaný príkaz nový názov, ktorý bude IOS poznať a budeme ho môcť použiť. Syntax je nasledovná:

Router(config)#alias <režim alebo skupina príkazov> <alias> <príkaz>

Keďže show príkazy sú z kategórie exec príkazov a celý ten show príkaz chcem nahradiť aliasom „s“, tak použijem:

Router(config)#alias exec s sh ip int brie

Ako vidíte, <príkaz> som si mohol skrátiť a nevypisovať celý názov, keďže to je jedno-jednoznačný názov. Teraz môžem začať používať môj nový príkaz „s“.

Router#s
Interface                  IP-Address      OK? Method Status                Protocol
FastEthernet0/0            unassigned      YES unset  administratively down down
FastEthernet0/1            unassigned      YES unset  administratively down down

A schválne si pozrime, čo nám zobrazí otáznik:

Router#s?
*s="sh ip int brie"  sdlc     send  set
setup                show     slip  snasw
spec-file            squeeze  ssh   start-chat
systat

Pribudol mi nový príkaz *s=”sh ip int brie”. Tento príkaz môžeme použiť z hocijakého režimu príkazom: „do s“.

Mimochodom, IOS má v sebe už niekoľko preddefinovaných aliasov a to:

  • p – ping
  • h – help
  • lo – logout
  • u alebo un – undebug
  • w – where

Vloženie znaku „?“

Funkcia otáznička je nám jasná, no čo ak chcem vložiť otáznik priamo do textu? Nech už to je akýkoľvek popisok (description, banner…) alebo aj konfiguračný príkaz (destination-pattern 1..[.]?[.]?), tak použijem buď klávesovú skratku [Ctrl+V] a za tým napíšem otáznik, alebo stlačím klávesy [ESC+Q] naraz alebo po sebe. Po stlačení kláves sa nič nestane, akurát, že keď stlačím teraz „?“, tak sa mi otáznik naozaj objaví v texte. Takže MOTD banner môžem napísať takto:

Router(config)#banner motd %Co tu hladas[Ctrl+V]?%

A ako banner sa nám bude zobrazovať:

Co tu hladas?

Filtrovanie výpisu

Niekedy sú výpisy až príliš dlhé a my hľadáme len jeden konkrétny riadok, alebo výpisy s nejakou spoločnou vlastnosťou. Ak nemáte chuť lúskať celý výpis, tak si ho môžete odfiltrovať. Filtrovať sa dá prakticky čokoľvek, stačí, že je povolená pajpa (lomená čiara „|“) za príkazom. Napríklad si chcem nechať vyfiltrovať moje priamo pripojené interfejsy v stave down. Použijem príkaz:

Router#show ip interface brief | i down

Za pajpou dávame kľúčové slovo, ktoré definuje typ filtrovania. Kľúčových slov je viac, no ukážem len základné a to:

  • begin – Zobraz výpis od prvého riadku, ktorý matchuje, až do konca výpisu
  • exclude – Odstráň všetky riadky ktoré matchujú
  • include – Zobraz len tie riadky, ktoré matchujú
  • section – Zobraz len sekciu (súvislý blok) výpisu, ktorej prvý riadok matchuje
  • format – Zobraz výstup vo formáte XML

a za kľúčovým slovom dáme výraz, ktorý sa má matchnúť. Ja som použil include, ale skrátil som si to na „i“.

Ak si chcem pozrieť zo show run výpis interfejsu F0/0, musím zadať nasledovné:

Router#show run | b FastEthernet0/0

Žiadne skratky a ešte je to aj case sensitive! Samozrejme, tento výpis mi zobrazí show run počnúc riadkom interface FastEthernet0/0 do konca. S použitím príkazu section to bude vyzerať nasledovne:

Router#show run | s FastEthernet0/0
interface FastEthernet0/0
 no ip address
 shutdown
 duplex half
 !

Treba si len dávať pozor pri zadávaní výrazu na filtrovanie, lebo sa zadáva v tvare regulárneho výrazu. Podívajme sa na nasledovný výpis:

Router#show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
 D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
 N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
 E1 - OSPF external type 1, E2 - OSPF external type 2
 i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
 ia - IS-IS inter area, * - candidate default, U - per-user static route
 o - ODR, P - periodic downloaded static route, + - replicated route

Gateway of last resort is not set

      192.168.0.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.0.0/24 is directly connected, FastEthernet0/0
L        192.168.0.1/32 is directly connected, FastEthernet0/0

Nakonfiguroval som len interfejs F0/0, ale mám nový IOS a ten zobrazuje okrem priamo pripojenej cesty (C) aj IP adresu samotného interfejsu ako /32 (L). Ak zadám ako filter:

Router#show ip route | i 0.0
      192.168.0.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.0.0/24 is directly connected, FastEthernet0/0
L        192.168.0.1/32 is directly connected, FastEthernet0/0

tak mi vypísalo aj L riadok. Prečo? Veď tam nie je nikde výraz „0.0“. Akurát, že v regulárnych výrazoch bodka reprezentuje (skoro) hocaký znak. Čiže mi tu matchuje nielen „0.0“ ako časť adresy siete, ale aj „0/0“ na konci riadku. Bodka musí byť escapnutá spätným lomítkom „\“. Teraz už bude výpis vyzerať takto:

Router#show ip route | i 0\.0
      192.168.0.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.0.0/24 is directly connected, FastEthernet0/0

Defaultná konfigurácia

Už ste asi niečo podobné zažili. Konfigurovali ste interfejs a keď ste mali konfig hotový, tak ste zistili, že to bol nesprávny interfejs. Aj tu je ľahká pomoc ako vrátiť veci do pôvodného stavu. Interfejs a prakticky čokoľvek iné, môžeme zresetovať do defaultného stavu príkazom default. Keďže ale konfiguráciu mám hotovú a správnu, tak pôjdem na to inteligentne. Najskôr si zobrazím, čo som nakonfiguroval:

Router#show run | s interface FastEthernet0/0
 interface FastEthernet0/0
 description TEXT
 ip address 192.168.0.1 255.255.255.0
 speed 100
 full-duplex
 !

Skopírujem si tento výpis, napr. do notepadu. Teraz zresetujem interfejs F0/0 do defaultného stavu príkazom:

Router(config)#default interface f0/0

Krátko na to uvidím ďalšie riadky výpisu:

Building configuration...

Interface FastEthernet0/0 set to default configuration

No a teraz sa posuniem do správneho interfejsu a len nakopírujem konfig z notepadu.

A teraz si už len pamätať tieto triky a používať ich 🙂

Filip Burda

Skryté príkazy IOS

5 januára, 2011

„A keď si dáte otáznik, tak sa vám zobrazia všetky commandy, ktoré môžete vyťukať.“ Nehovoril vám toto váš inštruktor náhodou? Ak áno, tak klamal 🙂 IOS má aj takzvané skryté príkazy, tie po zadaní otáznička nevidíte, ani nie sú doplnené tabulátorom, ale sú tam. Sedia v útrobách IOS a čakajú. Sú to väčšinou príkazy, ktoré sú v štádiu testovania a niekedy v budúcej verzii budú zverejnené, alebo sú to príkazy, ktoré by mali ostať schované pred zvedavými očami, alebo sú to tak trocha deštrukčné príkazy. Tak poďme ničiť routre.

Prvý skrytý príkaz, čo mi udrel do okuliarov, je test crash. Príkaz má otestovať správanie sa routra po padnutí tým, že ho zhodí. Najskôr treba zadať príkaz:

Router# test crash

Vybehne nám hláška, ktorá nás upozorňuje, že router crashne. Treba ťuknúť klávesu „C“ (musí to byť veľké C), enter a následne si môžeme vybrať pád. Router by sa mal sám reštartnúť a ak nie, tak mu treba dopomôcť. Príkaz je však užitočný pri testovaní správania sa pri rôznych chybách IOS.

Ďalší zaujímavý príkaz sa používa v IP telefónii. Príkaz

Router# csim start <number>

emuluje telefónny hovor. Príkaz je vhodný, ak nemáte fyzický prístup k telefónom, alebo ste až moc leniví sa poprechádzať. Pokiaľ vytáčame existujúce číslo, spojenie sa naozaj uskutoční a telefón zvoní. Príkaz je jeden zo základných testovacích príkazov pri testovaní spojenia.

Desiatky ďalších skrytých príkazov možno nájsť napríklad aj na tejto stránke http://www.elemental.net/~lf/undoc/
Mnohé z týchto príkazov dnes už nájdete ako štandardné príkazy IOS. Väčšina príkazov je však z kategórie show a debug. Spomeniem ešte jeden veľmi zaujímavý príkaz a to:

Router# test transmit

Pozrite si ho a eventuálne si ho skúste na cviku. Vygeneruje paket na želanie a otestuje tak spojenie.

Teraz tak rozmýšľam, neotvoril som Pandorinu skrinku? Už to vidím ako nám budete na najbližšom stretku zhadzovať routre. O niektorých ozaj deštrukčných príkazoch som však radšej pomlčal…

Filip Burda


%d blogerom sa páči toto: