У меня есть команда на сервере, который я редактирую с частотой. У меня есть два сделать это в два этапа: ssh к серверу и vim файл. Я хотел бы сделать это за один шаг, чтобы я мог использовать alias в своей локальной оболочке. Если я

ssh myserver vim /path/to/file

я получил

Vim: Warning: Output is not to a terminal
Vim: Warning: Input is not from a terminal

Потому что ssh ожидает просто запустить команду и вернуть результат. Но мне нужно, чтобы ssh открыл соединение, остался там, выполнил команду и подождал.

Это возможно, без необходимости что-либо делать на сервере?

2 ответа2

3
ssh -t myserver vim /path/to/file

-t
Принудительное псевдо-терминальное размещение. Это может использоваться для выполнения произвольных программ на экране на удаленной машине, что может быть очень полезно, например, при реализации сервисов меню. Несколько опций -t принудительно распределяют tty, даже если ssh не имеет локального tty.

(источник)

0

Здесь много вещей. Я предполагаю, что редактирование должно быть ручным редактированием, то есть без команд ed или sed . 1. Убедитесь, что на вашем локальном компьютере настроен xhost, чтобы разрешить отображение с другого узла.
xhost + просто для проверки, если вы не уверены.
2. используйте ssh -X myserver vim /path/to/file 3. вам может потребоваться указать параметр -n или -t в команде ssh.
4. у вас установлен gvim ? Он может создать окно X11.
5. Возможно, вам придется выполнить команду окна терминала и заставить ее выполнить vim.

Я делал такие вещи несколько раз. У меня многое зависит от вашей версии ОС.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .