Przekieruj standardowe wyjście przez ssh

17

Chciałbym uciec

something > file

na zdalnym systemie przez ssh, ale jeśli uruchomię

ssh host something > file

przekierowanie jest wykonywane lokalnie jako ssh etc > file

Próbowałem go 'lub ''lub ddlub z rurą |zamiast, ale nie mogę zmusić go do pracy. Jak można to zrobić?

franziskus
źródło
status wyjścia: unix.stackexchange.com/questions/66581/...
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Odpowiedzi:

11

Próbować:

ssh host 'something > file'

Oto wymyślona demonstracja sposobu obsługi przekierowań, potoków i cytatów:

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

Potok i przekierowanie są unikane, a nie zawarte w ogólnym zewnętrznym zestawie cytatów, zmniejszając potrzebę ucieczki o jeden poziom cytatów. Pojedyncze cudzysłowy dla polecenia AWK są chronione podwójnymi cudzysłowami, które je otaczają. Nazwa pliku może być chroniona w ten sam sposób, ale tutaj pokazuję, jak pojedyncze cudzysłowy chronią podwójne cudzysłowy i znak ucieczki.

Wstrzymano do odwołania.
źródło
dzięki - działa!
franziskus
2
Ponieważ ssh przekazuje tę część wiersza poleceń do powłoki, nie potrzebujesz tej sh -cczęści.
Jander
Co zrobić, jeśli masz już podwójne cudzysłowy i pojedyncze cudzysłowy? Jeśli nie jest to zbyt daleko od tematu, jestem pewien, że inni chcieliby wiedzieć, jak ...
labirynt
1
@labyrinth: Dodałem przykład, aby dać ci kilka pomysłów. Zauważ, że lokalna powłoka zużywa najbardziej zewnętrzne zestawy cytatów, a zdalna powłoka zużywa następny poziom. Innymi słowy, na przykład AWK nie widzi w swoich argumentach żadnych cudzysłowów, ale $1jest chroniony przed powłoką jako zmienną powłoki. Ale nie byłoby tak, gdyby kolejność cytatów była odwrotna.
Wstrzymano do odwołania.
10

Jeszcze prostsze, zamiast:

ssh host something > file

robić:

ssh host "something > file"
Amala
źródło
powinna to być zaakceptowana odpowiedź, ponieważ nadeszła wcześniej niż druga.
phil294
Tak, zaakceptowana odpowiedź w 2010 roku nie była tak dobra. Został zmieniony w 2014 r. Prawdopodobnie w celu dopasowania do tej odpowiedzi. unix.stackexchange.com/revisions/1631/1
Amala
3

Sugerowane rozwiązanie działa również z rurami

ssh host 'some_command | some_other_command'
Mikrofon
źródło