Tail beberapa file jarak jauh


41

Apakah ada cara untuk mem-remote file 2?

Saya memiliki dua server (a dan b) di belakang load balancer dan saya ingin melakukan sesuatu seperti ini jika memungkinkan:

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

Terima kasih!


Mengapa Anda menghapus jawabannya?
Pablo Fernandez

sebagian besar karena itu tidak berhasil :-)
mat

@ ah Oh saya baru saja mencobanya :). Bagaimanapun, terima kasih!
Pablo Fernandez

itu tidak bekerja karena konstruksi <(foo) akan menunggu perintah bagian dalam selesai sebelum digantikan oleh pipa di baris perintah asli dari mana perangkat lunak akan dapat membaca, dan, ekor tidak akan pernah selesai :-)
mat

Jawaban:


31

Ini bekerja untuk saya:

ssh -n user@hostname1 'tail -f /mylogs/log' &
ssh -n user@hostname2 'tail -f /mylogs/log' &

Yap, begitulah cara saya melakukannya, kecuali saya biasanya memiliki beberapa terminal gnome terbuka, masing-masing dengan satu sesi di dalamnya
Tom O'Connor

1
Apakah ada cara untuk melakukan ini tanpa membuka beberapa sesi ssh independen?
tgies

8
Tetapi ini tidak memungkinkan Anda untuk menghentikan tailing Ctrl+C.
sorin

@sorin untuk menghentikan proses, cukup bawa masing-masing kembali ke latar depan fg; maka kamu bisa ctrl+c. Anda akan melakukannya sekali untuk setiap ekor yang Anda jalankan. Atau Anda dapat pkill -f sshmenargetkan mereka semua secara bersamaan.
Dale Anderson

34

Opsi pilihan saya adalah menggunakan multitail. Saya menjalankan sesuatu seperti:

multitail -l 'ssh user@host1 "tail -f /some/log/file"' -l 'ssh user@host2 "tail -f /some/log/file"'

1
Terima kasih! Saya sedang mencari contoh cara menggunakan multitail over ssh / pada host jarak jauh!
Noah Sussman

Multitail adalah solusi yang jauh lebih kuat.
obfk

situs web kami memiliki lebih dari 10 node web, dan multitail gagal pada percobaan pertama dengan kesalahan Operation not permitted, dengan 2 3 node web, tidak apa
Hieu Vo

Saya juga mendapatkan Operation not permitted, ada petunjuk?
Erik Aigner

7

Anda dapat menggunakan kain untuk mengikuti beberapa host (dan juga hasil grep, jika perlu):

$ fab -P -u 'USER' -p 'PASSWORD' --linewise -H host1,host2,host3 -- tail -f /path/to/my/log.log | grep ERROR

6

Saya berpikir mungkin juga untuk menggunakan:

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

Opsi -f setelah ssh memungkinkan Anda untuk memasukkan kata sandi sebelum berjalan di latar belakang. Maka Anda dapat memiliki hasil baris demi baris dalam satu file dan menjalankan:

tail -f /tmp/somefile

Akan memberi Anda sedikit lebih banyak kontrol atas perintah "tail" saat ini jika Anda ingin menggunakan opsi ekor lainnya untuk menampilkan output.



5

Lihatlah multitail . Sama seperti contoh di atas, Anda dapat memberikannya sebagai perintah untuk ssh, dan kemudian Anda akan berakhir dengan satu layar yang menampilkan (dan buffering untuk scrollback mudah) beberapa log. Itu juga mewarnai, yang sangat berguna untuk melihat anomali.


2

Ssh Paralel memiliki solusi yang bagus untuk ini:

pssh -t0 -H 'host-01 host-02 host-03 host-04' -P tail -f /var/log/app.log
  • -t0 menonaktifkan batas waktu koneksi, jika tidak pssh menutup koneksi
  • -H '<host>...' adalah daftar host untuk menjalankan perintah
  • -P adalah untuk mengaktifkan pencetakan stdout masing-masing host
  • tail -f /var/log/app.log dapat berupa perintah apa pun yang dapat dijalankan shell jarak jauh Anda


1

Hanya solusi aneh, tetapi berhasil !:

Layar 1

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

Layar 2

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

ini akan bekerja, mengeluarkan garis pada terminal / dev / pts / 6 (untuk mengetahui terminal Anda sendiri: jalankan: who am i dan itu akan menunjukkannya kepada Anda.)
Olivier Dulac

1

Anda dapat checkout dbitail.

Alat Java yang saya buat, dapat membaca file log lokal dan jauh menggunakan SSH. Ini cukup mudah digunakan.

Beberapa penjelasan lebih lanjut: https://github.com/pschweitz/DBITail/wiki

Cukup unduh versi yang sesuai dengan sistem operasi Anda, dari rilis jar asli yang dapat dieksekusi dalam Java Runtime Anda (membutuhkan java 8_40 atau lebih tinggi):

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

Anda dapat menemukan dokumentasi yang lengkap (disematkan dengan halaman I dan Github juga)

Philippe


0

atau Anda dapat menggunakan layar untuk membuat dua terminal dan kemudian membaginya.

SSH ke host pertama yang ingin Anda tail file log dan sebelum menjalankan tail, masuk ke layar.

Kemudian tail file pada host ini.

CTRL + A, c akan membuat layar atau jendela baru. Dari jendela baru ini ssh ke host kedua dan ekor file di sana.

Sekarang untuk membuat layar terbagi

CTRL + A, SHIFT + S, ini akan membuat layar terbagi dengan shell saat ini di bagian atas dan bagian bawah kosong. Untuk beralih ke bagian bawah dan meletakkan layar pertama di dalamnya,

CTRL + A, TAB, ini akan memindahkan Anda ke bagian bawah. Sekarang untuk membawa sesi SSH pertama Anda ke area ini:

CTRL + A, "(simbol kutipan) dan pilih sesi pertama dan tekan enter.

Saya menyadari ini mungkin terlihat seperti banyak senam, dan memang begitu, tetapi Anda terbiasa menggunakannya begitu Anda menggunakannya beberapa kali.

Berikut ini adalah tutorial yang sangat bagus atau referensi cepat untuk perintah layar: http://www.pixelbeat.org/lkdb/screen.html

Selain itu, Anda dapat membuat file .screenrc sehingga banyak dari apa yang saya jelaskan dapat diotomatiskan saat pertama kali memasuki layar.

Satu hal yang menyenangkan tentang ini adalah Anda dapat menutup sesi dan melanjutkannya di tempat lain. Misalnya, Anda sedang bekerja dan Anda sedang memantau. Anda bisa menutup sesi Anda tanpa keluar, dan melanjutkan ketika Anda tiba di rumah atau ke lokasi lain.


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.