Rafał Rudewicz

31 sierpnia 2020

Inna Sieć Newsletter


10 sposobów na łatwiejszą pracę z cli cisco ios

Routing & Switching | 0 komentarzy

Odkryj 10 niezawodnych sposobów, które sprawią, że praca z wierszem poleceń dla systemu Cisco IOS stanie się szybsza i bardziej efektywna. Dowiedz się, jak wykorzystać skrypty tcl, skróty klawiszowe czy wyrażenia regularne, aby zautomatyzować zadania, przyspieszyć rozwiązywanie problemów i zwiększyć swoją produktywność. Zanurz się w świecie terminala i zapomnij o uciążliwym przewijaniu konfiguracji czy szukaniu odpowiednich poleceń. Czas zakasać rękawy…
10 tricków na lepszą pracę z CLI

i 3 Spis treści

W dzisiejszych czasach większość opcji konfiguracyjnych dostępnych jest z poziomu GUI. Z tego powodu sposób naszej interakcji ze sprzętem oraz systemami cały czas ewoluuje w stronę coraz większego poziomu abstrakcji. Odchodzimy od modelu, w którym administrator definiował jak coś ma działać, do modelu co i z czym ma działać. Jest to oczywiście świetnie skalujące się rozwiązanie, które zmniejsza potrzebne nakłady pracy, niejednokrotnie skracając czas dostarczenia usługi z dni do kilku chwil. Jednak za cenę naszej wygody tracimy w pewnym stopniu wiedze co tak naprawdę dzieje się pod maską. Zawierzamy oprogramowaniu, że robi to co chcemy. Dopóki wszystko działa jak powinno GUI jest ok. Kiedy jednak przychodzi czas na troubleshooting, cóż pora zakasać rękawy i powitać czarne okno terminala jak starego przyjaciela.

Poniżej poznasz moje 10 sposób na szybszą i efektywniejszą pracę z CLI dla systemu Cisco IOS.

Terminal lenght 0

Z pewnością nie raz spotkałeś się z sytuacją gdy wyświetlana konfiguracja nie mieści się na ekranie. Chcąc czy nie chcąc, zmuszony jesteś do miarowego wciskania spacji, do momentu, aż znajdziesz interesujące Cię informacje. Dzieje się tak, ponieważ standardowo urządzenia pracujące pod kontrolą systemu Cisco IOS -nie mylić z Apple iOS- wyświetla tylko 24 linijki. Na szczęście wartość ta może być dowolnie modyfikowana. Stosując więc polecenie terminal lenght 0 całkowicie wyłączamy limitowanie ilości linii tekstu, które mogą pojawić się na ekranie. 

Używaj tcl

Używanie skryptów jest super, każdy o tym wie. Pozwalają na automatyzacje zadań oraz uniknięcie pomyłek. Cisco na większości platform pozwala na korzystanie z powłoki tcl, do której stworzyła własne polecenia. Poniżej prosty skrypt:

foreach address {
1.1.1.1
2.2.2.2
3.3.3.3} { ping $address}

 

W tcl mamy również możliwość przygotowania pliku z alternatywną konfiguracją, którą możemy podmienić w dowolnym momencie

puts [open "flash:nowy_konfig.txt" w+] {
Twoj konfig tutaj
 }

Używaj tabulatora

Wiem, za ten punkt powinienem dostać nagrodę „captain obvious”, ale nadal spotykam osoby, które wpisują całe komendy w wierszu poleceń. Interpreter poleceń IOS po naciśnięcie tabulatora automatycznie dopełnia aktualnie wpisywane polecenie. Warunkiem jest, że istnieje tylko jedna możliwa wersja polecenia do uzyskania z ciągu znaków, które wprowadziliśmy do tej pory.

Używaj skrótów

Switch#sh ip int br
Interface          IP-Address   OK? Method Status    Protocol
GigabitEthernet0/0 192.168.10.1 YES unset  up        up 
GigabitEthernet0/1 192.168.20.1 YES unset  up        up 
GigabitEthernet0/2 192.168.30.1 YES unset  up        up

Kolejny punkt, który dla osób mających już jakieś doświadczenie z pracą z terminalem wydaje się oczywisty. Podobnie jak w przypadku pracy z tabulatorem interpreter poleceń potrafi wykonać każde polecenie, o ile, wprowadzone przez nas skróty wskazują wyłącznie na jedno polecenie.  Użyty w przykładzie skrót sh (-ow) ip int(erfaces) br(ief) wykona się poprawnie. Jednak jeśli „int” skrócimy do „i” to polecenie nie zostanie wykonane, ponieważ skrót in może oznaczać  więcej opcji niż tylko interfaces. 

Używaj znaku „?”

Switch#show ip i? 
igmp interface irdp

Znak zapytania jest swoistym wołaniem o pomoc. Kiedy z niego korzystasz, CLI podpowie Ci wszystkie możliwe do wykorzystania opcje. Jeśli chcesz coś skonfigurować, a nie pamiętasz dokładnej składni polecenia, nic nie stoi na przeszkodzie, aby z użyciem znaku zapytania sprawdzać każdą możliwą opcję po kolei. Zaoszczędzi Ci to mnóstwo czasu, nie musisz już wkuwać na pamięć wszystkich kombinacji poleceń, ani marnować czasu w google na szukaniu odpowiedniej składni.

Używaj „do”

R4(config)#sh ip int br
           ^
% Invalid input detected at '^' marker.
R4(config)#do sh ip int br
Interface                  IP-Address   OK? Method Status             Protocol
GigabitEthernet0/0         10.3.4.4     YES NVRAM  up                    up     
GigabitEthernet0/1         10.1.4.4     YES NVRAM  up                    up     
GigabitEthernet0/2         148.4.8.4    YES NVRAM  up                    up     
Loopback0                  4.4.4.4      YES NVRAM  up                    up 
R4(config)#

Ogromnym minusem Cisco IOS w porównaniu do konkurencyjnych systemów jest brak możliwości wykonania poleceń typu „show” w trybie konfiguracyjnym. Nie jednokrotnie chcemy natychmiast sprawdzić, czy wprowadzone w konfiguracji zmiany przyniosły oczekiwany skutek. Polecenie „do” pozwala na wykonanie polecenia z trybu użytkownika bezpośrednio w trybie konfiguracyjnym.

Używaj „end”

R4(config)#interface gigabitEthernet 0/0
R4(config-if)#end
R4#

Polecenie „end” nie jest może najważniejszą komendą dostępną w systemie IOS, ale potrafi zaoszczędzić sporo czasu, jeśli musimy często z niej korzystać. Co więc robi end? Otóż to polecenie przenosi nas z trybu konfiguracyjnego natychmiast do trybu enable.

Filtruj informacje

Jeśli korzystałeś wcześniej z terminalowego bash-a z pewnością ucieszy Cię możliwość stosowania pipe – pionowej kreski „|” do filtrowania wiadomości. Ta mała kreska sprawia, że wynik wydanego polecenia jest przekazywany do kolejnego, które wyświetli tylko żądanej przez informacje. 

R4#show version | include register
Configuration register is 0x2102

Opcja include, sprawia, że wyświetlą się, tylko te linie gdzie znajduje się szukany ciąg znaków. Jest to bardzo przydatna opcja gdy szukamy konkretnej informacji. W przykładzie interesuje nas, tylko jak jest skonfigurowany register. 

R4#show  ip int br | exclude unassigned   
Interface                  IP-Address   OK? Method Status               Protocol

GigabitEthernet0/0         10.3.4.4     YES NVRAM  up                    up      

GigabitEthernet0/1         10.1.4.4     YES NVRAM  up                    up      

GigabitEthernet0/2         148.4.8.4    YES NVRAM  up                    up      

Loopback0                  4.4.4.4      YES NVRAM  up                    up

Drugą opcją jest exclude, która jest przeciwieństwem include, czyli otrzymamy wszystkie linie poza tymi, które zawierają wykluczony ciąg znaków.

Stosuj wyrażenia regularne

Wyrażenia regularne to sposób na opisanie pewnego wzorca. Dzięki ich zastosowaniu jesteśmy  w jeszcze bardziej precyzyjny sposób określić jakich informacji szukamy. Stosując takie wyrażenia, możemy uzyskać za pomocą jednego polecenia informacje, które normalnie wymagałby kilku instrukcji.

SW2#show  interfaces status | in 0/[1-2]

Gi0/1                        connected    1            auto   auto unknown

Gi0/2                        connected    trunk        auto   auto unknown

Dzięki stosowaniu nawiasów kwadratowych możemy określić zakres liczb, który ma zostać dopasowany do wzorca.

SW2#show  interfaces status | in Gi./2
Gi0/1                        connected    1            auto   auto unknown
Gi0/2                        connected    trunk        auto   auto unknown

W tym przypadku otrzymamy status wszystkich portów kończących się liczbą 2. Znak _ oznacza spacje, tak więc do dopasowania pasuje tylko liczba 2, wykluczając uzyskanie danych z portów kończących się na liczbach z zakresu 20-29. Dodatkowo kropka przy Gi oznacza dopasowanie pojedynczego znaku.

SW2#show run | i ip route.* 192.168.10.1
ip route 192.168.1.0 255.255.255.0 192.168.10.1

W poprzednim przypadku kropka oznacza dopasowanie pojedynczego znaku. Jeśli do kropki dodamy gwiazdkę, uzyskamy dopasowanie dowolnego ciągu znaków. Dzięki tak skonstruowanemu poleceniu możemy wyszukać wszystkie statycznie skonfigurowane trasy.

SW2#show run | i ^(no_)*ip dhcp snooping
ip dhcp snooping vlan 1-10,12-299,301-398,400-434,436-603,607-679,683-4094
no ip dhcp snooping information option
no ip dhcp snooping verify mac-address
ip dhcp snooping

W tym przykładzie interesuje nam wyłącznie globalna konfiguracja dhcp snooping, bez konfiguracji interfejsów. Dlatego używamy ^ co oznacza, że linia musi się zaczynać od szukanego wzorca. W naszym przypadku stosujemy (no_) co oznacza, że linia może się zaczynać od negacji – słówko „no” razem ze spacją. * mówi nam, że poprzednio użyty fragment może wystąpić 0 lub więcej razy.
Poniżej lista dostępnych modyfikatorów:_ – spacja^ – początek$ – koniec. – pojedynczy znak* – 0 lub więcej znaków+ – Musi wystąpić pojedynczy znak lub wzorzec? – Może wystąpić 0 lub 1 znak lub wzorzec

Stosuj skróty klawiszowe

Skróty klawiszowe przydają się nie tylko w pracy z edytorami tekstu. Pomagają i znacznie ułatwiają pracę bez korzystania z myszki, dzięki czemu możemy pisać praktycznie bez odrywania rąk od klawiatury. Poniżej przykłady najpopularniejszych skrótów klawiszowych dla Cisco IOS.

  • Ctrl+T: Zamienia pozycjami dwa ostatnie znaki w linii.
  • Ctrl+K: Usuwa wszystko od kursora do końca linii
  • Ctrl+X: Usuwa wszystko od kursora do początku linii
  • Ctrl+C: Wychodzi z trybu konfiguracji
  • Ctrl+W: Usuwa dane słowo
  • Ctrl+U: Usuwa całą linijkę
  • Ctrl+Shift+6+X: Przerywa obecne zadanie

Podsumowanie

Właśnie poznałeś moje 10 sposób na szybszą i efektywniejszą pracę ze sprzętem Cisco. Z pewnością nie są to wszystkie tricki, możliwe do zastosowania.

Jestem ogromnie ciekawy, z jakich tricków Ty korzystasz? Zostaw swoje najlepsze sposoby na pracę z CLI w komentarzu.

Rafał Rudewicz

Rafał Rudewicz

Specjalizuję się w rozwiązaniach Enterprise oraz Service Provider. Projektuję, wdrażam oraz naprawiam sieci dla największych firm na świecie.

0 komentarzy

Wyślij komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *