lunes, 9 de diciembre de 2013

FABackup 1.0 beta

 #!/bin/bash  
 # Titulo        : FABackup  
 # Fecha de creacion   :   
 # Fecha de modificación :  
 # Autor         : José Roberto  
 # Versión        : 1.0  
 # Descripcion      : Me permite realizar respaldos de mis archivos y directorios, con la opcion   
 #             de respaldarlos en un servidor externo o simplemente organizandolos en la maquina local.  
 # Definiendo variables  
 emailaddr=jose.alas@cocesna.org  
 asrv=RAPP  
 fecha=`date +%Y%m%d`  
 #fecha_form=`expr substr $fecha 1 6`  
 fechaf=`date --date="$fecha -5 days" +%Y%m%d`  
 dir_resp_srv=/mnt/iccaevg/iccaevgdb/SRVAPP  
 dir_base=/var  
 dir_resp=respaldos  
 carp_pend=pendientes  
 log=/var/log/respaldos/respaldo.log  
 pendientes=$dir_base/$dir_resp/$carp_pend  
 red=$(tput bold)$(tput setaf 1)  
 gre=$(tput bold)$(tput setaf 2)  
 blu=$(tput bold)$(tput setaf 4)  
 sgr=$(tput sgr0)  
 # Datos de conexión al servidor remoto.  
 server_remoto="10.10.1.6"  
 user="roberto"  
 pass="xxxxxxxxxx"  
 # Directorio respaldado  
 dir_respaldado=/var/lib/mysql  
 # Directorio donde sera respaldado  
 dir_ubicacion=$dir_base/$dir_resp  
 #----------------------------------------------------------------  
 # 1) Creando respaldo diario  
 #----------------------------------------------------------------  
 printf "%s(1) - Creando respaldo local%s\n" $blu $sgr  
 printf "%s- Comprimiendo informacion a respaldar en: %s%s\n" $gre $sgr $dir_ubicacion/$asrv$fecha.tar.gz  
 # Rutina que me permite realizar respaldos  
 tar czPf $dir_ubicacion/$asrv$fecha.tar.gz $dir_respaldado  
 printf "%s- Respaldando las bases de datos en: %s%s\n" $gre $sgr $dir_ubicacion/$asrv$fecha.sql  
 mysqldump --user=root --password=xxxxx -A > $dir_ubicacion/$asrv$fecha.sql  
 if [ $? = 0 ]; then  
     printf "%s- La información se empaqueto correctamente...%s\n" $gre $sgr  
 else  
     printf "%s * Error no se puedo crear el archivo a respaldar %s\n" $red $sgr  
     exit  
 fi  
 # Verificando servidor de respaldos  
 EST=`ping -c 1 $server_remoto > /dev/null && echo 'UP'`  
 if [ -z $EST ]; then  
     printf "  * Error no se ha encontrado un server: %s%s%s\n" $red "$server_remoto" $sgr  
     printf "%s[Info] - Moviendo el respaldo a pendientes.....%s\n" $gre $sgr  
     # Se moveran los archivos a la carpeta de pendientes  
     cp -r $dir_ubicacion/$asrv$fecha.tar.gz $pendientes  
     cp -r $dir_ubicacion/$asrv$fecha.sql $pendientes  
     echo "El servidor de respaldos $server_remoto no responde" | mail -s "Servidor de respaldos $server_remoto no responde" $emailaddr  
     exit  
 else  
     printf "%s(2) - Copiando respaldo del dia al servidor remoto%s\n" $blu $sgr  
     var1=$(expect -c "  
     spawn scp -rq -P 9150 $dir_ubicacion/$asrv$fecha.tar.gz $user@$server_remoto:$dir_resp_srv  
     match_max 100000  
     expect \"*?assword:*\"  
     send -- \"$pass\r\"  
     send -- \"\r\"  
     expect eof  
     ")  
     echo $var1  
     var2=$(expect -c "  
     spawn scp -rq -P 9150 $dir_ubicacion/$asrv$fecha.sql $user@$server_remoto:$dir_resp_srv  
     expect \"*?assword:*\"  
     send -- \"$pass\r\"  
     send -- \"\r\"  
     expect eof  
     ")  
     echo $var2  
     if [ $? = 0 ]; then  
         printf "%s- La información se copio correctamente el servidor...%s\n" $gre $sgr  
     else  
         printf "%s * Error no se puedo copiar la informacion al servidor. %s\n" $red $sgr  
         echo "No se puedo copiar la informacion al servidor $server_remoto" | mail -s "No se puedo copiar informacion en el servidor" $emailaddr  
         exit  
     fi  
 fi  
 printf "%s(3) - Copiando respaldos pendientes en servidor remoto%s\n" $blu $sgr  
 # Se verificara si exiten archivos pendientes de copiar  
 total_arch=$(find $pendientes -type f -name "*.tar.gz" | wc -l)  
 if [[ $total_arch -eq 0 ]]; then  
     printf "%s- No existen archivos pendientes de copiar al servidor...%s\n" $gre $sgr  
 else  
     printf "%s- Copiando archivos pendientes al servidor:%s" $gre $sgr $server_remoto  
     scp -rp -P 9150 $pendientes/*.tar.gz roberto@$server_remoto:$dir_resp_srv  
     scp -rp -P 9150 $pendientes/*.sql roberto@$server_remoto:$dir_resp_srv  
     printf "%s- Eliminando archivos de la carpeta local pendientes...%s\n" $gre $sgr  
     rm -r $pendientes/*.tar.gz  
 fi  
 printf "%s ----- Finalizando proceso de respaldo %s\n" $blu $sgr  
 # Funcion que nos presenta un reporte  
 do_reporte()  
 {  
   echo "-- ** RREPORTE DE RESPALDO ** --" 1>$log  
   echo "- Servidor           : `hostname -s`" 1>>$log  
   echo "- Fecha del respaldo      : $fecha" 1>>$log  
   echo "- Directorio respaldado    : $dir_respaldado" 1>>$log  
   echo "- Directorio respaldo local  : $dir_ubicacion" 1>>$log  
   echo "- Directorio respaldo remoto  : $dir_resp_srv" 1>>$log  
   echo "- Directorio de log      : $log" 1>>$log  
   tail $log | mail -s "Reporte de Backup en `hostname -s`" $emailaddr  
 }  
 # Verificando y ejecutando  
 {  
     if [ -f $log ]; then  
     # hacemos el reporte  
        do_reporte  
     else  
         echo "- No se ha podido registrar en el archivo log"  
         exit  
     fi  
 }  
 #Eliminado archivos antiguos.  
 if [ -f $dir_ubicacion/$asrv$fechaf.tar.gz ]; then  
     rm -r $dir_ubicacion/$asrv$fechaf.tar.gz  
     rm -r $dir_ubicacion/$asrv$fechaf.sql  
 fi  

jueves, 7 de noviembre de 2013

lunes, 4 de noviembre de 2013

Eliminar systemd-systemv en openSUSE 12.3

Como sabrán, openSUSE desde la versión 12.2 si no me equivoco, esta utilizando systemd como sistema de arranque, por lo tanto System V ha sido designado para morir. Sin embargo por cuestiones de compactibilidad se podía usar uno u el otro, seleccionando en el arranque. con F5.

Para la versión 12.3, ya no fue posible usar System V, y los paquetes que aun estaban fueron a adaptados a Systemd (Esperaríamos que para la versión 13.1, ya no se tenga nada que ver con System V).

Para este caso les comento que el paquete systemd-systemv (otros por ahí), se dejo como compactibilidad, el cual contiene el siguiente contenido:

cheperobert:/sbin # rpm -ql systemd-sysvinit
/sbin/halt
/sbin/init
/sbin/poweroff
/sbin/reboot
/sbin/runlevel
/sbin/shutdown
/sbin/telinit
/usr/share/man/man1/init.1.gz
/usr/share/man/man8/halt.8.gz
/usr/share/man/man8/poweroff.8.gz
/usr/share/man/man8/reboot.8.gz
/usr/share/man/man8/runlevel.8.gz
/usr/share/man/man8/shutdown.8.gz
/usr/share/man/man8/telinit.8.gz


Como pueden ver, los binarios que instala, son los que hemos usado siempre en nuestro Linux openSUSE y otras distribuciones.


Pero el caso esta que solo son enlaces a systemd:

cheperobert:/sbin # ls -la halt init poweroff reboot runlevel shutdown telinit
lrwxrwxrwx 1 root root 18 oct 28 16:12 halt -> /usr/bin/systemctl
lrwxrwxrwx 1 root root 26 oct 28 16:12 init -> ../usr/lib/systemd/systemd
lrwxrwxrwx 1 root root 18 oct 28 16:12 poweroff -> /usr/bin/systemctl
lrwxrwxrwx 1 root root 18 oct 28 16:12 reboot -> /usr/bin/systemctl
lrwxrwxrwx 1 root root 18 oct 28 16:12 runlevel -> /usr/bin/systemctl
lrwxrwxrwx 1 root root 18 oct 28 16:12 shutdown -> /usr/bin/systemctl
lrwxrwxrwx 1 root root 18 oct 28 16:12 telinit -> /usr/bin/systemctl


Por lo que decidi elimar el paquete"systemd-sysvinit".

Sin embargo da un problema muy fuerte para nuestro sistema operativo, que lo dañaría (mucho cuidado, es probable que se necesite reinstalar).

Al tratar de eliminarlo, por lo menos dice que borrara 300 paquetes indispensables para nuestro sistema, así que utilice el comando "rpm" para borrarlo, utilizando la opción "--nodeps".

Eso es todo, uno menos de System V.

Ahora el problema es que nuestro sistema no inicia al eliminar este paquete, y es porque los desarrolladores ven indespensable a este paquete (supongo) y lo han puesto intencionalmente, para un inicio sin problemas.

Observando que "/sbin/init" es enlace a Systemd, entonces le pase la ruta al kernel para que sepa que hacer en el arranque.>

"init=/bin/systemd" 

que también es un lace a systemd
lrwxrwxrwx 1 root root 24 oct 28 16:11 /bin/systemd -> /usr/lib/systemd/systemd
 


Con la eliminación de este paquete, para openSUSE, no se cuenta mas con, algunos comandos tradicionales como: reboot, halt, etc. :(

A usar los de systemd.

jueves, 31 de octubre de 2013

openSUSE 13.1 RC2 Lista para probar

La liberación de openSUSE 13.1 está muy cerca - sólo un poco más de dos semanas, de acuerdo a la Roadman. Hoy, la Release Candidate 2 disponible en software.opensuse.org. Descarga una de las imágenes y nos ayudan a probar !

 
¿Qué hay de nuevoLos cambios en esta actualización no son muy grandes. Este es un signo de openSUSE 13.1 tiene una  maduración rápida : nos centramos en la corrección de errores . Obviamente, el bugfixing hackathon ayudó mucho. A continuación se muestra una lista limitada de cambios ( omitiendo la mayoría de las correcciones de errores ) :





  •     systemd se actualiza a la versión 208
  •     Shim debe funcionar ahora que significa que el arranque seguro es posible
  •     Plasma-nm ya no sustituye a la knetworkmanager
  •     Calibre está en pleno funcionamiento
  •     Elkernel ha sido actualizado con más correcciones y una rápida mejora. Todo el mundo podía leer en Phoronix ( las mejoras temporizador radeon / nouveau )
  •     En el área de la visualización, los paquetes xen y libvirt se han actualizado
  •     Muchas de las cuestiones al migrar con zypper dup se han corregido
  •     Apper no debe ahogarse con múltiples acuerdos de licencia
  •     Partes de YaST se han actualizado corrigiendo un montón de errores de instalación
  •     XFCE ahora puede suspender adecuadamente
  •     e17 Se ha adaptado a openSUSE
  •     Akonadi debería manejar mejor PostgreSQL como backend
  •     Nuestra versión de VLC se actualiza a 2,1, que es el último y más fresco proporcionado
  •     Traducciones actualizadas

Y de nuevo, esta es una lista parcial: hay correcciones para muchos problemas reportados por los probadores incluidos.


PruebasopenSUSE 13.1 tendrá que ponerse de pie justo en una orgullosa tradición de gran estabilidad por lo que se necesita un entrenamiento serio final, antes de que la liberación es en el mundo. !Escribimos sobre las pruebas hace un rato, y le pedimos a que le eche un vistazo a este artículo y nos ayude!Le pedimos que dé un poco de atención adicional a:


btrfs! 

livecd y de memorias USB - estos no funcionaban en la RC1 , que fue en parte debido a esto es difícil de probar de forma automática. Hemos establecido algunas pruebas , pero las pruebas manuales que realmente se necesita para asegurar las imágenes en directo funcionan bien .

Boot/UEFI Seguro. Si tiene una máquina con arranque seguro y de UEFI con la  12.3 y no funciona para usted, por favor  prueba en la 13.1 RC2. Con esta RC2 hemos añadido una solución relacionada con la alineación de los certificados que pueden causar falla en algún firmware UEFI.Una lista de los errores más molestos se puede encontrar aquí .

Have a lot of fun!

Articulo original : https://news.opensuse.org/2013/10/31/opensuse-13-1-rc2-hits-the-web-last-chance-for-testing/

 

miércoles, 30 de octubre de 2013

Uso de find y grep para encontrar strings en archivos de un direcotorio.

La siguiente instrucción es útil cuando queremos encontrar un string en un archivo, y no sabemos donde se encuentra, podría ser la raíz de nuestro sistema operativo.

find * -type f -exec grep -nwH --color=auto "MANTPrincipal" {} \;

Algunos detalles sobre la instruccion:

find      - Busca archivos en un directorio, o toda su estrucctura.
         - Usando un comodin para la busqueda de cualquier archivo
-type f  - Búsqueda de archivos del tipo regular
-exec    - Ejecuta un comando, en este caso grep
grep -nwH - grep con sus opciones (n=mostrara el numero de linea, w=lineas que tengan la palabra completa, H=imprime el nombre del archivo
--color=auto - Opción de grep para mostrar colores en la consola
"MANTPrincipal" {} \; - String a buscar

Ejemplo:

cheperobert@cheperobert:/srv/www/htdocs/Mant/lib/mant> find * -type f -exec grep -nwH --color=auto "MANTPrincipal" {} \;
mant.php:20:abstract class MANTPrincipal
usuario.php:97:         $MANT = MANTPrincipal::obtAplicacion();
usuario.php:177:                $session = MANTPrincipal::obtSession();
usuario.php:239:                $session = MANTPrincipal::obtSession();
usuario.php:263:                $db = MANTPrincipal::obtDBO();
cheperobert@cheperobert:/srv/www/htdocs/Mant/lib/mant>


Eso es todo. sfa :)

martes, 29 de octubre de 2013

zypper dup openSUSE 12.3 a 13.1 RC1

Vamos a cambiar a la versión 13.1 RC1 de openSUSE en 10 pasos.

zypper dup de 12.3 a 13.1 RC1

1. Abrimos una terminar (Ayuda: Abrir una terminar el Linux)

2. Nos cambiamos a root con. (Ayuda: Uso del comando su)
    su -

3. Verificamos si el repositorio de actualizaciones lo tenemos habilitado. (Ayuda: Como usar zypper)
    Ejemplo:

cheperobert:~ #  zypper repos
# | Alias               | Name                         | Enabled | Refresh
--+---------------------+------------------------------+---------+--------
1 | repo-12.3-non-oss   | openSUSE-12.3 Non-OSS        | Yes     | Yes   
2 | repo-12.3-oss          | openSUSE-12.3 OSS                | Yes     | Yes   
3 | repo-12.3-update     | openSUSE-12.3 Updates           | Yes     | Yes   
4 | repo-update-non-oss | openSUSE-12.3-Update-Non-Oss | Yes     | Yes

4. Si no lo esta, lo habilitamos.
Ejemplo:
    zypper modifyrepo --enable repo-12.3-update

5. Si no esta el repositorio de actualizaciones lo agregamos.
Ejemplo:
    zypper addrepo --check --refresh --name 'repo-12.3-update' http://download.opensuse.org/update/12.3/ repo-update

6. Refrescamos los repositorios 
        zypper refresh

7. Actualizamos
       zypper update

8. Cambiamos los repositorios actuales (12.3), por los de la version 13.1 RC1 (  Ayuda: Uso de sed)
     sed -i 's/12\.3/13\.1/g' /etc/zypp/repos.d/*

9. Refrescamos los nuevos repositorios
     zyppper ref

10. Instalamos la nueva versión de openSUSE
      zypper dup



Eso es todo.
Referencia:  http://en.opensuse.org/SDB:System_upgrade

miércoles, 24 de julio de 2013

openSUSE - Choqok con API V1.1 de Twitter

Al probar "Choqok" en openSUSE 12.3
Despues de configurarlo con una cuenta de Twitter, lanza este error:

choqok(18102): Creating post: XML parsing error:  "
encoding="UTF-8"?>  The Twitter REST API v1
is no longer active. Please migrate to API v1.1.
https://dev.twitter.com/docs/api/1.1/overview.

</errors>"

El paquete con el parche lo pueden bajar desde aca:
https://build.opensuse.org/package/show/KDE:Distro:Factory/choqok

Funciona muy bien, pero esa en la rama de desarrollo de KDE 4.10.x, por
lo que si queremos actualizar el paquete tendremos que migrar a esta
version de KDE por las dependencias.

Espero les sirva, si no quieren dejar de usar esta herramienta.