Ошибка 'Никакой протокол, указанный' при выполнении от удаленной машины через ssh

Ваш выше массивов и:

url="http://server/api/duplicateobject.htm?id=2928&name=NEWSERVER&host=NEWHOSTNAME&targetid=3120"
for ((i=0; i < ${#newserver[@]}; i++));
do
   echo $url | sed 's/NEWSERVER/'${newserver[i]}'/;s/NEWHOSTNAME/'${newhostname[i]}'/'
done

приводит к:

http://server/api/duplicateobject.htm?id=2928&name=box001&host=box001.domain.com&targetid=3120
http://server/api/duplicateobject.htm?id=2928&name=box002&host=box002.domain.com&targetid=3120
http://server/api/duplicateobject.htm?id=2928&name=box003&host=box003.domain.com&targetid=3120
http://server/api/duplicateobject.htm?id=2928&name=box004&host=box004.domain.com&targetid=3120
http://server/api/duplicateobject.htm?id=2928&name=box005&host=box005.domain.com&targetid=3120
10
08.08.2013, 01:44
4 ответа

Значение опции -display 127.0.0.1:0.0 зависит от этого gui программа, но очень вероятно, что это означает “дисплей на X дисплеях 127.0.0.1:0.0”. Это - первое локальное X дисплеев, к которым получают доступ по TCP. Это почти наверняка неправильно по двум причинам. Во-первых, локальное X дисплеев должно быть :0, нет 127.0.0.1:0, потому что включая IP-адрес заставляет трафик проходить TCP вместо локального доступа. Прохождение через TCP не может работать в зависимости от того, принимает ли X-сервер соединения TCP. Даже если это делает, Вы теряете оптимизацию, которую имеют локальные дисплеи.

Дисплей для использования обычно обозначается DISPLAY переменная среды, и что переменная имеет тенденцию быть установленной правильно автоматически. (Обычно, если DISPLAY имеет неправильное значение, это - потому что Вы смешивали с ним. Основным исключением является использование screen или tmux.)

Ваша программа, вероятно, ищет значение DISPLAY переменная среды, потому что это имеет тенденцию происходить автоматически с вызовами xlib. Таким образом, необходимо просто звонить ./gui, Ваш сценарий не делает ничего полезного. Если Ваша программа настаивает -display аргумент, заставьте его использовать переменную среды:

./gui -display "$DISPLAY"
5
27.01.2020, 20:02

ssh -Y и ssh -X хорошее начало, но необходимо ли быть, передавал X-сервер также?

$ grep X /etc/ssh/sshd_config
X11Forwarding yes

иначе это не будет работать.

Другой вещью проверить является переменная ДИСПЛЕЯ, которую она должна показать чему-то вроде этого:

$ echo $DISPLAY
$ localhost:10.0

за этим бежали ssh -Y. Та же переменная пуста если я ssh без -Y или -X.

Для различий между -X и -Y прочитайте страницу справочника ssh.

4
27.01.2020, 20:02

В этом видео рассказывается, как шаг за шагом устранять ошибку. Если вы не хотите смотреть, то следуйте тексту ниже:

Ошибка No protocol specified указывает на то, что "пользователь не знает, как запустить GUI-приложение" и "у пользователя нет разрешений на запуск GUI-приложения". В видеоизображении GUI-приложение имеет вид dbca.

Ключевая часть этого видеоролика состоит в выполнении команды xhost +, которая предоставляет пользователю права на удаленное отображение графического интерфейса с удаленной системы, на локальную систему.

3
27.01.2020, 20:02

Я столкнулся с той же проблемой, я решил ее, изменив переменную окружения DISPLAY с:

export DISPLAY=:0.0

на

export DISPLAY=:10
0
27.01.2020, 20:02

Теги

Похожие вопросы