2016-06-01 14 views
1

Недавно я создал новую машину FreeBSD и не могу подключиться через Emacs Tramp. Он остается застрявшим в окне «Tramp: Found remote shell» на странице «broken.example.com». (имена хостов изменены для анонимности)Emacs Tramp застрял в «Найденном приглашении командной оболочки» во время извлечения файла

Я поднял отладку до 10, как я уже сказал, и она застревает в этой команде.

stty icanon erase ^H cols 32767 

Он непрерывно выполняет эту команду в цикле. Полный журнал можно скачать по адресу http://depht.com/temp/emacs-tramp-broken.example.com.txt

'stty -a' from broken.example.com.

speed 9600 baud; 65 rows; 32767 columns; 
lflags: icanon isig iexten echo echoe -echok echoke -echonl echoctl 
    -echoprt -altwerase -noflsh -tostop -flusho -pendin -nokerninfo 
    -extproc 
iflags: -istrip icrnl -inlcr -igncr ixon -ixoff ixany imaxbel -ignbrk 
    brkint -inpck -ignpar -parmrk 
oflags: opost onlcr -ocrnl tab0 -onocr -onlret 
cflags: cread cs8 -parenb -parodd hupcl -clocal -cstopb -crtscts -dsrflow 
    -dtrflow -mdmbuf 
cchars: discard = ^O; dsusp = ^@; eof = ^D; eol = <undef>; 
    eol2 = <undef>; erase = ^H; erase2 = ^T; intr = ^C; kill = ^U; 
    lnext = ^V; min = 1; quit = ^\; reprint = ^R; start = ^Q; 
    status = ^T; stop = ^S; susp = ^Z; time = 0; werase = ^W; 

У меня есть немного старше машина OpenBSD, что это тот же самый клиент Emacs Tramp хорошо работает с, working.example.com. Журнал подключения к этой машине на http://depht.com/temp/emacs-tramp-working.example.com.txt

«Запущенная -a» от working.example.com

speed 9600 baud; 65 rows; 166 columns; 
lflags: icanon isig iexten echo echoe -echok echoke -echonl echoctl 
     -echoprt -altwerase -noflsh -tostop -flusho pendin -nokerninfo 
     -extproc -xcase 
iflags: -istrip icrnl -inlcr -igncr -iuclc ixon -ixoff ixany imaxbel 
     -ignbrk brkint -inpck -ignpar -parmrk 
oflags: opost onlcr -ocrnl -onocr -onlret -olcuc oxtabs -onoeot 
cflags: cread cs8 -parenb -parodd hupcl -clocal -cstopb -crtscts -mdmbuf 
cchars: discard = ^O; dsusp = ^@; eof = ^D; eol = <undef>; 
     eol2 = <undef>; erase = ^H; intr = ^C; kill = ^U; lnext = ^V; 
     min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ^T; 
     stop = ^S; susp = ^Z; time = 0; werase = ^W; 

Я перепутались с настройками Запущенная на broken.example.com, чтобы имитировать те работы .example.com, но без успеха. Я не совсем понимаю все настройки stty. Возможный аспект атаки - это «stty pendin», о котором говорит man-страница stty, относящаяся к icanon. Однако, я не могу установить -pendin на broken.example.com. «stty -pendin» выполняется через скрипт входа или после входа в систему вручную не приводит к установке «-pendin».

На данный момент я полностью потерян, и любая помощь будет очень оценена. Заранее спасибо!!

ответ

2

Чтение ваших файлов трассировки, есть несколько проблем.

  1. вы получите сообщение

    ControlPath "/var/folders/y8/zyh_szbx38s64w6_3_6nlhtm0000gp/T/[email protected]:1345.RPyknjfNbHeeMjoQ" too long for Unix domain socket 
    

, скорее всего, ваша локальная машина работает OS X, и вы в ловушке ошибки http://debbugs.gnu.org/cgi/bugreport.cgi?bug=19702. Это решено уже в Emacs 24.5 (вы должны запустить 24.4), и Tramp, похоже, не мешает этому.

  1. Tramp отправляет команду stty icanon erase ^H cols 32767 удаленно. Сама команда не является проблемой, но ваш удаленный хост возвращает escape-последовательности, которые Tramp не понимает. Какая оболочка запускается удаленно, когда Tramp называет /bin/sh? Как бы то ни было, вы должны отключить любое причудливое оформление из этой оболочки, например, настройки подсказки или очистка экрана или что-то еще. См. Руководство Tramp для предложений, как это сделать. Временно отключите оценку ~/.profile или любую другую оболочку, прочитанную во время иналинизации.