当我尝试通过ssh执行一个简单的命令时,它是成功的。例如
#] ssh servername "echo abcd"
abcd
#]
但是,当我尝试以下命令时,它失败了:
#] ssh servername ~/htopmem.sh
Error opening terminal: unknown.
#]
,其中htopmemm .sh的内容如下。(灵感来自Marwan Alsabbagh对htop输出到人类可读文件的回答)
#!/bin/bash
echo q | htop | sed -r "s/x1B[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g" | ~/aha --black --line-fix | grep Mem | grep -E -o "[0-9]+/[0-9]+"
如果我手动ssh到服务器并运行htopmem,则执行成功:
#] ./htopmem.sh
6515/24021
#]
关于如何使"ssh servername ~/htopmem.sh"命令工作的任何想法?
谢谢!
这样的普通ssh
命令没有tty
(终端)。使用-t
选项强制ssh
在进入时打开端子
从手册:
-t
强制伪tty分配。这可以用于在远程机器上执行任意基于屏幕的程序非常有用,例如,在实现菜单服务时。多个
-t
选项强制tty分配,即使SSH没有本地tty。
所以这将工作(更好):
ssh -t servername '~/htopmem.sh'