Redirect stdout lewat ssh


17

Saya ingin berlari

something > file

pada sistem jarak jauh melalui ssh, tetapi jika saya jalankan

ssh host something > file

pengalihan dijalankan secara lokal sebagai ssh etc > file

Saya sudah mencobanya dengan 'atau ''atau dddengan pipa |sebagai gantinya, tetapi saya tidak bisa membuatnya bekerja. Bagaimana ini bisa dilakukan?


Jawaban:


11

Mencoba:

ssh host 'something > file'

Inilah demonstrasi yang dibuat-buat tentang cara menangani pengalihan, pipa, dan kutipan:

ssh host date -d yesterday \| awk "'{print $1}'" \> 'file" "with\ spaces.out'

Pipa dan arahan ulang ini diloloskan dari pada terkandung dalam set keseluruhan kutipan luar, mengurangi kebutuhan untuk keluar dari satu tingkat kutipan. Kutipan tunggal untuk perintah AWK dilindungi oleh tanda kutip ganda yang mengelilinginya. Nama file dapat dilindungi dengan cara yang sama, tetapi di sini saya menunjukkan bagaimana tanda kutip tunggal melindungi tanda kutip ganda dan pelarian.


thanx - itu berhasil!
franziskus

2
Karena ssh meneruskan bagian dari baris perintahnya ke shell, Anda tidak perlu sh -cbagian itu.
Jander

Bagaimana jika Anda sudah memiliki tanda kutip ganda dan tanda kutip tunggal dalam perintah Anda? Jika tidak terlalu jauh dari topik saya yakin orang lain ingin tahu bagaimana ...
labirin

1
@ labrinth: Saya menambahkan contoh untuk memberi Anda beberapa ide. Perhatikan bahwa shell lokal mengkonsumsi kumpulan tanda kutip terluar dan shell jarak jauh mengkonsumsi level berikutnya. Dengan kata lain, misalnya, AWK tidak melihat tanda kutip apa pun dalam argumennya seperti yang ditunjukkan, tetapi $1dilindungi agar tidak dilihat oleh shell sebagai variabel shell. Tapi itu tidak akan terjadi jika urutan kuotasi berlawanan.
Dijeda sampai pemberitahuan lebih lanjut.

10

Lebih sederhana, alih-alih:

ssh host something > file

melakukan:

ssh host "something > file"

ini harus menjadi jawaban yang diterima karena datang lebih awal daripada yang lain.
phil294

Ya jawaban yang diterima pada tahun 2010 tidak begitu baik. Itu diubah pada 2014 mungkin cocok dengan jawaban ini. unix.stackexchange.com/revisions/1631/1
Amala

3

Solusi yang disarankan bekerja dengan pipa juga

ssh host 'some_command | some_other_command'
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.