Last Updated:

Programowanko💾-Połączenie terminalowe z innym komputerem

 

Do łączenia się użytkownika ze zdalnym komputerem służą komendy telnet i rlogin. Można również wykorzystać program kermit. Mimo iż najczęściej jest on wykorzystywany do połączeń terminalowych z wykorzystaniem modemu w najnowszych wersjach można z powodzeniem wykorzystywać go do uzyskiwania połączeń z wykorzystaniem sieci.

Funkcja zdalnego terminala umożliwia lokalnemu użytkownikowi (po połączeniu się ze zdalnym komputerem) na wydawanie komend interpretowanych przez zdalny system operacyjny i uruchamianie aplikacji. Bardzo ważną sprawą jest właściwe poinformowanie komputera, z którym się łączymy, jakie funkcje pozwala realizować używany terminal. Pozwoli to zdalnym aplikacjom w odpowiedni sposób pozycjonować kursor i właściwie interpretować naciskane przez nas klawisze.

Cechą specyficzną programów telnet i rlogin w systemie UNIX jest to, że nie emulują one (na ogół) żadnego typu terminala. Służą one jedynie do możliwie ,,przeźroczystego'' transportu znaków między komputerem zdalnym i lokalnym. Oznacza to tyle, że jeżeli pracujemy na komputerze lokalnym z terminala określonego typu, łącząc się z innym komputerem ciągle będziemy pracować z terminala tego samego typu. Cały problem polega jedynie na poinformowaniu zdalnego komputera o typie terminala z którego pracujemy. Protokól połączenia przekazuje podstawowe informacje o typie terminala. Problem może polegać na tym, że taki typ nie jest rozpoznawany przez zdalny komputer albo na tym, że jest źle ustawiony na komputerze lokalnym.

Co robić w takim przypadku?

Niestety nie ma no to pytanie łatwej i jednoznacznej odpowiedzi. Musimy posiadać pewną minimalną wiedzę na temat:

  • jak inaczej możemy nazwać typ terminala z którego pracujemy (na przykład łącząc sie z komputera mikro-vax jest bardzo prawdopodobne, że uzgodni on z komputerem zdalnym terminal typu dec-vt100, co nie zostanie najprawdopodobniej zrozumiane; możemy terminal przedefiniować na vt100; podobnie, pracując z komputera HP z terminala hpterm - niezbyt często rozumianego przez inne komputery - zastępujemy go terminalem typu hp).
  • jakie typy terminala rozpoznaje komputer, z którym się łączymy (można wylistować kartotekę /usr/lib/terminfo wraz z podkartotekami - na przykład komendą ls -R /usr/lib/terminfo | more).

Warto również w zbiorze .profile (jeżeli korzystamy z ksh lub sh i pochodnych) zdalnego komputera umieścić linię o takiej lub podobnej treści

eval `tset -m :\?${TERM:-vt100} -r -s -Q`

Dla csh może wyglądać tak ?

set noglob
eval `tset -s -Q -m '?vt100'`

Komenda ta odczytuje ze zmiennej środowiska typ terminala uzgodniony podczas nawiązywania połączenia; jeżeli zmienna środowiska jest pusta podstawia za nią terminal typu ,,vt100'' (można tu wstawić typ bardziej nam odpowiadający), a następnie odpytuje użytkownika czy wartość jest właściwa:

TERM = (vt100)

na koniec, wreszcie, ustawia odpowiedni typ terminala w środowisku i inicjalizuje go.

Po połączeniu - możemy sprawdzić wartość zmiennej środowiska TERM za pomocą komendy env lub wydając polecenie:

echo $TERM

a następnie próbować zmienić jej wartość (gdy jest niewłaściwa) za pomocą komend:
TERM=value; export TERM - gdy używamy sh lub ksh
setenv TERM value - gdy pracujemy z csh.

Kolejny problem, który może sprawiać problemy ustalenie zestawu znaków używanych do:

  • kasowania poprzedniego znaku,
  • przerwania wykonywania procesu,
  • zawieszenia procesu.

Do sprawdzenia i zmiany wartości tych parametrów w systemie UNIX służy komenda stty.  Odpowiednie ustawienia możemy sprawdzić wydając komendę: stty -a, a żądane wartości ustawiać w pliku .profile  lub .login  albo wydawać z linii komendy.

Najczęściej spotykane ustawienia parametrów: kasowanie poprzedniego znaku (erase): Ctrl-H lub Del; przerwanie procesu (): Del albo Ctrl-C; zawieszenie wykonania zadania (susp): Ctrl-Z.

Można zdefiniować jeszcze (jeżeli nie zostało to zrobione) znak służący do kasowania słowa (werase): Ctrl-W i całej linii (kill): Ctrl-U.

Odpowiedni zestaw znaków należy wybrać w zależności od przyzwyczajeń użytkownika i możliwości terminala, z którego nawiązuje połączenie.

Oto przykładowe ustawienie parametrów (wygodne podczas pracy z terminala hpterm):

export TERM=hp
stty erase \^H intr \^C

W dawnych czasach (gdy pracowano na terminalach typu teletype - dalekopis) znakami używanymi do kasowania znaku poprzedniego był: #, a znakiem używanym do kasowania całej linii: @. Niestety, te czasy nie odeszły w przeszłość tak zupełnie: znaki te są używane przez system HP-UX jako znaki standardowe i zmieniane komendą stty. W szczególności obowiązują one w trakcie procedury podawania nazwy użytkownika i hasła (z wszelkimi tego konsekwencjami).

Bruno

Bruno

<p>Cześć mam na imię Bruno! Urodziłem się w 2012 roku i od piątego roku życia zajmuję się elektroniką. Mam nadzieję, że podobają się tobie moje wpisy tworzone przeze mnie. Mimo, iż mam 13 lat, to to dopiero początek tworzenia tej przepięknej społeczności Życzę miłego dnia Bruno Sobala</p>