【问题标题】:running a program through ssh fails with "Error opening terminal: unknown."通过 ssh 运行程序失败并显示“打开终端错误:未知”。
【发布时间】:2015-08-08 19:00:54
【问题描述】:

当我尝试通过 ssh 执行一个简单的命令时,它是成功的。例如

#] ssh servername "echo abcd"
abcd
#] 

但是,当我尝试以下命令时,它失败了:

#] ssh servername  ~/htopmem.sh
Error opening terminal: unknown.
#] 

htopmem.sh 的内容在下面。 (灵感来自 Marwan Alsabbagh 在htop output to human readable file 上的回答)

#!/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”命令起作用的任何想法?

谢谢!

【问题讨论】:

  • htop 想要一个终端。你检查过手册吗?可能有一个开关......

标签: linux bash parsing ssh pipe


【解决方案1】:

像这样的普通ssh 命令没有tty(终端)。使用-t 选项强制ssh 在终端进入时打开终端。

来自manual

-t

强制伪 tty 分配。这可以用来在远程机器上执行任意基于屏幕的程序,可以是 非常有用,例如,在实现菜单服务时。多个-t options 强制 tty 分配,即使 ssh 没有本地 tty。

所以这会工作(更好):

ssh -t servername  ~/htopmem.sh

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-22
    • 2021-08-20
    • 2013-04-20
    • 2023-02-06
    • 2013-10-07
    • 2017-02-07
    • 2017-12-07
    • 1970-01-01
    相关资源
    最近更新 更多