Удаленный запуск одноразовых интерактивных программ через SSH

У меня есть ряд производственных серверов, на которых я хотел бы иметь возможность запускать определенные утилиты без необходимости SSH-подключения к машине.

К сожалению, некоторые из этих программ (top и iotop, которые я пробовал до сих пор) требуют установки curses и / или переменной окружения TERM, а выполнение из оболочки через SSH не работает:

$ 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

Какие-нибудь советы? Это возможно?

2 ответа

Решение

Вы говорите, что хотите запустить их без ssh, но вы подключаетесь через ssh. Это имеет очень мало смысла:)

Я предполагаю, что вы хотите запускать утилиты через ssh без запуска оболочки. Это возможно, просто заставьте ssh выделить вам PTY, даже если он не запускает оболочку:

ssh -t myserver top

Для "top" вы можете использовать "пакетный режим" - у многих инструментов это тоже есть:

ssh myhost top -bn1
Другие вопросы по тегам