Apagar el sistema
El Problema :
Hace poco mi amigo DanielX, me comento que estaba con un problemilla que no le daba solución en su proyecto de TerminalLinux. El tema era el siguiente:
Cuando esta en una máquina remota, y le decia apagar el sistema … el condenado comando apagaba la maquina principal. Obviamente esto representaba un gran lio. Imaginemos una aula con 30 PCs conectadas a un servidor de aplicaciones. Ahora alguien se le ocurre salir a comer y quiere apagar su maquina… y juaz !!! de repente tienes a una treintena de usuarios compresiblemente molestos porque se apagaron sus maquinas junto con todo el trabajo de la mañana.
La Solucion:
Bueno, la solución a esto parte de un comando bastante simple de linux: Los Alias.
Que son los alias ? Pues los alias son como sinonimos de comandos en linux. Por ejemplo, en mi sistema a mi me aburre mucho tener que tipear sudo aptitude search <paquete> para buscar algun paquete para mi sistema. Entonces defino un alias de esta manera: alias search=’sudo aptitude search ‘
Y listo, ahora cada vez que quiera buscar algun paquete en mi repositorio, lo unico que tengo q hacer es search <paquete>.
La solución para el problema inicial, tambien pasa por ahi. Definimos un alias llamado halt asi
alias halt = ‘/usr/local/halt’
Para que esto funcione ese alias debe estar siempre disponible, entonces agregamos esa linea a nuesto ~/.bashrc
Ese nuevo halt ( /usr/local/halt ) es un script raquitico en python.
#!/usr/bin/python## halt remoto
##
## Autor: NeCuDeCo
##from commands import getoutput
import reaux = getoutput("echo $DISPLAY")
res = re.search("([a-z0-9A-Z\.]*).*",aux)
pc = res.group(1)if pc == "": # Entonces es la maquina local
/sbin/halt
else: # es una maquina remota
print "apagamos la maquina remota"
print getoutput("ssh apagar@"+pc)
Con este script el sistema reconoce si se esta ejecutando desde el servidor principal o desde una maquina remota.
Ahora lo unico que faltaria seria crear un usuario apagar en la(s) maquina(s) remota(s) con los permisos adecuados y en lugar de un shell darle a ejecutar /sbin/halt
Nota: Espero q te sirva mi idea daniel, y suerte en el coneis !!! (Y)
Hay muchas formas de dar solución al problema, lo más lógico sería que nadie excepto el root pueda hacer reboot/halt. Para ello basta con trabajar con los permisos de los respectivos binarios.
Por otro lado, si quieres que un alias este disponible para todos los usuarios puedes usar /etc/profile o /etc/bashrc o el equivalente para la distribucion que esten usando.
saludos
Comment by Slayer_X — July 21, 2006 @ 6:05 am
Debe haber configurado mal LTSP, de hecho esas opciones no están (ni deberian) disponibles para las estaciones remotas.
Comment by Rudy — July 22, 2006 @ 8:02 am