![通过 SSH 远程运行一次性交互式程序](https://linux22.com/image/801489/%E9%80%9A%E8%BF%87%20SSH%20%E8%BF%9C%E7%A8%8B%E8%BF%90%E8%A1%8C%E4%B8%80%E6%AC%A1%E6%80%A7%E4%BA%A4%E4%BA%92%E5%BC%8F%E7%A8%8B%E5%BA%8F.png)
我有一系列生产服务器,我希望能够在这些服务器上运行某些实用程序,而不必通过 SSH 进入机器。
不幸的是,其中一些程序(我迄今为止尝试过的 top 和 iotop)需要设置 curses 和/或 TERM 环境变量,并且通过 SSH 从 shell 执行不起作用:
$ ssh myserver top
TERM environment variable not set.
$ ssh myserver iotop
Traceback (most recent call last):
File "/usr/sbin/iotop", line 16, in <module>
main()
File "/usr/lib/python2.7/dist-packages/iotop/ui.py", line 571, in main
main_loop()
File "/usr/lib/python2.7/dist-packages/iotop/ui.py", line 561, in <lambda>
main_loop = lambda: run_iotop(options)
File "/usr/lib/python2.7/dist-packages/iotop/ui.py", line 465, in run_iotop
return curses.wrapper(run_iotop_window, options)
File "/usr/lib/python2.7/curses/wrapper.py", line 22, in wrapper
stdscr = curses.initscr()
File "/usr/lib/python2.7/curses/__init__.py", line 33, in initscr
fd=_sys.__stdout__.fileno())
_curses.error: setupterm: could not find terminal
有什么建议吗?这可能吗?
答案1
您说您想在没有 ssh 的情况下运行它们,但您却通过 ssh 连接。这毫无意义 :)
我假设您想通过 ssh 运行实用程序而不启动 shell。这是可能的,即使 ssh 不启动 shell,也只需让它为您分配 PTY:
ssh -t myserver top
答案2
对于“顶部”,您可以使用“批处理模式” - 许多工具也有此功能:
ssh myhost top -bn1