Кажется, это работает:
for ((i=1;i<=3;i++)); do
eval echo "$"$(eval echo Var${i}Value)
done
Там где-то шутят, что это ужасно eval
...
is there a way to specify a number for x when doing ssh -X, like 100.
Нет, потому что не только номер должен быть «назначен», но и ssh должен перенаправить X-протокол на соответствующий локальный сокет для этого номера. И нет никакой гарантии, что «номер» будет свободен при подключении по ssh. Вот почему ssh не предоставляет для этого возможности.
Then even if I lost the X connection to the server, I can re-login and still establish a connection to localhost:100.0
Это не сработает, потому что сервер — это X-сервер на вашем локальном компьютере (, с которого вы подключаетесь по ssh ), а клиентские программы работают на удаленная машина. Таким образом, все клиентские программы должны будут повторно -установить соединение (, потому что задействовано состояние ).
Если вам нужен удаленный рабочий стол, к которому можно повторно подключиться, рассмотрите возможность использования чего-то вроде VNC.
Я не знаю способа указать DISPLAY.
В Linux (или, по крайней мере, в Ubuntu )дисплеи — это просто сокеты в /tmp/.X11-unix/
. Например,:/tmp/.X11-unix/X0
отображается как :0
Таким образом, вы можете переместить любой сокет на любой другой путь, и он все равно будет работать. (Я не уверен, верно ли это для ssh -перенаправленных X-соединений, но может быть.)
(Кстати, ssh -Y
может быть более безопасным, чем ssh -X
, но я уже давно не пользовался ни тем, ни другим.)
В любом случае, если сокет закрывается (из-за прекращения соединения SSH ), любые программы, работающие на этом сокете, могут закрыться и выйти.
Если вы хотите запускать постоянные X-программы, попробуйте запустить сервер VNC и подключиться к нему с помощью клиента VNC. Вы можете безопасно туннелировать соединение VNC с помощью SSH. Я делаю это регулярно. Я считаю, что вы можете запустить сервер VNC на «виртуальном» дисплее (, что означает, что вы сможете увидеть этот дисплей, только если подключитесь с клиентом VNC ), но я никогда этого не делал.
ОБНОВЛЕНИЕ
Таким образом, пересылка X11 через SSH, вероятно, включает 3 элемента:
Все три действия можно выполнить вручную. Вы можете вручную перенаправить любой порт, используя -R
. Вы можете вручную установить DISPLAY. Можно (наверное? )каким-то образом отрегулируйте настройки полномочий X -вручную. Обработка прав доступа X -, вероятно, самая сложная, и я не знаю, как это сделать, но подозреваю, что это можно сделать.
Если вы выполните 1, 2 и 3, вы сможете перенаправлять соединения X11, не используя ни -X
, ни -Y
.
Я все еще подозреваю, что большинство X-программ завершат работу, когда их соединение с сервером будет закрыто.
Я по-прежнему считаю, что настройка сервера и клиента VNC даст лучший результат.