Ejecución de aplicaciones de MS windows en linux por la red
Publicado: Mar, 31 Jul 2012, 11:30
Esto debería ir en la Wiki pero no he podido entrar ahí. No sé por que me ha sido difícil.
Normalmente lo que un usuario novato espera en linux es poder ajecutar alguna aplicación MS Windows. Para eso se habla primeramente de Wine y si no le resulta entonces se entera que puede usar VirtualBox u OpenVZ. Cada alternativa tiene sus pros y contras. Aquí les traigo una solución usando la red.
Presuponemos:
1- Una red configurada de al menos dos máquinas o muchas más.
2- Una máquina windows que sirve de servidor de aplicaciones en la cual estarán las aplicaciones que el usuario de linux quisiera correr. pude ser Win XP.
3- Una o varias máquinas linux que actuarán como clientes del servidor de aplicaciones de la máquina windows.
::::::::::::: EN WINDOWS :::::::::::::
En el caso de Windows XP hay que hacerle unos arreglos para que funcione como un server.
Vamos a asumir que la IP de este Windows es 192.168.20.1
Instalar en Windows dos programas:
Termiserv_XPSP2-SP3_i386_2.1.exe (se obtiene de Internet)
Seamlessrdp (se obtiene de Internet)
Hay que instalarle el patch Termiserv_XPSP2-SP3_i386_2.1.exe para activarle el servicio de Terminal Server y pueda manejar más de un usuario a la vez. Esto se hace porque WinXP aunque XP puede tener logueados varios usuarios a la vez usando el cambio de usuario, no puede trabajar con todos las sesiones abiertas a la vez. Solo se ocupa de un usuario y para que otro usuario pueda trabajar en su sesión abierta tiene que hacer nuevamente otro cambio de usuario. Con este patch se elimina esta limitación monousuario y el sistema pasa a ser un server multiusuario atendiendo peticiones de varios usuarios a la vez.
Hay que instalarle Seamlessrdp para lograr una presentación sin costuras en el escritorio linux cuando la aplicación windows se muestra desde la red. PAra esto se copia el la Raíz C: el archivo seamlessrdp.zip bajado de internet y se descomprime ahí mismo quedando así:
C:\seamlessrdp\seamlessrdpshell.exe
En dicho Windows, Se instalan las aplicaciones que se van a compartir por la red. En este caso vamos a ejecutar como ejemplo el Internet Explorer.
Se crean usuarios en windows por cada usuario linux que haya en cada maquina linux. ej.
si pepe es un usuario linux en una maquina linux con contraseña "guagua" entonces hay que crear el usuario pepe, con contraseña "camion" en el WINXP y añadirlo al grupo de usuarios de acceso remoto, es más simple si coinciden las contraseñas pero menos seguro. y así se procede con todos los demás usuarios linux que quieran ejecutar aplicaciones windows.
Se abre el block de notas en Windows y se pone
C:
cd \windows
freecell.exe
logoff
y se guarda en la raiz C: con el nombre iexp.txt
El nombre puede ser cualquiera pero luego se le debe cambiar la extensión por .bat de tal modo que quede iexp.bat y debemos asegurarnos saber donde lo pusimos. Para que sea más fácil lo ponemos en la raíz C: como ya dijimos antes.
C:\cb.bat
::::::::::::: EN LINUX ::::::::::::::
Se crea un lanzador con un ícono en el escritorio Gnome o KDE que apunte hacia la aplicacion en el "servidor" WINXP:
para esto se crea el lanzador y en el campo comando ponemos:
rdesktop -A -s "C:\seamlessrdp\seamlessrdpshell.exe C:\iexp.bat" 192.168.20.1 -u pepe -p camion
Y de esta manera ya se ejecuta Internet Explorer en el escritorio Linux aparentando ser local pero en realidad es en el WINXP donde se está ejecutando.
Por supuesto que esto no es suficiente si queremos ejecutar aplicaciones que tengan que leer y guardar datos. No queremos que dichos datos se guarden en el "server" WIN XP pues, todos los usuarios guardarían allí y eso no es lo que se quiere. Lo apropiado es que cada usuario linux guarde sus datos de manera local. Entonces en cada máquina linux hay que compartir una carpeta con SAMBA y redireccionar la carpeta Mis Documentos del usuario Windows hacia dicha carpeta compartida en la red.
Instalamos Samba:
apt-get install samba
ya en linux existe el usuario pepe pero debemos crear el usuario pepe para SAMBA desde la consola
sudo smbpasswd -a pepe
y le ponemos la contraseña camion que es la contraseña que tiene pepe en el WIN XP
luego abrimos una consola y ponemos
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.original
(esto se hace para guadar una copia del archivo smb.conf )
sudo nano /etc/samba/smbconf
ahí borramos todo lo que hay con CTRL+K e introducimos:
#.................................................
[Global]
workgroup = cualquiera
security = user
domain master = no
preferred master = no
domain logons = no
local master = no
[homes]
path = /home/%U
writeable = yes
browseable = no
available = yes
public = no
create mask = 0775
#.................................................
De esta manera hemos compartido la carpeta home del usuario que se loguee.
:::::DE NUEVO EN WINXP::::::
Entonces nos sentamos nuevamente en el "Servidor" WIN XP hay que entrar como el usuario pepe y dar click derecho en Mis Documentos y en Propiedades donde dice algo así como "C:\Documents and settings\pepe" borrarlo y poner \\192.168.20.2\pepe y dar click en ACEPTAR. Si te pregunta que si queres mover todo el contenido de la carpeta Mis Documentos hacia la nueva locación puedes responder que sí.
Una vez hecho esto tenemos que salir de sesión. Esto hay que aclararlo bien. en el "Servidor" WinXP no debe haber ningun usuario logueado localmente. Solo debe haber usuarios logueados por la red como usuarios remotos. Si el usuario pepe estuviera logueado no sería posible que ejecutara por la red Internet Explorer, en este caso, Ya que en Windows cada usuario puede estar logueado solo una vez y si lo está local no puede entrar de manera remota a la vez. Así que si no les funciona el truco, vayan al WIN XP y dslogueen el usuario. Esto es un error que siempre nos para la primera vez.
:::::::DE NUEVO EN EL LINUX::::::::
Ahora tratamos de dar doble click sobre el icono que creamos y cuando se nos abra internet explorer y visitemos una página y querramos guardarla, escogemos GUARDAR COMO y buscamos la carpeta MIS DOCUMENTOS y guardamos la página ahí , que no es más que nuestra carpeta local de linux de la máquina linux en que estamos sentados ahora.
Si tienen alguna duda escríbanme a luis@inor.sld.cu
Saludos
Normalmente lo que un usuario novato espera en linux es poder ajecutar alguna aplicación MS Windows. Para eso se habla primeramente de Wine y si no le resulta entonces se entera que puede usar VirtualBox u OpenVZ. Cada alternativa tiene sus pros y contras. Aquí les traigo una solución usando la red.
Presuponemos:
1- Una red configurada de al menos dos máquinas o muchas más.
2- Una máquina windows que sirve de servidor de aplicaciones en la cual estarán las aplicaciones que el usuario de linux quisiera correr. pude ser Win XP.
3- Una o varias máquinas linux que actuarán como clientes del servidor de aplicaciones de la máquina windows.
::::::::::::: EN WINDOWS :::::::::::::
En el caso de Windows XP hay que hacerle unos arreglos para que funcione como un server.
Vamos a asumir que la IP de este Windows es 192.168.20.1
Instalar en Windows dos programas:
Termiserv_XPSP2-SP3_i386_2.1.exe (se obtiene de Internet)
Seamlessrdp (se obtiene de Internet)
Hay que instalarle el patch Termiserv_XPSP2-SP3_i386_2.1.exe para activarle el servicio de Terminal Server y pueda manejar más de un usuario a la vez. Esto se hace porque WinXP aunque XP puede tener logueados varios usuarios a la vez usando el cambio de usuario, no puede trabajar con todos las sesiones abiertas a la vez. Solo se ocupa de un usuario y para que otro usuario pueda trabajar en su sesión abierta tiene que hacer nuevamente otro cambio de usuario. Con este patch se elimina esta limitación monousuario y el sistema pasa a ser un server multiusuario atendiendo peticiones de varios usuarios a la vez.
Hay que instalarle Seamlessrdp para lograr una presentación sin costuras en el escritorio linux cuando la aplicación windows se muestra desde la red. PAra esto se copia el la Raíz C: el archivo seamlessrdp.zip bajado de internet y se descomprime ahí mismo quedando así:
C:\seamlessrdp\seamlessrdpshell.exe
En dicho Windows, Se instalan las aplicaciones que se van a compartir por la red. En este caso vamos a ejecutar como ejemplo el Internet Explorer.
Se crean usuarios en windows por cada usuario linux que haya en cada maquina linux. ej.
si pepe es un usuario linux en una maquina linux con contraseña "guagua" entonces hay que crear el usuario pepe, con contraseña "camion" en el WINXP y añadirlo al grupo de usuarios de acceso remoto, es más simple si coinciden las contraseñas pero menos seguro. y así se procede con todos los demás usuarios linux que quieran ejecutar aplicaciones windows.
Se abre el block de notas en Windows y se pone
C:
cd \windows
freecell.exe
logoff
y se guarda en la raiz C: con el nombre iexp.txt
El nombre puede ser cualquiera pero luego se le debe cambiar la extensión por .bat de tal modo que quede iexp.bat y debemos asegurarnos saber donde lo pusimos. Para que sea más fácil lo ponemos en la raíz C: como ya dijimos antes.
C:\cb.bat
::::::::::::: EN LINUX ::::::::::::::
Se crea un lanzador con un ícono en el escritorio Gnome o KDE que apunte hacia la aplicacion en el "servidor" WINXP:
para esto se crea el lanzador y en el campo comando ponemos:
rdesktop -A -s "C:\seamlessrdp\seamlessrdpshell.exe C:\iexp.bat" 192.168.20.1 -u pepe -p camion
Y de esta manera ya se ejecuta Internet Explorer en el escritorio Linux aparentando ser local pero en realidad es en el WINXP donde se está ejecutando.
Por supuesto que esto no es suficiente si queremos ejecutar aplicaciones que tengan que leer y guardar datos. No queremos que dichos datos se guarden en el "server" WIN XP pues, todos los usuarios guardarían allí y eso no es lo que se quiere. Lo apropiado es que cada usuario linux guarde sus datos de manera local. Entonces en cada máquina linux hay que compartir una carpeta con SAMBA y redireccionar la carpeta Mis Documentos del usuario Windows hacia dicha carpeta compartida en la red.
Instalamos Samba:
apt-get install samba
ya en linux existe el usuario pepe pero debemos crear el usuario pepe para SAMBA desde la consola
sudo smbpasswd -a pepe
y le ponemos la contraseña camion que es la contraseña que tiene pepe en el WIN XP
luego abrimos una consola y ponemos
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.original
(esto se hace para guadar una copia del archivo smb.conf )
sudo nano /etc/samba/smbconf
ahí borramos todo lo que hay con CTRL+K e introducimos:
#.................................................
[Global]
workgroup = cualquiera
security = user
domain master = no
preferred master = no
domain logons = no
local master = no
[homes]
path = /home/%U
writeable = yes
browseable = no
available = yes
public = no
create mask = 0775
#.................................................
De esta manera hemos compartido la carpeta home del usuario que se loguee.
:::::DE NUEVO EN WINXP::::::
Entonces nos sentamos nuevamente en el "Servidor" WIN XP hay que entrar como el usuario pepe y dar click derecho en Mis Documentos y en Propiedades donde dice algo así como "C:\Documents and settings\pepe" borrarlo y poner \\192.168.20.2\pepe y dar click en ACEPTAR. Si te pregunta que si queres mover todo el contenido de la carpeta Mis Documentos hacia la nueva locación puedes responder que sí.
Una vez hecho esto tenemos que salir de sesión. Esto hay que aclararlo bien. en el "Servidor" WinXP no debe haber ningun usuario logueado localmente. Solo debe haber usuarios logueados por la red como usuarios remotos. Si el usuario pepe estuviera logueado no sería posible que ejecutara por la red Internet Explorer, en este caso, Ya que en Windows cada usuario puede estar logueado solo una vez y si lo está local no puede entrar de manera remota a la vez. Así que si no les funciona el truco, vayan al WIN XP y dslogueen el usuario. Esto es un error que siempre nos para la primera vez.
:::::::DE NUEVO EN EL LINUX::::::::
Ahora tratamos de dar doble click sobre el icono que creamos y cuando se nos abra internet explorer y visitemos una página y querramos guardarla, escogemos GUARDAR COMO y buscamos la carpeta MIS DOCUMENTOS y guardamos la página ahí , que no es más que nuestra carpeta local de linux de la máquina linux en que estamos sentados ahora.
Si tienen alguna duda escríbanme a luis@inor.sld.cu
Saludos