variables globales

Forums: 

Saludos otra vez,
La mayoría de los servicios del S.O. se configuran mediante archivos planos según tengo entendido. Es común, por ejemplo, colocar en un script de reglas para iptables variables de la siguiente manera:

#SCRIPT
VALOR_IP="200.100.10.1"
...
/sbin/iptables -A cadena -s $VALOR_IP -j DROP #es un ejemplo
...

Mi pregunta es si en vez de colocar lo anterior en un script, puedo hacer lo siguiente:

#SCRIPT
VALOR_IP=/ruta/archivo/archivo_de_datos
...
/sbin/iptables -A cadena -s $VALOR_IP -j DROP
...

Y que lo anterior tenga el mismo efecto como si lo hiciese de la primera forma? Asi de esta manera poder manejar las variables que se utilizan para iptables y algunos otros servicios desde una ubucación distinta como si fuesen variables de tipo "Global" ??

Hice la prueba como lo indico arriba pero no me toma el valor, sino únicamente la ruta que le asigno a la variable (en vez de imprimir "200.100.10.1" ... imprime "/ruta/archivo/archivo_de_datos"). Hay alguna otra manera para que esto funcione??

Haz visto los scripts de

Imagen de deathUser

Haz visto los scripts de inicialización de los servicios ...

Ahí puedes encontrar algo como:


# Source function library.
. /etc/rc.d/init.d/functions

Eso va a cargar las variables en memoria ...
Si quieres una explicación ...


man bash

bye
:)

bashRevisé esos archivos

Gracias por tu respuesta.

Revisé esos archivos (aunque rápidamente) y me parece que es algo alejado a lo que requiero saber.

Lo que deseo es tener (por decir un ejemplo) una variable llamada VALOR_IP y poder utilizarla en el escript de iptables y en varios otros script que lo requieran, únicamente invocando a esa variable y que ésta tome el valor de alguna ubicación en especial.

El fin de semana voy a ver si leo más detenidamente lo que me comentas.

_fR@Nk_

_fR@Nk_

bash y variables

Imagen de acl

Simplemente defines la variable en un archivo, digamos /etc/sysconfig/globales:


VALOR_IP=x.y.z.w

Luego en los otros scripts haces:

source /etc/sysconfig/globales
...
iptables -A FORWARD -s $VALOR_IP ....blah...
...

o puedes definir el valor de la ruta del script en otra variable e igual llamar a source. Las variables simplemente se reemplazan por su valor antes de ejecutar cada linea.

Tomando la idea de tu propio

Imagen de deathUser

Tomando la idea de tu propio script:

[quote]
#SCRIPT
VALOR_IP=/ruta/archivo/archivo_de_datos
[/quote]

Podría funcionar algo como:


VALOR_IP=`cat /ruta/archivo/archivo_de_datos`

Pero deberías tener un archivo de datos con el valor para cada variable, así el contenido de /ruta/archivo/archivo_de_datos debería ser algo como

192.168.0.66

Suerte ...

bye
:)

Solucionado!

Gracias por sus respuestas ..!

Ya estoy haciendo las pruebas y hasta aquí todo sin problemas! Esto es de gran ayuda ya que con las soluciones que me plantean puedo modificar solo una línea de un archivo y en un solo lugar y no hacer un barrido línea por línea en varios scripts.

Se les agradece sus comentarios, los estaré molestando de nuevo en el futuro !! :)

_fR@Nk_

_fR@Nk_

Aunque ya no hace falta :D

Imagen de ndante

Otra manera, sería:
echo 192.168.0.0 > /ruta/archivo/ip
IP_CAT=$(cat /ruta/archivo/ip)

For:.- AMD socket940 64x2
.- CLFS x86_64 Pure 64
To:.- AMD socket940 64x2
.- PKT 64
[Lo lograre]