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.