Bienvenido(a), Visitante. Favor de ingresar o registrarse.

Ingresar con nombre de usuario, contraseña y duración de la sesión

Foros del Club

Páginas: [1]   Ir Abajo
  Enviar tema  |  Imprimir  
Autor Tema: [BASH] Script para controlar servicios - minilancer  (Leído 773 veces)
0 Usuarios y 1 Visitante están viendo este tema.
CID
Administrador
Legend
*****

Prestigio: 22
Desconectado Desconectado

Sexo: Masculino
Estudiante de: Arte de la informática
Título universitario: Programador
Profesión: Desarrollador
Mensajes: 1136



WWW
Lenguajes:
Varios
Bases de datos:
Varios
« en: 14/08/2006, 19:36:15 »

Lo de minilancer es por el programa que estoy haciendo para Windows NT, en fin.
Creamos el siguiente script en /usr/bin/minilancer:

Código
#!/bin/bash
# MiniLancer - Super Administrador de servicios (?)
/etc/init.d/$1 $2

y le damos permiso de ejecutarse

Código:
$ chmod u+x minilancer

Luego podemos usarlo facilmente asi:

Código:
$ minilancer apache start

Saludos.

PD: Lo quieren mejorar? Adelante!  Feliz
En línea

sir_carlomagno
Technocrat
*********

Prestigio: 15
Desconectado Desconectado

Sexo: Masculino
Profesión: Estudiante
Mensajes: 135


Mi espada ansia venganza


WWW
Lenguajes:
C/C++, html+CSS, bash, Java - applets (aprendiendo)
« Respuesta #1 en: 17/08/2006, 08:51:57 »

 Feliz Mmm me parece buena la idea más sin embargo...

Si ejecutas el guión como usuario normal que sucede? por ejemplo si desea detener a apache, seguramente la terminal, nos dirá que no somos usuario root o que no podemos hacerlo o que se yo alguna cosa dirá Lengua

$ minilancer apache start


Entonces al código actual, necesitamos añadirle una funcion de comprobación de usuario, y de lo contrario de no ser root (quién ejecuta el guión) llamar a sudo mostrar un mensaje en el stdout y pedir el pass de administrador, despues de ganar los privilegios entonces ejecutar el comando.

El código seria más o menos asi:

Código
#/***************************************************************************
#*  Función que ejecuta programas como super-usuario
#*
#*  Jueves Aug 17 20:50:38 2006
#*  Sir_carlomagno <Carlos Manuel García Rodríguez>
#*  Email <demoniobsd17@gmail.com>
#
# * program as root
#****************************************************************************/
 
CMDLN_ARGS="$@" # Argumentos de la linea de comandos para el script.
export CMDLN_ARGS
 
# Ejecuta esta funcion si aún el usuario no es root.
chk_root () {
 
 if [ ! $( id -u ) -eq 0 ]; then
   echo "Por favor introduzca el password de root."
   exec su -c "${0} ${CMDLN_ARGS}" # Llama este programa como root
   exit ${?}  # Por si algo sale mal :D :-*
 fi
 
}
 
# Y entonces simplemente añadimos la funcion antes o despues del comienzo del ciclo de nuestros
#programas.
chk_root
 

Cabe destacar que las 2 partes importantes de nuestro script son:

if [ ! $( id -u ) -eq 0 ]; then

Que quiere decir; Si el ID (-U denota el ID ACTUAL)  NO es IGUAL a 0; Entonces...
echo "Por favor introduzca el password de root."   Sonreir
exec su -c "${0} ${CMDLN_ARGS}"   "En esta llamada remplazamos el proceso actual por otro (el mismo script, que estamos ejecutando).

Entonces, al introducir nuestro password, ese proceso ya ha ganado privilegios de root, si ponemos
el resto de nuestro programa podra ejecutar sin problemas.


Talves alguna mejora podria ser usar GKSUDO para aquellos programas que necesitan ejecutar como root, hagamos un clic y nos pregunte, le demos el pass y ejecute. Con algunas modificaciones creo que podría ser posible.
« Última modificación: 17/08/2006, 08:55:21 por sir_carlomagno » En línea


---------------------------------------------------------------
>Solo hay algo seguro la infinita inseguridad de la seguridad_
http://ruthless.zathras.de/fun/topsecret/unix.gif
Foros del Club
   

 En línea
Páginas: [1]   Ir Arriba
  Enviar tema  |  Imprimir  
 
Ir a: