Ваш выше массивов и:
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
Значение опции -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"
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.
В этом видео рассказывается, как шаг за шагом устранять ошибку. Если вы не хотите смотреть, то следуйте тексту ниже:
Ошибка No protocol specified указывает на то, что "пользователь не знает, как запустить GUI-приложение" и "у пользователя нет разрешений на запуск GUI-приложения". В видеоизображении GUI-приложение имеет вид dbca
.
Ключевая часть этого видеоролика состоит в выполнении команды xhost +
, которая предоставляет пользователю права на удаленное отображение графического интерфейса с удаленной системы, на локальную систему.
Я столкнулся с той же проблемой, я решил ее, изменив переменную окружения DISPLAY с:
export DISPLAY=:0.0
на
export DISPLAY=:10