?>/script>'; } ?> Mejorando los scripts wifislax-updaters Widgets Magazine

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

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

Desconectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 15986
Re: Mejorando los scripts wifislax-updaters
« Respuesta #340 en: 14-11-2014, 19:55 (Viernes) »
Tienes razón, he localizado el fallo y parece ser que es culpa de ficheros coruptos en el PEN USB, un txt y otro wpc de una sesion que tenía guardad de la ISO anterior cuando hize las probaturas.

No obstante haré mas pruebas por si acaso.

Gracias por mirarlo y un saludo.

en cualquier caso , eso que ves es un sistema de protección de kwrite ,para no estropearte el documento ..puedes ir a editar y desbloquear la escritura..pero el ya te aviso que puedes estropearlo.  ;D

Desconectado pepe10000

  • Colaborador
  • *
  • Mensajes: 786
Re: Mejorando los scripts wifislax-updaters
« Respuesta #341 en: 14-11-2014, 20:15 (Viernes) »
Tienes razón, he localizado el fallo y parece ser que es culpa de ficheros coruptos en el PEN USB, un txt y otro wpc de una sesion que tenía guardad de la ISO anterior cuando hize las probaturas.

No obstante haré mas pruebas por si acaso.

Gracias por mirarlo y un saludo.

en cualquier caso , eso que ves es un sistema de protección de kwrite ,para no estropearte el documento ..puedes ir a editar y desbloquear la escritura..pero el ya te aviso que puedes estropearlo.  ;D

Mas de lo que estaban, imposible.

También la casualidad de probar justamente los dos fichero corruptos, no podían a ver sido otros.

Y lo mas curioso es que el txt lo creé en Wifisalx con el Kwrite y el wpc lo copié directamente de la sesión del Geminis Auditor.

Si lo que no me pase a mí, jejeje.

Un saludo.

Desconectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 15986
Re: Mejorando los scripts wifislax-updaters
« Respuesta #342 en: 16-11-2014, 21:41 (Domingo) »
lives_updater

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

# Script by www.seguridadwireless.net

SCRIPT_VERSION=20141116

############################################################
## Funciones comunes. Su nombre empieza por f_ ##
############################################################
f_variables(){
. /opt/wifislax-updaters/Funciones/funciones_updater
}

############################################################
## Funciones propias del script. Su nombre empieza por F_ ##
############################################################
# Definicion de variables
F_variables() {
WEB=http://salsaman.home.xs4all.nl/lives/current/
VERSION=`curl -s $WEB | grep .bz2 | tail -1 | cut -d ">" -f3 | cut -d "-" -f2 | cut -d "t" -f-1 | sed "s/.$//g"`
PRGNAM=lives
DESCARGA=${WEB}LiVES-$VERSION.tar.bz2
}

# Si el paquete no existe se descargara de internet
F_download(){
if [ ! -f LiVES-$VERSION.tar.bz2 ]; then
echo
echo "$CYAN"Descargando sources de $PRGNAM-$VERSION"$CIERRE"
sleep 2
aria2c -x 3 $DESCARGA
fi
}

# Descomprimimos el fichero descargado y compilamos
F_compilar(){
echo
echo "$VERDE"Descomprimiendo ..."$CIERRE"
sleep 2
rm -rf $PRGNAM-$VERSION
tar xvjf LiVES-${VERSION}.tar.bz2
cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
 \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
  -o -perm 511 \) -exec chmod 755 {} \; -o \
 \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
 -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;

echo
echo "$VERDE"Compilando ..."$CIERRE"
sleep 2

CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
  --prefix=/usr \
  --libdir=/usr/lib${LIBDIRSUFFIX} \
  --sysconfdir=/etc \
  --localstatedir=/var \
  --mandir=/usr/man \
  --build=$ARCH-slackware-linux \

make
make install DESTDIR=$PKG

cd $PKG/usr/bin && rm -f lives && ln -s lives-exe lives
}

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

#Inicializamos las variables globales
f_variables
#Comprobamos conexion a Internet
f_comprobarConexion
#Inicializamos las variables del script
F_variables
#Creamos directorio de trabajo
f_directorioTemporal
#Mostramos el mensaje de presentacion
f_presentacion
#Comprobamos updates del script
f_comprobarUpdates
#Asignamos o detectamos arquitectura
f_arquitectura
#Comprobamos version instalada del paquete
f_versionInstalada
#Si no existe el fichero se descargara
F_download
#Descomprimir fichero descargado y compilamos
F_compilar
#Hacemos strip sobre el paquete
f_strip
#Creamos xzm , instalamos y salimos
f_tareasFinales

Desconectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 15986
Re: Mejorando los scripts wifislax-updaters
« Respuesta #343 en: 19-11-2014, 01:38 (Miércoles) »
escritos updaters

python3
linux_stable

El primero no necesita explicacion ,simplemente instala python3

el segundo es para dar la opcion a quien lo quiera de subirse al kernel MAS NUEVO ESTABLE.

 ;D

mañana iso nueva  ;D

Desconectado pepe10000

  • Colaborador
  • *
  • Mensajes: 786
Re: Mejorando los scripts wifislax-updaters
« Respuesta #344 en: 20-11-2014, 08:41 (Jueves) »
USUARIONUEVO, creo que la última iso "wifislax-4.9-19112014.iso" ha subido mal al FTP, el tamaño no me cuadra (718MB contra 780MB de la anterior) y al intentar usarla da errores de módulos corruptos.

Un saludo.
« Última modificación: 20-11-2014, 08:42 (Jueves) por pepe10000 »

Desconectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 15986
Re: Mejorando los scripts wifislax-updaters
« Respuesta #345 en: 20-11-2014, 10:22 (Jueves) »
USUARIONUEVO, creo que la última iso "wifislax-4.9-19112014.iso" ha subido mal al FTP, el tamaño no me cuadra (718MB contra 780MB de la anterior) y al intentar usarla da errores de módulos corruptos.

Un saludo.

el ftp murió casi acabando ..y no me dejo entrar en el resto del dia para eliminar la iso incompleta.

se esta acabando de subir una ahora mismo.


PD: COMPLETADA LA SUBIDA

« Última modificación: 20-11-2014, 10:33 (Jueves) por USUARIONUEVO »

vk496

  • Visitante
Re: Re: Mejorando los scripts wifislax-updaters
« Respuesta #346 en: 21-11-2014, 22:28 (Viernes) »
Tengo una propuesta.

Esto de los módulos está genial cuando se usa mucho el modo Live. Lo creas, lo copias y ale. El problema... Es que no todos tienen 999999Gb de RAM.

Mi idea, es detectar el espacio disponible en modo LiveUSB, y si no se supera ciertos MB, que el .xzm no se genere en el Escritorio sino en carpeta Modules y un enlace a esa Carpeta (scripts como metasploit, LibreOffice, Kernel, ...)

NOTA: O algo similar, pero pudiendo crear el módulo sin que pete la memoria

Salu2

Desconectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 15986
Re: Re: Mejorando los scripts wifislax-updaters
« Respuesta #347 en: 22-11-2014, 02:44 (Sábado) »
Tengo una propuesta.

Esto de los módulos está genial cuando se usa mucho el modo Live. Lo creas, lo copias y ale. El problema... Es que no todos tienen 999999Gb de RAM.

Mi idea, es detectar el espacio disponible en modo LiveUSB, y si no se supera ciertos MB, que el .xzm no se genere en el Escritorio sino en carpeta Modules y un enlace a esa Carpeta (scripts como metasploit, LibreOffice, Kernel, ...)

NOTA: O algo similar, pero pudiendo crear el módulo sin que pete la memoria

Salu2

Lo instalas al hdd y fin del problema.

Lo del modo live y lo ponga en la carpeta modules esta bien , pero ... no todos los usan desde pendrive.

Ademas , eso solo te libra de la creacion del xzm , ... y tampoco ... los sistemas de archivos FAT /NTFS ,  no soportan enlaces simbolicos ... solo generaras basura  ;D


cuando el install haga  DESTDIR ... vas a perder todos los simbolicos.

asi que o arrncas en PAE , o instalas a disco duro.


La ides de los scripts es que el instalarlo tenga algo mas de sentido , al poder ampliarlo y mantener tu mismo el sistema.

Si luego aprovechas los xzm , en un pendrive pues mejor aun ..o los compartes , o lo que sea.

Desconectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 15986
Re: Mejorando los scripts wifislax-updaters
« Respuesta #348 en: 22-11-2014, 02:46 (Sábado) »
El de kernel , en modo live no se deja ejecutar ... por ejemplo.

el libreoffice creo que ocupa 300/400 megas  
metasploit lo mismo
xampp



si no puedes generarlos a la vez, pues simplemente genera de uno en uno ... y ves sacando los xzm a otra ruta para recuperar espacio.


la mayoria de modulos ocupan entre 1 y50 megas  ... mas 250 de sistema ...  eso nos deja que cualquier sistema con 512 de ram , puede generar casi todos los modulos , lo que no puedes es ir con un ordenador de juguete y ejecutar los updaters de kernel , metasploit y libreoffice a la vez.
« Última modificación: 22-11-2014, 02:48 (Sábado) por USUARIONUEVO »

vk496

  • Visitante
Re: Re: Mejorando los scripts wifislax-updaters
« Respuesta #349 en: 22-11-2014, 09:45 (Sábado) »
Es que yo no puedo ni con metasploit, ni con LibreOffice. Y hacer esos 2 a la vez... NI LOCO jajajaja (al menos desde mi netbook)

Salu2

Garcad

  • Visitante
Re: Re: Mejorando los scripts wifislax-updaters
« Respuesta #350 en: 22-11-2014, 18:08 (Sábado) »
Es que yo no puedo ni con metasploit, ni con LibreOffice. Y hacer esos 2 a la vez... NI LOCO jajajaja (al menos desde mi netbook)

Salu2

Entonces tendrás que esperar que alguien los publique.

LibreOffice-4.3.4-x86-1sw.xzm 161.5 MB
https://mega.co.nz/#!MldXAQjT!FhATwK1uEtsVZ7JCU4HWahH7OivD3pVhWjHCkkevQ7I

LibreOffice-4.3.1-x86-1sw.xzm 159.9 MB
https://mega.co.nz/#!MldEVIST!jqa3zOjFCgRmSwbnBpb-LLIGoDzmoUvKPcHeVVScyJ0

metasploit
https://mega.co.nz/#F!J5skxDhY!4wgl2JB3JmwHiVHrxcMnIQ

Salu2
« Última modificación: 22-11-2014, 20:02 (Sábado) por Garcad »

Desconectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 15986
Re: Mejorando los scripts wifislax-updaters
« Respuesta #351 en: 22-11-2014, 22:31 (Sábado) »
angry ip scanner  .... que por cierto , hay version nueva, si quereis actualizarlo este sirve para wifislax-4.9 o 4.10

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

# Script by www.seguridadwireless.net

SCRIPT_VERSION=20141122

############################################################
## Funciones comunes. Su nombre empieza por f_ ##
############################################################
f_variables(){
. /opt/wifislax-updaters/Funciones/funciones_updater
}

############################################################
## Funciones propias del script. Su nombre empieza por F_ ##
############################################################
# Definicion de variables
F_variables() {
WEB=http://sourceforge.net/projects/ipscan/files/
VERSION=`curl -s $WEB | grep binary | head -1 | cut -d "/" -f8 | sed "s/ //g"`
PRGNAM=Angry_ip_scanner
RAMA=`echo $VERSION | cut -d "." -f1`
DESCARGA=${WEB}ipscan$RAMA-binary/$VERSION/ipscan-linux-$VERSION.jar
}

# Creamos directorios extra
F_extradirs(){
mkdir -p $PKG/usr/share/{applications/wifislax/Redes,pixmaps} $PKG/usr/{bin,lib/ipscan/}
}

# Si el paquete no existe se descargara de internet
F_download(){
if [ ! -f ipscan-linux-$VERSION.jar ]; then
echo
echo "$CYAN"Descargando sources de $PRGNAM-$VERSION"$CIERRE"
sleep 1
aria2c -x 3 $DESCARGA
fi
}

# Descomprimimos el fichero descargado y compilamos
F_compilar(){
mv -f ipscan-linux-$VERSION.jar $PKG/usr/lib/ipscan/

echo "#!/bin/sh
java -jar /usr/lib/ipscan/ipscan-linux-$VERSION.jar" > $PKG/usr/bin/ipscan
chmod 777 $PKG/usr/bin/ipscan

# Creamos icono
echo "
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
" | base64 -d > $PKG/usr/share/pixmaps/ipscan.png

# Creamos entrada a menu
echo "[Desktop Entry]
Encoding=UTF-8
Name=Angry IP Scanner
Comment=Fast and friendly network scanner
GenericName=Fast and friendly network scanner
Exec=ipscan
Terminal=false
Type=Application
Icon=ipscan
Categories=Redes;
StartupWMClass=Angry IP Scanner
StartupNotify=true" > $PKG/usr/share/applications/wifislax/Redes/ipscan.desktop
}

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

#Inicializamos las variables globales
f_variables
#Comprobamos conexion a Internet
f_comprobarConexion
#Inicializamos las variables del script
F_variables
#Creamos directorio de trabajo
f_directorioTemporal
#Creamos directorios extra
F_extradirs
#Mostramos el mensaje de presentacion
f_presentacion
#Comprobamos updates del script
f_comprobarUpdates
#Asignamos o detectamos arquitectura
f_arquitectura noarch
#Comprobamos version instalada del paquete
f_versionInstalada
#Si no existe el fichero se descargara
F_download
#Descomprimir fichero descargado y compilamos
F_compilar
#Hacemos strip sobre el paquete
f_strip
#Creamos xzm , instalamos y salimos
f_tareasFinales

Desconectado geminis_demon

  • Colaborador
  • *
  • Mensajes: 2378
  • Prácticas precisas precisan práctica
Re: Mejorando los scripts wifislax-updaters
« Respuesta #352 en: 24-11-2014, 22:53 (Lunes) »
Error teamviewer con la iso del dia 20:


Desconectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 15986
Re: Mejorando los scripts wifislax-updaters
« Respuesta #353 en: 25-11-2014, 05:33 (Martes) »
Error teamviewer con la iso del dia 20:



si , el caso es que me salio ya una vez , y ahora en toda la noche no me ha funcionado ni una...

voy a reescribir el updater y usare el .tar.gz , que lo he probado y no me dio problemas de nada, ademas funciona sin daemon ni nada extra ... solo hay que reescribir ,pero creo es poco ...  ;D

Desconectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 15986
Re: Mejorando los scripts wifislax-updaters
« Respuesta #354 en: 25-11-2014, 23:59 (Martes) »
Casi me vuelvo loco jodder con el error de las narices ....


Lo he reescrito , ahora usamos el .tar.gz
Código: [Seleccionar]
#!/bin/sh

# Script by www.seguridadwireless.net

SCRIPT_VERSION=20141125

############################################################
## Funciones comunes. Su nombre empieza por f_ ##
############################################################
f_variables(){
. /opt/wifislax-updaters/Funciones/funciones_updater
}

############################################################
## Funciones propias del script. Su nombre empieza por F_ ##
############################################################
# Definicion de variables
F_variables() {
PRGNAM=teamviewer
WEB=http://download.teamviewer.com/download/teamviewer_linux.tar.gz
VERSION=$(curl -s http://www.teamviewer.com/es/download/linux.aspx | grep _ctl2_Version | head -1 | cut -d "v" -f2 | cut -d '<' -f-1)
}

# Creamos directorios extra
F_extradirs(){
mkdir -p $PKG/opt $PKG/usr/share/{applications,pixmaps}
}

# Si el paquete no existe se descargara de internet
F_download(){
if [ ! -f teamviewer_linux.tar.gz ]; then
echo
echo "$CYAN"Descargando sources de $PRGNAM-$VERSION"$CIERRE"
sleep 1
aria2c -x 3 $WEB
fi
}

# Descomprimimos el fichero descargado y compilamos
F_compilar(){
echo
echo "$VERDE"Descomprimiendo ..."$CIERRE"
sleep 1
tar xvf teamviewer_linux.tar.gz -C $PKG/opt

# Copiamos desktop & icono
cp -rf $PKG/opt/teamviewer9/tv_bin/desktop/teamviewer.png $PKG/usr/share/pixmaps/teamviewer.png
cp -rf $PKG/opt/teamviewer9/tv_bin/desktop/*.desktop $PKG/usr/share/applications/teamviewer.desktop

if [ -f /etc/rc.d/rc.teamviewerd ]; then
/etc/rc.d/rc.teamviewerd stop &>/dev/null
fi

# Creamos un profile
echo "
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
PvLy759///z7598///6Bn/8PkUuttQBcBgA=
" | base64 -d > $PKG/opt/teamviewer9/tv_bin/profile.tar.gz

tar xvf $PKG/opt/teamviewer9/tv_bin/profile.tar.gz -C $PKG/opt/teamviewer9
rm -rf $PKG/opt/teamviewer9/tv_bin/profile.tar.gz

# Generamos el servicio ...
mkdir -p $PKG/etc/rc.d
cat > rc.teamviewerd << "EOF"
#!/bin/sh
#
# /etc/rc.d/rc.teamviewerd

teamviewerd_start() {
  if [ -x /opt/teamviewer9/tv_bin/teamviewerd ]; then
    echo "Starting TeamViewer Daemon"
    /opt/teamviewer9/tv_bin/teamviewerd --daemon start
  fi
}

teamviewerd_stop() {
    echo "Terminating TeamViewer Daemon"
  killall teamviewerd
}

teamviewerd_restart() {
  teamviewerd_stop
  sleep 2
  teamviewerd_start
}

case "$1" in
'start')
  teamviewerd_start
  ;;
'stop')
  teamviewerd_stop
  ;;
'restart')
  teamviewerd_restart
  ;;
*)
  echo "usage $0 start|stop|restart"
esac
EOF
mv rc.teamviewerd $PKG/etc/rc.d
chmod 777 $PKG/etc/rc.d/rc.teamviewerd
}

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

#Inicializamos las variables globales
f_variables
#Comprobamos conexion a Internet
f_comprobarConexion
#Inicializamos las variables del script
F_variables
#Creamos directorio de trabajo
f_directorioTemporal
#Creamos directorios extra
F_extradirs
#Mostramos el mensaje de presentacion
f_presentacion
#Comprobamos updates del script
f_comprobarUpdates
#Asignamos o detectamos arquitectura
f_arquitectura
#Comprobamos version instalada del paquete
f_versionInstalada
#Si no existe el fichero se descargara
F_download
#Descomprimir fichero descargado y compilamos
F_compilar
#Hacemos strip sobre el paquete
f_strip
#Creamos xzm , instalamos y salimos
f_tareasFinales
# Iniciamos el servicio para que sea usable en el acto
F_servicio

Desconectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 15986
Re: Mejorando los scripts wifislax-updaters
« Respuesta #355 en: 26-11-2014, 07:07 (Miércoles) »
Algo que dije un dia, que era interesante..y al final se me paso ..  pero me he acordado   >:(

Cuando funciones.sh se ejecute  (esto es a cada updater que lanzamos)

Liberara toda la memoria cacheeeeeeeeeeeeeeeeeee  esto es imprescindibleeeeee sobretodo en modo livecd


____________________________________________________________________________________________________________________________
Código: [Seleccionar]
#!/bin/bash

# Script by www.seguridadwireless.net

FUNCIONES_VERSION=20141126

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

# Variables globales
#PRGNAM=funciones
NUCLEOS=$(grep -c \^processor /proc/cpuinfo)
BUILD=${BUILD:-1}
TAG=${TAG:-sw}
CWD=$(pwd)

# variable que restara un nucleo para reservarlo al sistema si hay mas de 2
if [ $NUCLEOS -gt 2 ]; then
let NUCLEOS=$NUCLEOS-1
fi

# Vamos a liberar toda la memoria cache
sync && echo 3 > /proc/sys/vm/drop_caches

# Eliminamos posibles ficheros viejos de modificaciones de scripts
rm -rf /opt/wifislax-updaters/*/*~ &>/dev/null

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

# Funcion que muestra Presentacion
f_presentacion() {
clear
sleep 0.1 | echo ""
sleep 0.1 | echo ""
sleep 0.1 | echo "$BLANCO"  "       ******************************"   
sleep 0.1 | echo "$VERDE"   "          Actualizador/Instalador    "   
sleep 0.1 | echo "$VERDE"   "          Paquete: "$AMARILLO"$PRGNAM"                                                 
sleep 0.1 | echo "$VERDE"   "                                   "
sleep 0.1 | echo "$VERDE"   "          www.seguridadwireless.net  "
sleep 0.1 | echo "$BLANCO"  "       ******************************"
sleep 0.1 | echo "$CERRAR"
sleep 1
}

# Comprobar conexion by geminis_demon
f_comprobarConexion() {
   if [ ! "$(ping google.com -c1 2>/dev/null)" ]; then
      echo "No tengo internet ... el script se cerrara."
      echo ""
      sleep 1
      exit 0
   fi
}

# Comprobacion de updates para el script
f_comprobarUpdates() {
   SERVIDOR_WEB="http://downloadwireless.net/wifislax-updaters"
   DIRECTORIO=$(find /opt/wifislax-updaters -type f -name ${PRGNAM}*| rev | cut -d/ -f2- | rev)
   SERVIDOR_VERSION=$(timeout -s SIGTERM 10 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 1
         $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
   if [ $PRGNAM = aircrack-ng ]; then
      INSTALADA=$(grep -r -i "package name" /var/log/packages/$PRGNAM-[0-9]* | awk '{print $3}' | sed "s/$PRGNAM-//g" | cut -d- -f-3)
   else
      INSTALADA=$(grep -r -i "package name" /var/log/packages/$PRGNAM-[0-9]*-* | awk '{print $3}' | sed "s/$PRGNAM//g" | cut -d- -f2)
   fi
      echo ""
      echo ""$AMARILLO"La version del sistema es..."$CYAN"$PRGNAM-$INSTALADA"$CIERRE""
      sleep 1
      echo ""
      echo "__________________________________________"
      echo ""
      echo ""$AMARILLO"La version mas nueva en su pagina web es..."$CYAN"$PRGNAM-$VERSION"$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
}

f_backup(){
   echo ""
   echo "$AMARILLO"Guardando backup de la version del sistema..."$CIERRE"
   echo ""
   sleep 2
   echo "$AMARILLO"Si necesitaras reutilizarla solo cambia la extension .backup por .xzm"$CIERRE"
   sleep 2
   log2xzm /var/log/packages/$PRGNAM-$INSTALADA* $HOME/xzm_backups/$PRGNAM-$INSTALADA.backup
   echo ""
   echo "$AMARILLO"El paquete del sistema fue salvado en $HOME/xzm_backups/$PRGNAM-$INSTALADA*.backup"$CIERRE"
   sleep 3
}

# Elimina una version anterior
f_eliminaVersion() {

   sleep 1
   if [ $PRGNAM = xampp ]; then
   /opt/lampp/lampp stop
   fi
   if [ $PRGNAM = metasploit ]; then
   /etc/rc.d/rc.metasploit stop
   fi
   
   if [ ! -d /mnt/live/memory/changes ]; then
   if [ ! -d $HOME/xzm_backups ]; then
   mkdir -p $HOME/xzm_backups
   fi
   echo "1 - "$VERDE"Crear backup de "$AMARILLO""$PRGNAM-$INSTALADA""$CIERRE""
   echo "2 - "$ROJO"No crear backup de "$AMARILLO""$PRGNAM-$INSTALADA""$CIERRE""
   echo ""
   read -p " #> " CHOISE
   echo ""
    case $CHOISE in
      1 ) f_backup;;
      2 ) echo ""$CYAN"Continuamos sin hacer backup de "$AMARILLO""$PRGNAM-$INSTALADA""$CIERRE"";;
    esac
   fi
   echo ""
   echo "$ROJO"Eliminando la version del sistema..."$CIERRE"
   sleep 2
   removepkg /var/log/packages/$PRGNAM-[0-9]*
}

# Crea el directorio temporal de trabajo
f_directorioTemporal() {
   TMP=${TMP:-/tmp/build/$PRGNAM}
   PKG=$TMP/package-$PRGNAM
   OUTPUT=${OUTPUT:-/tmp}
   rm -rf $PKG
   mkdir -p $TMP $PKG $OUTPUT
   cd $TMP
}

# Hace strip al paquete
f_strip() {
   cd $PKG
   stripdir $PKG 2>/dev/null
}

# Creamos xzm , instalamos y salimos
f_tareasFinales() { 
   echo ""
   echo "$VERDE"Instalando y creando modulo xzm ..."$CIERRE"
   
# Guardamos los modulos en carpetas por categoria
   cd ..
   CATEGORIA=`echo $CWD | cut -d "/" -f4`
   if [ ! -d $HOME/Desktop/$CATEGORIA ]; then
   mkdir -p $HOME/Desktop/$CATEGORIA
   fi

#Para sigram nos basamos en el log. Para el resto siempre es igual
if [ $PRGNAM = sigram ]; then
cleandir $PKG
log2xzm $TMP/sigram.log $HOME/Desktop/$CATEGORIA/$PRGNAM-${VERSION}-$ARCH-$BUILD$TAG.xzm
xzm2dir $HOME/Desktop/$CATEGORIA/$PRGNAM-${VERSION}-$ARCH-$BUILD$TAG.xzm /
else
cleandir $PKG
dir2xzm $PKG $HOME/Desktop/$CATEGORIA/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.xzm
xzm2dir $HOME/Desktop/$CATEGORIA/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.xzm /
   fi
# Iniciar algun servicio si existe
   if [ -f $PKG/etc/rc.d/rc.teamviewerd ]; then
   /etc/rc.d/rc.teamviewerd start &>/dev/null
   fi
# Variables especiales para renombrar algunos modulos
   if [ $PRGNAM = jre ]; then
   mv $HOME/Desktop/$CATEGORIA/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.xzm $HOME/Desktop/$CATEGORIA/010-$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.xzm
   fi
   if [ $PRGNAM = firefox ]; then
   mv $HOME/Desktop/$CATEGORIA/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.xzm $HOME/Desktop/$CATEGORIA/008-Firefox-$VERSION-$ARCH-$BUILD$TAG.xzm
   fi
      if [ $PRGNAM = firefox_multi ]; then
   mv $HOME/Desktop/$CATEGORIA/$PRGNAM2-$VERSION-$ARCH-$BUILD$TAG.xzm $HOME/Desktop/$CATEGORIA/008-Firefox_$LANGUAGE-$VERSION-$ARCH-$BUILD$TAG.xzm
   fi
   rm -Rf $TMP &>/dev/null
   clear
   echo ""
   echo ""$VERDE"Creado modulo del paquete "$AMARILLO"$PRGNAM-$VERSION"$CIERRE""
   echo ""
   echo "$VERDE"Las tareas han finalizado"$CIERRE"
   
   if [ $PRGNAM = metasploit ]; then
       /etc/rc.d/rc.metasploit start &> /dev/null
   fi
   if [ -x /usr/bin/update-desktop-database ]; then
       /usr/bin/update-desktop-database -q /usr/share/applications >/dev/null 2>&1
   fi
   
   if [ -x /usr/bin/update-mime-database ]; then
       /usr/bin/update-mime-database /usr/share/mime >/dev/null 2>&1
   fi
   
   if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
   if [ -x /usr/bin/gtk-update-icon-cache ]; then
       /usr/bin/gtk-update-icon-cache /usr/share/icons/hicolor >/dev/null 2>&1
   fi
   fi
   
   if [ -x /usr/bin/glib-compile-schemas ]; then
       /usr/bin/glib-compile-schemas /usr/share/glib-2.0/schemas >/dev/null 2>&1
   fi
   
   sleep 1
   echo ""
   echo "$VERDE"Bye Bye"$CIERRE"
   echo ""
   sleep 1
# Liberamos memoria
   sync && echo 3 > /proc/sys/vm/drop_caches
# Salimos del script
   exit 0
}

Desconectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 15986
Re: Mejorando los scripts wifislax-updaters
« Respuesta #356 en: 26-11-2014, 07:09 (Miércoles) »
mirando el code ... veo que ya lo puse ...al final del script ...

mas vale que sobre ...  ;D

si lanzamos mas de un script , puede ser la diferencia entre agotar toda la memoria ..o acabar las tareas.


asi pues liberamos al empezar y al acabar.  ;D ;D ;D

Desconectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 15986
Re: Mejorando los scripts wifislax-updaters
« Respuesta #357 en: 27-11-2014, 08:19 (Jueves) »
el teamviewer NO ESTABA REPARADO

era la funcion de stripar el modulo....NO HAY QUE METER ESA FUNCION A ESTE PAQUETE.

ahora ya va.

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

# Script by www.seguridadwireless.net

SCRIPT_VERSION=20141127

############################################################
## Funciones comunes. Su nombre empieza por f_ ##
############################################################
f_variables(){
. /opt/wifislax-updaters/Funciones/funciones_updater
}

############################################################
## Funciones propias del script. Su nombre empieza por F_ ##
############################################################
# Definicion de variables
F_variables() {
PRGNAM=teamviewer
WEB=http://download.teamviewer.com/download/teamviewer_linux.tar.gz
VERSION=$(curl -s http://www.teamviewer.com/es/download/linux.aspx | grep _ctl2_Version | head -1 | cut -d "v" -f2 | cut -d '<' -f-1)
}

# Creamos directorios extra
F_extradirs(){
mkdir -p $PKG/opt $PKG/usr/share/{applications,pixmaps}
}

# Si el paquete no existe se descargara de internet
F_download(){
if [ ! -f teamviewer_linux.tar.gz ]; then
echo
echo "$CYAN"Descargando sources de $PRGNAM-$VERSION"$CIERRE"
sleep 1
aria2c -x 3 $WEB
fi
}

# Descomprimimos el fichero descargado y compilamos
F_compilar(){
echo
echo "$VERDE"Descomprimiendo ..."$CIERRE"
sleep 1
tar xvf teamviewer_linux.tar.gz -C $PKG/opt

# Copiamos desktop & icono
cp -rf $PKG/opt/teamviewer9/tv_bin/desktop/teamviewer.png $PKG/usr/share/pixmaps/teamviewer.png
cp -rf $PKG/opt/teamviewer9/tv_bin/desktop/*.desktop $PKG/usr/share/applications/teamviewer.desktop

rm -rf /opt/teamviewer*
}

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

#Inicializamos las variables globales
f_variables
#Comprobamos conexion a Internet
f_comprobarConexion
#Inicializamos las variables del script
F_variables
#Creamos directorio de trabajo
f_directorioTemporal
#Creamos directorios extra
F_extradirs
#Mostramos el mensaje de presentacion
f_presentacion
#Comprobamos updates del script
f_comprobarUpdates
#Asignamos o detectamos arquitectura
f_arquitectura
#Comprobamos version instalada del paquete
f_versionInstalada
#Si no existe el fichero se descargara
F_download
#Descomprimir fichero descargado y compilamos
F_compilar
#Creamos xzm , instalamos y salimos
f_tareasFinales

Desconectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 15986
Re: Mejorando los scripts wifislax-updaters
« Respuesta #358 en: 01-12-2014, 23:22 (Lunes) »
Este mensjae me lleva frito ...

se produce cuando ejecutas uno de los updaters por segunda vez.



find: paths must precede expression: linux_updater
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]

vk496

  • Visitante
Re: Re: Re: Mejorando los scripts wifislax-updaters
« Respuesta #359 en: 02-12-2014, 08:06 (Martes) »
Este mensjae me lleva frito ...

se produce cuando ejecutas uno de los updaters por segunda vez.



find: paths must precede expression: linux_updater
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
Hoy lo miro

Nota: cuando instalas LibreOffice, no asocia las extensiones. Es decir, tengo que elegir manualmente con que abrir un .odt

Salu2