2010-07-30 4 views
4

Я хотел бы взять некоторые данные для входа для сценария, написанного для использования многими пользователями. В python я устанавливаю input_raw для чтения из dev/tty, но он терпит неудачу, когда я подключаюсь к скрипту, выполняемому на сервере через ssh.включение tty в сеансе ssh

Мысли? Обходные?

Я бы предпочел избегать жестких кодировок в сценарии.

Прошу вас, спасибо.

ответ

5

Попробуйте использовать опцию -t для SSH:

 
    -t  Force pseudo-tty allocation. This can be used to execute arbi- 
      trary screen-based programs on a remote machine, which can be 
      very useful, e.g. when implementing menu services. Multiple -t 
      options force tty allocation, even if ssh has no local tty. 

Там, кажется, не быть эквивалентным вариантом в ~/.ssh/config, так что вам нужно будет создать скрипт. Простым одно:

#!/bin/sh 

ssh -t "$*" 

Сохранить как ssh-t или что-то, chmod +x ssh-t, и поставить его где-то в вашем PATH. Затем установите GIT_SSH=ssh-t, чтобы сообщить Git использовать этот скрипт.

+0

Возможно, это сработало бы, но я начинаю это ssh-соединение через git push. Есть ли способ ввести параметр -t? – myusuf3

+0

@garbagecollector: переменная среды [GIT_SSH] (http://www.kernel.org/pub/software/scm/git/docs/) сообщает Git, какую команду использовать для ssh. Как объясняется на этой странице, для передачи параметров в ssh вы можете обернуть его в другой скрипт оболочки или использовать '~/.ssh/config' (я бы рекомендовал последнее). –

+0

@garbagecollector: Согласно [SSH - Как включить команду «-t» в файле ~/.ssh/config] (http://serverfault.com/questions/56086/ssh-how-to-include-t- command-in-the-ssh-config-file), похоже, нет эквивалентной опции конфигурации для -t. Вместо этого я создаю сценарий оболочки (см. Отредактированный ответ). –