Display zevnitr firewallu ven -- neinteraktivne

Vaclav Stepan w na linux.fjfi.cvut.cz
Čtvrtek Říjen 13 16:44:32 CEST 2005


Dobes Jiri napsal(a):
> Dobry den,
>... 
> ------job:
> ssh -f -L6012:J:6000 J sleep 20
> export DISPLAY=:12.0
> xterm
> ------/job
> 
> kde sleep 20 je aby ssh cekalo 20 sekund, jestlize nezacne tunelovani, 
> tak se ukonci, jinak se ssh ukonci az po skonceni tunelu. Cekal bych, se 
> mi po spusteni jobu objevi na obrazovce [treba pred tim na J jeste dam: 
> xhost +] xterm s veselym promptem C>. Bohuzel tomu tak neni, hazi to 
> hlasky typu "xterm Xt error: Can't open display: :12.0" Nevite nekdo proc???

To byl docela mily problem :-)

Takhle by to uz fungovat melo (teda aspon me to funguje):
ssh -f -L6012:localhost:6000 J sleep 20
DISPLAY=localhost:12 xterm

Proc:
Ten localhost v prvnim radku tam je proto, ze pak Vam staci udelat
"xhost +localhost" a ne "xhost +" nebo "xhost +J".

Ten localhost v druhem radku je dulezity. Totiz (viz man X) pokud
nevyplnite hostname cast DISPLAY, pouzije se "the most efficient
local transport". Takze se pouzije socket - TCP/IP neni "local transport".

Asi by melo cenu si osetrit, ze ten port bude volny,
takze treba neco jako:

#!/bin/bash
KAM=$@
P=6000
while ( netstat -nvat | awk '{print $4;}' | grep $P )
do
  let P++
done
echo Using port: $P
ssh -f -L$P:localhost:6000 ${KAM} sleep 20
let P=P-6000
DISPLAY=localhost:$P xterm

Pokud nepotrebujete display pro X ale jen terminal - pak by
tez slo pustit na nodu clusteru screen v detached rezimu
a teprve pak, az budete mit cas a chut, se na nej pripojite zvenci.

Pekny den

Vaclav Stepan


Další informace o konferenci Linux