Ogonuj wiele zdalnych plików

41

Czy istnieje sposób na zdalne pliki tail 2?

Mam dwa serwery (a i b) za modułem równoważenia obciążenia i jeśli to możliwe, chciałbym zrobić coś takiego:

tail -f admin@serverA:~/mylogs/log admin@serverB:~/mylogs/log

Dzięki!

Pablo Fernandez
źródło
Dlaczego skasowałeś odpowiedź?
Pablo Fernandez
głównie dlatego, że to nie działało :-)
mat
@mat Oh właśnie chciałem spróbować :). W każdym razie dzięki!
Pablo Fernandez
To nie działa, ponieważ <(foo) konstrukt będzie czekać na polecenia wewnętrznego do końca przed zastąpione przez rury w oryginalnej linii komend, z którego oprogramowanie będzie w stanie odczytać, a ogon nigdy nie skończy :-)
mat

Odpowiedzi:

31

To działało dla mnie:

ssh -n user@hostname1 'tail -f /mylogs/log' &
ssh -n user@hostname2 'tail -f /mylogs/log' &
einstiien
źródło
Tak, tak to robię, tyle że zwykle mam otwartych wiele terminali gnomów, z których każda ma jedną sesję
Tom O'Connor
1
Czy można to zrobić bez otwierania wielu niezależnych sesji ssh?
tgies
8
Ale to nie pozwala ci zatrzymać ogonowania Ctrl+C.
sorin
@sorin, aby zakończyć procesy, po prostu przenieś każdy z nich na pierwszy plan fg; możesz to ctrl+czrobić. Zrobiłbyś to raz dla każdego uruchomionego ogona. Lub możesz pkill -f sshskierować wszystkie z nich jednocześnie.
Dale Anderson
34

Moją preferowaną opcją jest skorzystanie z multitail. Prowadziłbym coś takiego:

multitail -l 'ssh user@host1 "tail -f /some/log/file"' -l 'ssh user@host2 "tail -f /some/log/file"'
żyr
źródło
1
Dzięki! Szukałem przykładu, jak korzystać z multitail przez ssh / na zdalnych hostach!
Noah Sussman,
Multitail jest znacznie bardziej niezawodnym rozwiązaniem.
obfk
nasza strona ma ponad 10 węzłów internetowych, a multitail kończy się niepowodzeniem przy pierwszej próbie z błędem Operation not permitted, z 2 3 węzłami internetowymi, jest w porządku
Hieu Vo
Dostaję też Operation not permittedjakieś wskazówki?
Erik Aigner,
7

Możesz użyć tkaniny do ogonienia kilku hostów (a także wyników grep, jeśli to konieczne):

$ fab -P -u 'USER' -p 'PASSWORD' --linewise -H host1,host2,host3 -- tail -f /path/to/my/log.log | grep ERROR
jbochi
źródło
6

Myślałem, że może być również możliwe użycie:

ssh -f user@hostname1 "tail -f /var/log/file" > /tmp/somefile &
ssh -f user@hostname2 "tail -f /var/log/file" > /tmp/somefile &

Opcja -f po ssh pozwala wprowadzić hasło, zanim uruchomi się w tle. Następnie możesz uzyskać wyniki linia po linii w jednym pliku i uruchomić:

tail -f /tmp/somefile

Dałoby ci to nieco większą kontrolę nad bieżącym poleceniem „ogon”, na wypadek gdybyś chciał użyć innych opcji ogona do wyświetlania wyników.

bjcullinan
źródło
5

Spójrz na multitail . Podobnie jak w powyższych przykładach, możesz podać to jako polecenie dla ssh, a wtedy skończy się na jednym ekranie wyświetlającym (i buforującym dla łatwego przewijania) wiele dzienników. Robi również kolorowanie, co jest bardzo przydatne w wykrywaniu anomalii.

Marcin
źródło
2

Równoległe ssh ma na to fajne rozwiązanie:

pssh -t0 -H 'host-01 host-02 host-03 host-04' -P tail -f /var/log/app.log
  • -t0 wyłącza limit czasu połączenia, w przeciwnym razie pssh zamknie połączenie
  • -H '<host>...' to lista hostów do uruchomienia polecenia
  • -P jest włączenie drukowania standardowego dla każdego hosta
  • tail -f /var/log/app.log może być dowolną komendą, którą może uruchomić twoja zdalna powłoka
Augusto Hack
źródło
1

To dziwne rozwiązanie, ale działa !:

Ekran 1

ssh user@hostname1 "tail -f /var/log/file" > /dev/pts/6

Ekran 2

ssh user@hostname2 "tail -f /var/log/file" > /dev/pts/6

źródło
to zadziała, wypisując wiersze na terminalu / dev / pts / 6 (aby znaleźć własny terminal: wykonaj: who am i i pokaże ci to.)
Olivier Dulac
1

Możesz sprawdzić dbitail.

Stworzyłem narzędzie Java, które potrafi czytać lokalne i odległe pliki dziennika za pomocą SSH. Jest dość prosty w użyciu.

Kilka dodatkowych wyjaśnień: https://github.com/pschweitz/DBITail/wiki

Po prostu pobierz wersję odpowiadającą Twojemu systemowi operacyjnemu, natywnego wydania jar do wykonania w środowisku Java Runtime (wymaga java 8_40 lub wyższej):

https://github.com/pschweitz/DBITail/releases

Możesz znaleźć pełną dokumentację (osadzoną również na stronie I Githuba)

Philippe

Philippe Schweitzer
źródło
0

lub możesz użyć ekranu, aby utworzyć dwa terminale, a następnie podzielić je.

SSH do pierwszego hosta, dla którego chcesz ogonić plik dziennika, a przed uruchomieniem ogona przejdź do ekranu.

Następnie ogon plik na tym hoście.

CTRL + A, c utworzy nowy ekran lub okno. Z tego nowego okna ssh do 2. hosta i ogon tam plik.

Teraz, aby utworzyć podzielony ekran

CTRL + A, SHIFT + S, spowoduje to utworzenie podzielonego ekranu z bieżącą powłoką w górnej części i dolnej części pustej. Aby przejść do dolnej części i umieścić w niej pierwszy ekran,

CTRL + A, TAB, przeniesie Cię do dolnej części. Teraz przenieś swoją pierwszą sesję SSH w ten obszar:

CTRL + A ”(symbol cytatu) i wybierz pierwszą sesję i naciśnij Enter.

Zdaję sobie sprawę, że może to wyglądać na dużo gimnastyki i tak jest, ale przyzwyczajasz się, gdy użyjesz jej kilka razy.

Oto naprawdę dobry samouczek lub szybkie odniesienie do poleceń ekranu: http://www.pixelbeat.org/lkdb/screen.html

Dodatkowo możesz utworzyć plik .screenrc, aby większość tego, co opisałem, mogła zostać zautomatyzowana przy pierwszym wejściu do ekranu.

Kolejną miłą rzeczą jest to, że możesz po prostu zamknąć sesję i wznowić ją w innym miejscu. Na przykład jesteś w pracy i trwa monitorowanie. Możesz po prostu zamknąć sesję bez wylogowywania się i wznowić po powrocie do domu lub w inne miejsce.

Kilogram
źródło
0

Możesz Tail pliki zdalnie za pomocą bash i rsync, używam go i jest to świetny skrypt bash spójrz na następujący samouczek

Pliki ogona zdalnie przy użyciu bash i rsync

użytkownik1381775
źródło
Link nie działa
czerasz