Autor Tema: Mejorando los scripts wifislax-updaters  (Leído 162802 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Fr3dY

  • Visitante
Mejorando los scripts wifislax-updaters
« en: 10-09-2014, 00:00 (Miércoles) »
Buenas,

Hoy le he echado un vistazo a los updaters y creo que sería interesante crearlos de una forma más "modular", creando funciones, aprovechando el código común y dejando en los scripts únicamente las funciones concretas de cada uno.
De esta forma, cualquier modificación será más sencilla, y si afectasen a la parte común sólo habría que tocar en un fichero.

He cogido los 2 primeros que he visto (aircrack-ng y armitage) y los he convertido a este nuevo formato, decidme qué os parece.
Además, he puesto la comprobación de conexión a internet como primer paso, ya que ciertas variables hacen uso de la conexión para ver la VERSION, REVISION, etc.

Si os gusta, puedo reescribir poco a poco todos los demás (los que vayáis a crear nuevos, podéis hacerlos directamente en este formato).


funciones.sh:
Código: [Seleccionar]
#!/bin/bash

# Script by www.seguridadwireless.net

# Colores
CIERRE=${CIERRE:-""}
ROJO=${ROJO:-""}
VERDE=${VERDE:-""}
CYAN=${CYAN:-""}
AMARILLO=${AMARILLO:-""}
BLANCO=${BLANCO:-""}
ROSA=${ROSA:-""}

# Variables globales
NUCLEOS=$(grep -c \^processor /proc/cpuinfo)
BUILD=${BUILD:-1}
TAG=${TAG:-sw}
CWD=$(pwd)
TMP=${TMP:-/tmp/build/$PRGNAM}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}

# Funcion que limpia
f_exitmode() {
rm -Rf $TMP &>/dev/null
exit 1
}

# Funcion que muestra Presentacion
f_presentacion() {
clear
echo ""
echo "$BLANCO                *****************************$CIERRE"
echo "$VERDE                    Instalador/Actualizador   $CIERRE"
echo "$VERDE                       para el programa       $CIERRE"
echo "$CYAN                         $PRGNAM               $CIERRE"
echo "$VERDE                                              $CIERRE"
echo "$VERDE                  www.seguridadwireless.net   $CIERRE"
echo "$BLANCO                *****************************$CIERRE"
echo ""
sleep 3
}

# Comprobar conexion by geminis_demon
f_comprobarConexion() {
echo "$ROSA"Comprobando si hay acceso a internet"$CIERRE."
if [ "$(ping google.com -c1 2>/dev/null)" ]; then
echo "$VERDE"Tengo internet"$CIERRE ... $BLANCO"la tarea continuara."$CIERRE"
echo ""
else
echo "$ROJO"No tengo internet"$CIERRE ... $BLANCO"el script se cerrara."$CIERRE"
echo ""
sleep 5
exit 0
fi
}

# Comprobacion de updates para el script
f_comprobarUpdates() {
SERVIDOR_WEB="http://downloadwireless.net/wifislax-updaters"
DIRECTORIO=$(pwd)
SERVIDOR_VERSION=$(curl -s $SERVIDOR_WEB/${DIRECTORIO##*/}/${PRGNAM}_updater | grep "SCRIPT_VERSION=" | head -1 |cut -d "=" -f2)

echo ${CYAN}Version Script$CIERRE: $ROJO${SCRIPT_VERSION:6}$BLANCO/$AMARILLO${SCRIPT_VERSION:4:2}$BLANCO/$ROJO${SCRIPT_VERSION:0:4}$CIERRE

if [ "$(ping downloadwireless.net -c1 2>/dev/null)" ]; then
if [[ $SCRIPT_VERSION -lt $SERVIDOR_VERSION ]]; then
echo
echo "$ROSA"Comprobando si hay actualizaciones para el script..."$CIERRE."
echo ${ROJO}NUEVA VERSION$CIERRE
echo
echo ${ROSA}Version Server$CIERRE: $ROJO${SERVIDOR_VERSION:6}$BLANCO/$AMARILLO${SERVIDOR_VERSION:4:2}$BLANCO/$ROJO${SERVIDOR_VERSION:0:4}$CIERRE
echo
echo ${CYAN}Actualizando ${PRGNAM}_updater
curl -s $SERVIDOR_WEB/${DIRECTORIO##*/}/${PRGNAM}_updater -o $DIRECTORIO/${PRGNAM}_updater
echo ${ROJO}LISTO$CIERRE
sleep 3
$0
exit
fi
fi
}

# Definimos arquitectura del sistema. Se le pasa la arquitectura como parametro o la calcula automaticamente si no se indica nada
f_arquitectura() {
ARCH=$1
if [ -z "$ARCH" ]; then
 case "$( uname -m )" in
i?86) export ARCH=i486 ;;
arm*) export ARCH=arm ;;
  *) export ARCH=$( uname -m ) ;;
 esac
fi

if [ "$ARCH" = "i486" ]; then
 SLKCFLAGS="-O2 -march=i486 -mtune=i686"
 LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
 SLKCFLAGS="-O2 -march=i686 -mtune=i686"
 LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
 SLKCFLAGS="-O2 -fPIC"
 LIBDIRSUFFIX="64"
else
 SLKCFLAGS="-O2"
 LIBDIRSUFFIX=""
fi

set -eu
}

# Detecta la version instalada en el sistema
f_versionInstalada() {
if [ -f /var/log/packages/$PRGNAM-[0-9]* ]; then
INSTALADA=$(grep -r -i "package name" /var/log/packages/$PRGNAM-[0-9]* | awk '{print $3}' | sed "s/$PRGNAM-//g" | cut -d- -f-3)
echo ""
echo ""$AMARILLO"Su version actual es..."$CYAN"$PRGNAM-$INSTALADA"$CIERRE""
sleep 3
echo ""
echo "__________________________________________"
echo ""
echo ""$AMARILLO"La version mas actual es..."$CYAN"$PRGNAM-$VERSION-r$REVISION"$CIERRE""
echo ""
echo ""$BLANCO"Pulsa $ROJO"ENTER" $BLANCO"si deseas actualizarla""
read junk
echo ""
fi

# Si el sistema tiene una version anterior se eliminara
if [ -f /var/log/packages/$PRGNAM-[0-9]* ]; then
f_eliminaVersion
fi
}

# Elimina una version anterior
f_eliminaVersion() {
echo ""
echo "$ROJO"Se detecto una version antigua en el sistema... limpiando."$CIERRE"
sleep 5
removepkg /var/log/packages/$PRGNAM-[0-9]*
}

# Crea el directorio temporal de trabajo
f_directorioTemporal() {
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
}


# Creamos xzm , instalamos y salimos
f_tareasFinales() {
echo ""
echo "$VERDE"Instalando y creando modulo xzm ..."$CIERRE"
sleep 5
cd $PKG
stripdir $PKG
cleandir $PKG
dir2xzm $PKG $HOME/Desktop/$PRGNAM-$VERSION-r$REVISION-$ARCH-$BUILD$TAG.xzm
xzm2dir $HOME/Desktop/$PRGNAM-$VERSION-r$REVISION-$ARCH-$BUILD$TAG.xzm /
rm -Rf $TMP &>/dev/null
clear
echo ""
echo ""$VERDE"Creado modulo del paquete "$AMARILLO"$PRGNAM-$VERSION-r$REVISION"$CIERRE""
echo ""
echo "$VERDE"Las tareas han finalizado"$CIERRE"
sleep 3
echo ""
echo "$VERDE"Bye Bye"$CIERRE"
echo ""
sleep 3
exit 0
}


aircrack-updater:
Código: [Seleccionar]
#!/bin/bash

# Script by www.seguridadwireless.net

SCRIPT_VERSION=20140827


############################################################
## Funciones comunes. Su nombre empieza por f_ ##
############################################################
DIR="${BASH_SOURCE%/*}"
if [[ ! -d "$DIR" ]]; then DIR="$PWD"; fi
. "$DIR/funciones.sh"


############################################################
## Funciones propias del script. Su nombre empieza por F_ ##
############################################################
#Definicion de variables
F_variables() {
PRGNAM=aircrack-ng
VERSION=`curl -s http://svn.aircrack-ng.org/trunk/VERSION`
REVISION=`curl -s http://svn.aircrack-ng.org/trunk/ | grep -i revision | head -1 | cut -d ":" -f 1 | cut -d ' ' -f4`
SVN="svn co http://svn.aircrack-ng.org/trunk/"
}

# Compilamos
F_compila() {
cd $TMP/trunk
echo $CYAN
echo "Compilamos las sources de$VERDE $PRGNAM-$VERSION-r$REVISION"
sleep 3
make unstable=true prefix=/usr sqlite=true libnl=true
sleep 3
}

# Instalamos para que funcione el oui update
F_makeInstall() {
make prefix=/usr install
}

# Actualizamos la oui.list
F_actualizaOUI() {
echo $VERDE
echo "Actualizando aircrack oui.list ...."
echo $AMARILLO
airodump-ng-oui-update
sleep 2
}

# Instalamos
F_instala() {
make unstable=true prefix=/usr sqlite=true libnl=true DESTDIR=$PKG install &>/dev/null
mkdir -p $PKG/etc/aircrack-ng/ &>/dev/null
cp /etc/aircrack-ng/airodump-ng-oui.txt $PKG/etc/aircrack-ng/airodump-ng-oui.txt &>/dev/null
}


###################################
## BLOQUE PRINCIPAL DE EJECUCION ##
###################################
# Si se cierra el script inesperadamente, ejecutar la funcion de limpieza
trap f_exitmode SIGHUP SIGINT

#Comprobamos conexion a Internet
f_comprobarConexion
#Inicializamos las variables del script
F_variables
#Mostramos el mensaje de presentacion
f_presentacion
#Comprobamos updates del script
f_comprobarUpdates
#Asignamos o detectamos arquitectura
f_arquitectura
#Comprobamos version instalada del script
f_versionInstalada
#Creamos directorio de trabajo
f_directorioTemporal
#Compilamos
F_compila
#Instalamos para que funcione oui update
F_makeInstall
#Actualizamos oui.list
F_actualizaOUI
#Instalamos
F_instala
#Creamos xzm , instalamos y salimos
f_tareasFinales


armitage-updater:
Código: [Seleccionar]
#!/bin/bash

# Script by www.seguridadwireless.net

SCRIPT_VERSION=20140811

############################################################
## Funciones comunes. Su nombre empieza por f_ ##
############################################################
DIR="${BASH_SOURCE%/*}"
if [[ ! -d "$DIR" ]]; then DIR="$PWD"; fi
. "$DIR/funciones.sh"

############################################################
## Funciones propias del script. Su nombre empieza por F_ ##
############################################################
#Definicion de variables
F_variables() {
  WEB=http://www.fastandeasyhacking.com/download
  VERSION=`curl -s $WEB | grep .tgz | cut -d "/" -f2 | cut -d "." -f-1 | cut -d "e" -f 2`
  REVISION=0
  PRGNAM=armitage
}

# Comprobar dependencias
F_dependencias() {
if [ -d /opt/metasploit ]; then
EXIST=`echo "$VERDE"Instalada"$CIERRE"`
else
EXIST=`echo "$ROJO"No Instalada"$CIERRE"`
fi
echo "$ROSA"Comprobando dependencias ..."$CIERRE"
sleep 3
echo "$CYAN"Dependencias de este paquete:""
echo ""
echo "$AMARILLO"metasploit"$CIERRE: $EXIST"
if [ ! -d /opt/metasploit ]; then
echo ""
echo "$ROJO"No se cumplen los requisitos no se puede continuar"$CIERRE"
echo ""
sleep 5
exit 0
else
echo ""
echo "$VERDE"Bien ..podemos continuar"$CIERRE"
echo ""
sleep 5
fi
}


# Si el paquete no existe se descargara de internet
F_descargaPaquete() {
if [ ! -f $PRGNAM$VERSION.tgz ]; then
echo ""
echo "$CYAN"Descargando sources de $PRGNAM-$VERSION"$CIERRE"
sleep 5
wget $WEB/$PRGNAM$VERSION.tgz
fi
}

#Descomprime el fichero descargado
F_descomprime() {
# Descomprimimos el fichero descargado
echo ""
echo "$VERDE"Descomprimiendo ..."$CIERRE"
sleep 5
rm -rf $PRGNAM-$VERSION
tar xvf $PRGNAM$VERSION.tgz
mkdir -p $PKG/opt
mv -f $TMP/$PRGNAM $PKG/opt
}

# Creamos la ruta, el fichero desktop y copiamos icono a una ruta mejor
F_desktop() {
mkdir -p $PKG/usr/share/{applications/wifislax/Testing,pixmaps}
cp -rf $PKG/opt/armitage/armitage-logo.png $PKG/usr/share/pixmaps/$PRGNAM.png
# Ahora creamos el fichero desktop
echo "[Desktop Entry]
Categories=testing
Exec=/opt/armitage/armitage
Icon=armitage
Name[es]=Armitage
Name=Armitage
Path=/opt/armitage/
StartupNotify=true
Terminal=false
Type=Application
X-KDE-SubstituteUID=false
" > $PKG/usr/share/applications/wifislax/Testing/$PRGNAM.desktop
}


###################################
## BLOQUE PRINCIPAL DE EJECUCION ##
###################################
# Si se cierra el script inesperadamente, ejecutar la funcion de limpieza
trap f_exitmode SIGHUP SIGINT

#Comprobamos conexion a Internet
f_comprobarConexion
#Inicializamos las variables del script
F_variables
#Mostramos el mensaje de presentacion
f_presentacion
#Comprobamos updates del script
f_comprobarUpdates
#Asignamos o detectamos arquitectura
f_arquitectura noarch
#Comprobamos version instalada del script
f_versionInstalada
#Creamos directorio de trabajo
f_directorioTemporal
#Comprobamos dependencias necesarias
F_dependencias
#Descargamos el paquete si no existe
F_descargaPaquete
#Descomprimimos el paquete descargado
F_descomprime
#Creamos ficheros de desktop/icono
F_desktop
#Creamos xzm , instalamos y salimos
f_tareasFinales


Saludos


« Última modificación: 10-09-2014, 00:52 (Miércoles) por Fr3dY »

Conectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 14481
Re: Mejorando los scripts wifislax-updaters
« Respuesta #1 en: 10-09-2014, 12:12 (Miércoles) »
holas, ya le hechare un vistazo mas a fondo , pero a priori aclrar que lo de las variables arriba del todo , incluso antes que internet es a posta , aunque parezca desordenado , es supercomodo ,tenerlas todas juntas arriba ..accesibles.

a fin de cuentas no tienen efecto hasta que son reclamadas ... y antes de nada se hace lo de testear internet, asi que es solo cuestión de gustos , vk496 me dijo lo mismo , yo personalmente seguire como hasta ahora, arriba todos a la vista rápida.

Fr3dY

  • Visitante
Re: Mejorando los scripts wifislax-updaters
« Respuesta #2 en: 10-09-2014, 12:16 (Miércoles) »
OK, puedes poner la funcion F_variables en la parte más alta del script, por eso no hay problema ;)




Saludos

Desconectado geminis_demon

  • Colaborador
  • *
  • Mensajes: 2383
  • Prácticas precisas precisan práctica
Re: Mejorando los scripts wifislax-updaters
« Respuesta #3 en: 10-09-2014, 12:37 (Miércoles) »
Mas que cambiar el orden de las variables, lo que Fr3dY intenta es que no se repita siempre lo mismo en todos los scripts, ha hecho como una "librería" que contiene las variables y funciones que son genéricas para todos los updaters, y esa librería es llamada al principio de cada updater.

A mi me gusta porque está todo mas ordenado y limpio, y como bien dice cuando tengas que arreglar algo solo lo tienes que cambiar en la librería, no tienes que modificar todos los updaters uno por uno.

Me parece una buena idea.
« Última modificación: 10-09-2014, 12:38 (Miércoles) por geminis_demon »

La luz cree que viaja más rápido que cualquier otra cosa, pero se equivoca; da lo mismo lo rápido que pueda viajar, porque al final, la luz descubre que la oscuridad ha llegado antes que ella, y la está esperando.

Conectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 14481
Re: Mejorando los scripts wifislax-updaters
« Respuesta #4 en: 10-09-2014, 13:04 (Miércoles) »
acabo de fijarme en este..

funciones.sh:

pero como digo tengo que mirarlo y testear que funca bien...además de entenderlo , quiero entenderlo , por que sino me moriré de asco...  ;D


« Última modificación: 10-09-2014, 13:05 (Miércoles) por USUARIONUEVO »

Fr3dY

  • Visitante
Re: Mejorando los scripts wifislax-updaters
« Respuesta #5 en: 10-09-2014, 13:07 (Miércoles) »
Ese fichero funciones.sh es la "librería" que contiene las funciones y definiciones comunes a todos los scripts, y se carga al comienzo de cada updater.
Cualquier duda, me preguntas y te ayudo con lo que sea.




Saludos

Conectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 14481
Re: Mejorando los scripts wifislax-updaters
« Respuesta #6 en: 10-09-2014, 13:19 (Miércoles) »
voy pillando el concepto , ...

pero tendre que ir en cuidado , ... alguno lleva una de esas funciones globales, modificada específicamente para ese script ...por algún motivo.


el script de aircrack-ng era bastante suyo , y tenia varias funciones modificadas esplicitamente por su culpa ...  ;)


entonces debería hacer un alto , y conducirlos todos a este nuevo formato , la verdad seria mucho mas comodo , modificar solo un script que tenga las globales genéricas , como lo de buscar el internet, versión de script  ...  etc.


justo hoy he terminado con uno bastante complicado ( no por el code ) , como es el ati_updater  , instala y genera el driver ati ... aunque es con una versión fija ...la 14.6 que es el que pide el ultimo hashcat , creo eso debería seguir asi , .. e ir yo actualizando el script acorde al driver que pida hashcat ..a fin de cuentas es la razón de su existencia.


______________________________________________________________________________________


Bueno , ... pues STOP , a escribir nuevos updaters , hasta tener esto portado al nuevo sistema.

yo hasta la noche no puedo ponerme con esto ...

Fr3dY  gracias mil   >:(

Conectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 14481
Re: Mejorando los scripts wifislax-updaters
« Respuesta #7 en: 10-09-2014, 13:20 (Miércoles) »
perdón por el re-post  , hoy actualice las carpeta de scripts ..

voy a añadirla la ruta al post de consultas de desarrollo.

Fr3dY

  • Visitante
Re: Mejorando los scripts wifislax-updaters
« Respuesta #8 en: 10-09-2014, 13:23 (Miércoles) »
Yo hasta esta tarde tampoco podré seguir con el tema. Continuaré por los de la carpeta 'Auditorias' (así no nos 'solapamos').




Saludos

Conectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 14481
Re: Mejorando los scripts wifislax-updaters
« Respuesta #9 en: 10-09-2014, 13:25 (Miércoles) »
vamos a ordenarnos un poco


como Fr3dY a empezado a portar la carpeta Auditores ...

si le parece bien le dejamos esa a el.


y para no parecer vago , me pido una con mas de 2 scripts ... me pido Sistema


Si alguien se apunta , (geminis o vk496 ) , por favor avisad de que carpeta cogéis ... para no duplicar trabajos.

si Fr3dY por lo que sea no le apetece , que lo diga , cada uno que deje sun comment para intentar no hacer dos personas lo mismo y tener mas o menos claro lo que hay o no hecho.


gracias a todos.


Conectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 14481
Re: Mejorando los scripts wifislax-updaters
« Respuesta #10 en: 10-09-2014, 13:26 (Miércoles) »
Yo hasta esta tarde tampoco podré seguir con el tema. Continuaré por los de la carpeta 'Auditorias' (así no nos 'solapamos').




Saludos

Estaba escribiendo eso mismo ...  ;)

el que vaya a empezar algo que avise, asi como si no puede continuarlo.

vk496

  • Visitante
Re: Mejorando los scripts wifislax-updaters
« Respuesta #11 en: 10-09-2014, 14:12 (Miércoles) »
Yo me cojo Librerías o Juegos.... pero me lo tengo que pensar  >:D >:D >:D >:D ;D ;D ;D ;D

Pongamonos serios. xD

Yo cogeré Internet.

@USUARIONUEVO... Cambia la ruta de los scripts, leñe!  ;D

Salu2

Conectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 14481
Re: Mejorando los scripts wifislax-updaters
« Respuesta #12 en: 10-09-2014, 14:15 (Miércoles) »

@USUARIONUEVO... Cambia la ruta de los scripts, leñe!  ;D


no entiendo eso ...  ¿ que no los ponga en /opt ?¿

o lo del menú ?¿


vk496

  • Visitante
Re: Re: Mejorando los scripts wifislax-updaters
« Respuesta #13 en: 10-09-2014, 14:20 (Miércoles) »
El menú XD

Salu2

Fr3dY

  • Visitante
Re: Mejorando los scripts wifislax-updaters
« Respuesta #14 en: 10-09-2014, 14:23 (Miércoles) »
Tened en cuenta que para la prueba de ayer, indiqué que el script "funciones.sh" se cargase desde la misma ruta en la que está el script lanzador en cuestión (mediante el DIR=...).
Tal y como están alojados los scripts en el sistema de ficheros, este método no serviría a menos que creásemos enlaces simbólicos a "funciones.sh" dentro de cada carpeta.

Para corregirlo, podemos indicar la ruta completa de "funciones.sh", o meter todos los updaters en una misma carpeta... @USUARIONUEVO, cómo lo ves?



Saludos

Conectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 14481
Re: Mejorando los scripts wifislax-updaters
« Respuesta #15 en: 10-09-2014, 14:30 (Miércoles) »
los scripts están en carpetas, por que después aparecen en submenús igual a las carpetas...

el fichero funciones.sh , lo meteré en

/opt/wifislax-scripts

y de hay simbólicos a todas las de updaters y punto.

o

mejor todavía , dentro de la misma ruta

/opt/wifislax-updaters

crear la carpeta funciones y de hay ...simbólicos a tuti plen ...asi todo en la misma carpeta.

/opt/wifislax-updaters/Funciones/funciones.sh

asi quedara ...



AGRADECERIA ANTES DE QUE TOQUEIS QUE OS SINCRONICEIS LOS SCRIPTS CON EL FTP

mas que nada , por que no sea que hagamos el trabajo sobre una versión vieja de algún script ... y reintroduzcamos los bugs reparados.  ;)
« Última modificación: 10-09-2014, 14:32 (Miércoles) por USUARIONUEVO »

Conectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 14481
Re: Mejorando los scripts wifislax-updaters
« Respuesta #16 en: 10-09-2014, 14:33 (Miércoles) »
juas , funciones.sh  no lleva versión del script ...   ^-^

Fr3dY

  • Visitante
Re: Mejorando los scripts wifislax-updaters
« Respuesta #17 en: 10-09-2014, 14:34 (Miércoles) »
juas , funciones.sh  no lleva versión del script ...   ^-^

Ponle la fecha de ayer mismo ;)

vk496

  • Visitante
Re: Mejorando los scripts wifislax-updaters
« Respuesta #18 en: 10-09-2014, 14:35 (Miércoles) »
Creo que a wifislax-updater_updater no le va a gustar eso  ^-^

/opt/wifislax-updaters/Funciones/funciones.sh

Crearía una carpeta de mas en el menu.

Creo que lo mejor es ponerlo en /opt/wifislax-updaters/funciones.sh

y cargarlo en los scripts mediante:

../funciones.sh

Salu2

Desconectado geminis_demon

  • Colaborador
  • *
  • Mensajes: 2383
  • Prácticas precisas precisan práctica
Re: Mejorando los scripts wifislax-updaters
« Respuesta #19 en: 10-09-2014, 14:41 (Miércoles) »
El funciones.sh lo puedes poner donde quieras, despues un simbolico en /usr/bin, y despues para llamarlo en los scripts se puede hacer sin especificar ruta.

Código: [Seleccionar]
. funciones.sh

Pero si pones el simbolico en /usr/bin mejor ponerle un nombre que lo identifique mejor, porque funciones.sh es muy genérico, funciones_updater.sh o algo así sería mas practico.
« Última modificación: 10-09-2014, 14:51 (Miércoles) por geminis_demon »

La luz cree que viaja más rápido que cualquier otra cosa, pero se equivoca; da lo mismo lo rápido que pueda viajar, porque al final, la luz descubre que la oscuridad ha llegado antes que ella, y la está esperando.