W zawodzie „sieciowca” często wykorzystujemy port COM (RS-232) do zarządzania różnymi urządzeniami – switch’ami, router’ami, fiewall’ami etc. Co zrobić jeżeli potrzebujemy takiego dostępu zdalnie np. do wynajętego rack’a ? Na rynku jest wielu producentów oferujących swoje rozwiązania np. PERLE, AVOCENT, MOXA. Są to urządzenia wyposażone najczęściej w 16, 32, 48 portów rs-232, zdublowane zasilacze lub dwie karty sieciowe, niestety za które trzeba odpowiednio zapłacić. Jeżeli nie potrzebujemy, aż tylu portów lub innych opcji znajdujących zastosowanie w komercyjnym użyciu, możemy pokusić się o budowę własnego serwera, za pomocą którego uzyskamy dostęp do naszych urządzeń. A więc do dzieła!
Co będzie potrzebne ?
- Komputer klasy PC, wyposażony w odpowiednią ilość złączy PCI oraz USB. Przyda się również obudowa midi tower ATX, tak, aby pomieścić śledzie z portami COM.
- kontroler UNITEK PCI6S – 6x RS232 (COM) lub
- Adapter/Przejściówka USB RS-232 (na popularnym serwisie aukcyjnym od 5zł)
- RJ45 DB9 console cable lub
- Adapter DB9-RJ45 + Rj45 to RJ45 console cable
- Urządzenie za pomocą, którego przeprowadzimy test połączeń.
Platforma testowa
- Hewlett-Packard HP Compaq 8000 Elite
- 2 x kontroler UNITEK PCI6S – 6x RS232 (COM)
- 8 x Adapter/Przejściówka USB RS-232
- 15 x RJ45 DB9 console cable
- 6 x Adapter DB9-RJ45
- 6 x Rj45 to RJ45 console cable
- Switch Cisco Catalyst 2960CG-8TC-L
Powyższa konfiguracja finalnie odda do dyspozycji 21 portów COM ( 1 x wbudowany na płycie, 12 x Unitek, 8x przejściówka USB)
Krok po kroku
- Instalujemy w stacji kontrolery unitek’a oraz podpinamy wszystkie przejściówki USB RS-232.
- Instalujemy dystrybucję systemu Linux, najlepiej taką, która posiada wbudowane sterowniki do kontrolerów Unitek’a np. Linux Mint w wersji jak niżej.
- Następnie trzeba zainstalować paczkę do obsługi portu szeregowego COM ( sudo apt-get install minicom ).
- Wyświetlamy ( dmesg | grep tty ) dostępne w systemie porty COM. W tym miejscu najlepiej zapisać wszystkie ttySXX oraz ttyUSBXX, ponieważ te informacje będą potrzebne do konfiguracji paczki minicom.
- Wchodzimy do konfiguracji minicom’a ( sudo minicom -s )
- Przechodzimy do opcji „Serial port setup” i klikamy Enter
- Zmiana poszczególnych opcji polega na naciśnięciu odpowiedniej literki. Pierwsze co należy zmienić to „Serial Device” na pierwsze urządzenie COM (wcześniej zapisywaliśmy listę wyświetloną przez dmesg). Następnie „E – Bps/Par/Bits” dla urządzeń Cisco oraz Juniper ustawić na 9600 8N1. Po dokonaniu odpowiednich zmian, zatwierdzamy Enterem.
- Jeżeli chcemy zmienić dodatkowe opcje np. kolor tekstu konsoli to można tego dokonać w „Screen and keybord”. Ja zmieniłem opcje „G – Foreground color (term)” na Yellow oraz „K – History Buffer Size” na 5000 (Max). Zmiany zatwierdzamy Enterem.
- Zapisujemy zmiany jako domyślną konfigurację.
- Teraz wchodzimy w opcję „Save setup as” i podajemy nazwę po której będziemy się odwoływać do portu COM. Ja wybrałem trywialną nazwę comX, gdzie X to kolejne numery od 0 wzwyż – w tym kroku com0.
- Wchodzimy ponownie w opcję „Serial port Setup” i zmieniamy „A – Serial Device” na następne urządzenie portu szeregowego, w moim przypadku „/dev/ttyS4”. Zmiany zatwierdzam Enterem.
- Powtarzam krok 10, oczywiście zmieniając nazwę na com1.
- Krok 11 oraz 12 powtarzamy dla wszystkich urządzeń portu szeregowego (ttySXX, USBXX) zmieniając za każdym razem nazwę pliku comX na kolejną liczbę.
- Pliki z konfiguracją parametrów minicom’a zapisywane są w ścieżce „/etc/minicom”
- Po zapisaniu wszystkich plików wychodzimy z konfiguracji minicoma
- Podpinamy kabel konsolowy do naszego testowego urządzenia (najlepiej zacząć od kabla podpiętego do portu COM na płycie głównej, ponieważ najczęściej będzie to urządzenie /dev/ttyS0, czyli nasz profil com0), uruchamiamy terminal (ctrl + t) i wydajemy polecenie „minicom com0„. Niestety jako zwrotkę otrzymamy komunikat „… Permission denied„, ponieważ obecnie zalogowany użytkownik nie jest członkiem systemowej grupy dialout.
- Jeżeli zainstalowaliśmy system z interfejsem użytkownika to przechodzimy do „Menu -> Administration -> Users and Groups”
- Klikamy w miejscu, w którym znajduje się lista grup do których należy użytkownik
- Zaznaczamy grupę „dialout” i klikamy OK. Ponownie powinna zostać wyświetlona formatka użytkownika, ale tym razem na liście grup, do których należy użytkownik będzie również dialout.
- Otwieramy terminal i ponownie próbujemy wydać komendę „minicom com0”, tym razem z pozytywnym skutkiem.
- Niestety kolor czcionki daleki jest od tego, który my ustawiliśmy w opcjach „Screen and keybord”. Musimy powrócić do konsoli nacisnąć kombinację „ctrl + a”, puścić i szybko nacisnąć „x” (w moim przypadku sukces nastąpił za 3 razem) oraz ponownie uruchomić minicoma, tym razem z opcją „-c on”
- Tym razem kolor czcionki powinien być żółty/pomarańczowy.
- Oznaczamy kabel, który mamy podpięty do testowego urządzenia nazwą profilu tj. com0
- Podpinamy kolejny kabel, uruchamiamy po kolei minicom z następnymi profilami com1, com2, com3 etc. W przypadku gdy otrzymamy prompt od urządzenia, profil jest właściwy i należy opisać kabel właściwą nazwą.
- Finał
Tips and Tricks
- Łącząc się po SSH nie mogę rozszerzyć okna, czy jest na to rada ?
Tak, do komendy „minicom -c on comX” należy dodać „TERM=linux„. Całość powinna wyglądać tak „TERM=linux minicom -c on comX„ - Dostaję komunikat „Device /dev/ttySXX is locked.” dlaczego ?
Jeżeli sesja minicom’a zostanie niepoprawnie zamknięta, niestety będzie wisieć w nieskończoność. Jedyna rada w takiej sytuacji to wyświetlenie procesów ” ps aux | grep minicom ” odczytanie nr procesu i jego zabicie ” kill Nr_Procesu „.
- Czy można skrócić uruchamianie minicoma bedąc zalogowanym po ssh np. zamiast „TERM=linux minicom -c on comX” do „comX”
Tak, należy utworzyć puste pliki o nazwach odpowiadającym profilom minicom’a (w moim przypadku musiałem utworzyć dwadzieścia plików o nazwach com0 – com20). W każdym pliku wpisujemy
zmieniając profil minicom zgodny z nazwą pliku i zapisujemy plik. Nadajemy plikom atrybut wykonywalności „chmod -x comX” i przenosimy wszystkie pliki do /usr/local/bin”. Teraz wystarczy tylko wpisać comX i możemy zarządzać odpowiednią konsolą.
Galeria
- Hewlett-Packard HP Compaq 8000 Elite
- Wnętrze obudowy Hewlett-Packard HP Compaq 8000 Elite
- Widok złączy PCI oraz PCI-Express
- Przejściówka USB, widok z bliska
- Przejściówka USB
- Kontrolery Unitek + śledzie z portami COM
- Switch Cisco Catalyst 2960CG-8TC-L oraz adaptery DB9 to RJ45
- Wnętrze obudowy z zainstalowanymi kontrolerami Unitek
- Wnętrze obudowy, widok z boku
- Catalyst C2960CG + HP Compaq 8000 Elite
- Widok z tyłu HP Compaq 8000 Elite wraz z portami COM
- Kabel konsolowy wraz z nazwą profilu minicom
- Podpięte kable konsolowe
- Widok na podpisane kable konsolowe
Życzę miłego labowania !