此命令在新的 xterm 终端上远程在“机器名称”上执行命令“glxgears”:
xterm -hold -e sshpass -p <password> ssh -X -o StrictHostKeyChecking=no <user name>@<machine name> glxgears
我想要做的是在“机器名称”上启动从同一个 xterm(glxgears 已在其中运行的 xterm)运行的其他远程 ssh 命令。
这似乎是可能的,因为以下工作原理:
如果我输入
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
在运行“glxgear”的 xterm 中打印“测试”。
但:
xterm -hold -e sshpass -p <passwd> ssh -X -o StrictHostKeyChecking=no <username>@<machine name> echo "test" > /dev/pts/37
在新的 xterm 中打印“测试”。
我猜测命令“echo "test" > /dev/pts/37”是在“机器名称”上运行的,而不是“echo "test"”在“机器名称”上运行并重定向到客户端机器上的 /pts/37。
正确的语法是什么?
答案1
要远程执行的整个命令(包括重定向)都需要用引号引起来,以防止重定向运算符被本地 shell 使用:
ssh -X -o StrictHostKeyChecking=no <username>@<machine name> "echo 'test' > /dev/pts/37"