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?

franziskus
sumber
status keluar: unix.stackexchange.com/questions/66581/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

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.

Dijeda sampai pemberitahuan lebih lanjut.
sumber
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"
Amala
sumber
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'
Mike
sumber