Muszę podpiąć się do wyjścia aktualnie działającego terminala (tty1) z terminala wirtualnego i przechwycić go (działający serwer X).
terminal
tty
terminal-emulator
pruzinat
źródło
źródło
screen
lubtmux
przed uruchomieniem polecenia, do którego dostęp można uzyskać z innego terminala .Odpowiedzi:
Natknąłem się na to jedno narzędzie o nazwie
ttylog
. Jest to program Perl dostępny w CPAN tutaj . Ma kilka ostrzeżeń, jednym z nich jest to, że mogłem tylko wymyślić, jak podłączyć do terminala, który został stworzony jako część kogoś, kto wpada do mojego pudełka. Z drugiej strony musisz uruchomić go z podwyższonymi uprawnieniami (tj. Root lub sudo).Ale to działa!
Na przykład
Najpierw ssh do twojego pudełka w TERMINIE 1:
Zwróć uwagę na tty tego nowego terminala:
Teraz w innym terminalu (TERM # 2) uruchom następującą komendę:
Teraz wróć do TERMINU 1 i napisz coś, pojawi się w TERMINIE 2.
Wszystkie polecenia, których próbowałem (top, ls itp.) Działały bez żadnych incydentów
ttylog
.źródło
gdb
była pierwsza opcja, z którą się zetknąłem. W przeszłości korzystałem z niej sam, ale dla mnie jest to hacking. Cieszę się, że to pomogło!Rzeczywiście jest. Urządzenia / dev / vcs * i / dev / vcsa * odpowiadają urządzeniom / dev / tty * (wirtualnym terminalom). F1 = tty1 = vcs1 / vcsa1 i tak dalej. Vcs / vcsa jest jak tty dla „bieżącego” terminala wirtualnego.
Jako root możesz po prostu przechwycić te urządzenia (np. Cat / dev / vcs2) i zobaczyć, co jest na odpowiednim VT (np. / Dev / tty2 on na F2), na przykład zrobić migawkę. vcsa * różni się od vcs * tym, że zawierają informacje o wymiarach terminala (ekranu). Pamiętaj, że jest to tylko migawka postaci wyświetlanych na ekranie - zebranych z pamięci przydzielonej do terminala - więc nie oczekuj ładnego, łatwego do przeanalizowania wyniku.
Wadą jest to, że jeśli informacje migają zbyt szybko, może to być trudne do uchwycenia. Być może tail -f / dev / vcs1 zadziała, jeśli musisz wykonać kilka screenów (sam nie próbowałem)? Najłatwiej jest po prostu przekierować go najpierw do pliku. Dobrym pomysłem może być również użycie VT (F1-F6), aby na niego spojrzeć, ponieważ zaciski będą miały takie same wymiary. Z mojego doświadczenia wynika, że najlepiej używać urządzeń vcs * - nie vcsa * -.
Jeśli to nie zadziała, być może jeden z pakietów „big Brotherish”, który pozwala administratorowi obserwować aktywność na terminalu, może działać.
PS: Zapomniałem zapytać, jakiego systemu operacyjnego używasz. Dotyczy to Linuksa, chociaż podobne urządzenia prawdopodobnie istnieją również w innych systemach operacyjnych. Spróbuj wyszukać „wirtualną pamięć konsoli” wśród stron podręcznika dla urządzeń.
źródło
wlan0
, faktycznie mam sytuację catch-22, która próbuje debugować, gdzie ten skrypt nie działa. Załóżmy, że nie mogę użyć koncentratora USB ... Czy jest jakiś sposób na przeniesienie znaków do / dev / tty1?/dev/tty1
roota, ale wszystko to wyświetla znaki na ekranie, nie wpisując ichpatrzeć na:
na przykład:
źródło
screen
nie powiodła się. To działa.Użyj
tty
polecenia w każdym terminalu, aby je zidentyfikować:Zakładając te TTY, aby przekierować stdout pierwszego na drugi, uruchom to w pierwszym terminalu:
Aby przywrócić domyślne zachowanie standardowego punktu pts / 0:
Obejrzyj ten film, aby zobaczyć demonstrację.
źródło
To działało dla mnie:
Używając klawiatury na komputerze „A” (tj. Fizycznym komputerze, który ma być kontrolowany), uruchom:
screen -q
Połącz się
ssh
z komputerem „B” do komputera „A”.W sesji ssh wpisz:,
screen -ls
aby uzyskać identyfikator sesji, z którym chcesz się połączyć (4 cyfry w wierszu zawierającym tty ).Połącz się z powyższą sesją za pomocą:
screen -x <session id>
... używając numeru identyfikacyjnego sesji otrzymanego zscreen -ls
powyższego polecenia.Wszystko wpisane w jednej z „sesji” będzie miało miejsce w obu „sesjach”, więc na przykład pisanie
screen -d
spowoduje wyjście z OBU sesji.źródło
Innym podejściem jest użycie
screen
narzędzia gnu na komputerze lokalnym. Wywołaj go z-L
opcją lub zacznij bez tej opcji i użyj^aH
sekwencji poleceń. Każde z tych podejść powoduje, że wszystkie dane wejściowe i wyjściowe są rejestrowane w pliku o nazwie,screenlog.x
gdzie x to numer ekranowy.Jest to przydatne, ponieważ na komputerze zdalnym nie trzeba instalować żadnych dodatkowych elementów.
źródło
Ponieważ nie uruchomiłem tty1 z ekranem, ten skrypt pomógł:
Użyłem odpowiedzi Baarda Kopperuda powyżej. „128” to 1 linia mojego tty1. Uśpienie można ustawić na odpowiednią liczbę.
Użyłem tego w terminatorze i tak dopasowałem kolumnę, aby przewiń był jednym wierszem tekstu.
źródło
Otwórz dwa terminale. Wpisz
tty
każdy, a dostaniesz jego identyfikator jako/dev/pts/nº
Następnie w pierwszym wpisujesz,
script -f /dev/pts/nºofSecondTerminal
a w drugim robisz odwrotnie,script -f /dev/pts/nºofFirstTerminal
aby się połączyćGratulacje! Oba terminale wysyłają i odbierają te same rzeczy. Potrzebujesz trzeciej? Studiowałeś kombinacje? Będziesz potrzebował 6
script -f
poleceń. Jeszcze więcej tty? Wkrótce...źródło