Próbuję napisać skrypt, który odradza wiele długo działających poleceń zarówno na komputerze zdalnym, jak i lokalnym. Obecnie przykładem mojego rozwiązania byłoby:
#!/bin/bash
ssh -t user@1.2.3.4 tmux new -s remote -d "find / *"
tmux new -s local -d "find / *"
Jednak gdy te polecenia stają się bardziej złożone (długie, łańcuchowe polecenia ze znakami cudzysłowu, zamiast tylko jednego find
polecenia), staje się bałaganem, aby umieścić je w jednym wierszu i uciec od wszystkich zagnieżdżonych znaków cudzysłowu.
Próbowałem użyć SSH z tak zwanym „dokumentem tutaj”, np .:
ssh -t user@1.2.3.4 << EOF
tmux new -s remote -d "find / *"
EOF
tmux new -s local -d "find / *"
Prowadzi to jednak do błędu not a terminal
z opcją -T lub -t dla SSH lub do bardzo dziwnych zachowań podczas korzystania z opcji -tt.
Wszelkie sugestie dotyczące optymalizacji / radykalnej zmiany mojego podejścia?
Odpowiedzi:
Myślę, że powinieneś być w stanie połączyć ten pomysł z innym pomysłem i uzyskać coś takiego:
Bonus - oba polecenia działają równolegle i w tej samej
tmux
sesji.Niektóre problemy dotyczące cytowania i zmiany znaczenia mogą pozostać w zależności od złożoności poleceń, które chcesz wykonać. Zauważ też, że
read -p done
twoje polecenia wykonają się, zakończą, a takżetmux
zakończą się bez zobaczenia wyniku. Być może właśnie to zamierzałeś, a użyciefind
było tylko na przykład.źródło
find
rzeczywiście był tylko przykładem długofalowego polecenia.