Эта команда выполняет удаленно на "имя машины" команду "glxgears" на новом терминале xterm:

xterm -hold -e sshpass -p <password> ssh -X -o StrictHostKeyChecking=no <user name>@<machine name> glxgears

Что я хотел бы сделать, это запустить другие удаленные команды ssh на "имя машины", которые будут запускаться с того же xterm (тот, в котором уже запущен glxgears).

Это представляется возможным, так как работает следующее:

если я наберу

w

Я вижу эту строку:

<username>  pts/37   :0               12:41    3:30   0.00s  0.00s sshpass -p zzzzzzzzzz ssh -X -o StrictHostKeyChecking=no <user name>@<machine name> glxgears

а также

echo "test" > /dev/pts/37

выводит "test" в xterm, в котором запущен "glxgear"

Но:

xterm -hold -e sshpass -p <passwd> ssh -X -o StrictHostKeyChecking=no <username>@<machine name> echo "test" > /dev/pts/37

выведите "test" в новом xterm.

Я полагаю, что команда 'echo "test"> /dev /pts /37' выполняется на "имя машины", а не "echo" test "", которая выполняется на "имя машины" и перенаправляется в /pts /37 на клиентском компьютере. ,

Какой будет правильный синтаксис?

1 ответ1

3

Вся команда, подлежащая удаленному выполнению, включая перенаправление, должна быть заключена в кавычки, чтобы предотвратить использование оператора перенаправления локальной оболочкой:

ssh -X -o StrictHostKeyChecking=no <username>@<machine name> "echo 'test' > /dev/pts/37"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .