У меня есть серия производственных серверов, на которых я хотел бы запускать определенные утилиты без подключения к машине 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
Какие-нибудь советы? Это возможно?
Вы говорите, что хотите запустить их без ssh, но подключаетесь по ssh. В этом очень мало смысла :)
Я предполагаю, что вы хотите запускать утилиты по ssh без запуска оболочки. Это возможно, просто заставьте ssh выделить для вас PTY, даже если он не запускает оболочку:
ssh -t myserver top
Для «верха» вы можете использовать «пакетный режим» - у многих инструментов он тоже есть:
ssh myhost top -bn1