martes, 13 de noviembre de 2018

Comparar dos archivos en Solaris, Linux o Unix

Necesitariamos usar el comando diff para poder mostrar la diferencia línea por línea entre dos archivos en Linux. La sintaxis general del comando diff es la que se observa a continuación:
diff ARCHIVO1 ARCHIVO2

Donde ARCHIVO1 ARCHIVO2: El comando Diff examinará ambos archives tanto archivo1 y archivo2 y dirá a usted cuales son las diferencias y los cambios necesario para que ambos archives sean iguales. Por favor tenga en cuenta que el comando diff necesita estás líneas estén:

  • Agregado (a)
  • Eliminado (d)
  • Cambiado (c)
  • Líneas adicionales en el archivo1 son identificadas con el símbolo menos que (|)  y líneas en el archivo2 con el símbolo de mayor (>).

Ejemplos:

diff archivo1.txt archivo2.txt

Salida:

URL: www.codigomaestro.com
> Algo: Información extra

El contenido de ambos archivos:

$ cat archivo1.txt

Salida:

Bienvenido a Código Maestro!
URL: www.codigomaestro.com

$ cat archivo2.txt

Salida:

Bienvenido a Código Maestro!
URL: www.codigomaestro.net
Saludos

Paso a paso para combinar las diferencias de los archives. Usted puede obtener la diferencia visual en la pantalla entre ambos archives de textos usando el comando sdiff:

$ sdiff archivo1.txt archivo2.txt

Salida:

Bienvenido a Código Maestro!
URL: www.codigomaestro.com

Bienvenido a Código Maestro!
| URL: www.codigomaestro.net
> Saludos

jueves, 14 de junio de 2018

Copia de seguridad completa de Android, sin root

    Hasta hace poco era imposible relizar una copia de seguridad completa en terminales Android a no ser que fueramos root. Vayamos por partes. ¿Qué es ser root? Ser root es la posibilidad de acceder a todos los archivos y configuraciones del sistema como si fuéramos un super usuario, un administrador que puede cambiar lo que haga falta. En Android el acceso está limitado por temas de seguridad. Por ejemplo, una aplicación con código malicioso podría aprovecharse de nuestros permisos de super usuario y borrar archivos necesarios para el arranque del mismo.

    A no ser que instalemos aplicaciones de lugares no seguros, externos a tiendas como Google Play o Amazon, no debería pasar en ningún caso. Habiéndonos quitado el miedo, continuamos. ¿Qué ventajas tiene ser root? Pues precisamente, modificar ciertos aspectos del sistema para dejarlo a nuestro gusto. Si habéis leido algo al respecto, sabréis que hay una comunidad de desarrolladores que ofrecen cientos de ROMs diferentes para cada terminal, versiones modificadas de Android que son posibles gracias a que el código fuente es abierto.

    Volviendo al tema principal del artículo, la imposibilidad de realizar copias de seguridad completas, hay que matizar algo. Siempre fue posible realizar copias de seguridad de aplicaciones, pero no de sus datos. Algo tan básico como guardar las aplicaciones que utilizamos y todos los datos de las mismas, tales como usuarios asociados o configuraciones, era imposible hasta ahora. Eso ha cambiado gracias a Simple ADB Backup, uno de los programas más sencillos para hacerlo, pero que necesita sistemas con Android 4.0 o superior.

    Fraguado, como no, en los foros de XDA-Developers y disponible para sistemas Windows y Linux, Simple ADB Backup nos permite realizar las siguientes acciones:
  • Copia de seguridad de aplicaciones de usuario
  • Copia de seguridad de aplicaciones de usuario y del sistema
  • Copia de seguridad de los datos de aplicaciones
  • Copia de seguridad de aplicaciones
  • Copia de seguridad de archivos del dispositivo y de la tarjeta SD
  • Copia de seguridad selectiva
  • Restauración
    Los archivos copiados se guardarán en un directorio de nuestra elección, uno que sólo debería estar a nuestro alcance debido a que seguramente estémos guardando datos de aplicaciones que además incluyen información de login en servicios web.

   Utilizar la aplicación no tiene mucho misterio, aunque hay que tener en cuenta que para hacerlo necesitamos activar previamente la opción de USB Debugging, dentro del menú de opciones de desarrollador en la configuración de Android.

    Entonces, será el propio Android el que nos preguntará por una contraseña, para proteger esos datos críticos de los que hablábamos, antes de empezar la copia. Basta con escribirla, y recordarla, por supuesto, para comenzar una operación que durará más o menos dependiendo de la opción seleccionada.

Para ealizar la copia:

    Conecta tu teléfono al PC y teclea “adb devices” en el cmd para verificar que reconoce tu dispositivo. Algo como esto. Si no aparece nada, significa que no están bien instalados los drivers así que vuelve a revisarlo.

adb backup [-f <file>] [-apk|-noapk] [-shared|-noshared] [-all] [-system|nosystem] [<packages…>]

La opción más sencilla es

adb backup -all -f C:\backup.ab

Parámetro Explicación
-f <file> Usa esto para personalizar el archivo de salida: por ejemplo -f c:\micopia.ab o -f c:\Archivos de Programa\porno\cosasverdes\copia.ab
-apk|-noapk Indica si quieres que las .apk se incluyan en el backup. Por defecto está en -noapk
-shared|-noshared Indica si quieres realizar una copia del contenido de la memoria compartida/tarjeta SD. Por defecto está en -noshared.
-all Hace una copia de todo.
-system|-nosystem Indica si quieres realizar una copia de las aplicaciones del sistema (Reloj, Calendario, etc..). Por defecto es -system.
<packages…> Especifica un paquete en concreto para hacer la copia de seguridad. ej: com.google.android.apps.plus

Continuemos con la copia, introducies finalmente el tipo de copia que quieres hacer. Por ejemplo: 

adb backup -apk -shared -all -f C:\backup.ab 

    Aparecerá la siguiente ventana en tu Android donde podrás escribir una contraseña para protegerla, el proceso tardará unos minutos y finalizará.

Restaurar la copia:

Para restaurar la copia de seguridad, el proceso es igual de sencillo, basta con escribir:

adb restore C:\backup.ab

Se os solicitará la contraseña, y listo.

viernes, 20 de abril de 2018

Reiniciar el password de administrador en Weblogic

Vamos a  tratar de reiniciar el password de administrador de Weblogic en un entorno Windows en donde había instalado la suite OBIEE 11g con Weblogic 10.3.3.0

Usaremos la siguiente nomenclatura
  • <DOMAIN_HOME> = %BIHOME%\user_projects\domains\<tu_dominio>
  • <SERVER_DOMAIN> = <DOMAIN_HOME>\servers\AdminServer

Abrimos un cmd

"Seteamos" el dominio: <DOMAIN_HOME>\bin\setDomainEnv.cmd


cd security

Renombramos el archivo DefaultAuthenticatorInit.ldift

rename DefaultAuthenticatorInit.ldift DefaultAuthenticatorInit.ldift_old

Ejecutamos la utilidad de cambio de password  

java -cp E:\BI11_HOME
\wlserver_10.3\server\lib\weblogic.jar weblogic.security.utils.AdminAccount <nuevo_user> <nuevo_password> .


El comando no dice nada tras ejecutarse, pero esto nos creará un nuevo DefaultAuthenticatorInit.ldift en la carpeta security

Renombramos la carpeta data a data.old para que se recreé toda la estructura ldap al arrancar el servidor

rename <SERVER_DOMAIN>\data <SERVER_DOMAIN>\data.old
Arrancar el weblogic e introducir el usuario y contraseña nuevos que se especificaron en el punto 4

<DOMAIN_HOME>\startWeblogic.cmd
 
Y con esos pasos deberíamos de tener reiniciado el password y el servidor debería estar arrancando.
Lo de tener que meter el usuario y password para arrancar el servidor es una medida de seguridad, pero en entornos de pruebas o desarrollo puede resultar tedioso. Para ello podemos seguir los pasos de la nota de myOracle Support 980292.1 :

“Starting AdminServer Without Username/Password Prompt in WebLogic Server 10.3“ que básicamente viene a decir que podemos poner un archivo boot.properties en el directorio <SERVER_DOMAIN>\security con la siguiente sintaxis:
  
username=<nuevo_user>
password=<nuevo_password>


Estos valores serán tenidos en cuenta en el siguiente reinicio del servidor, y si coinciden con los que se especificaron en el paso 4, se encriptarán y serán usados en veces subsiguientes, sin necesidad de que los proporcione el usuario.

martes, 16 de enero de 2018

Servidores de aplicaciones como servicios de sistema

Colocar script de arranque del servidor en el arranque del sistema 

Para que los servidores de aplicaciones se arranquen a la vez que se arranque la máquina, debemos incluir el script de arranque del Servidor de aplicaciones en el sector de arranque del Sistema Operativo. En el caso de máquinas Linux, debemos incluir enlaces simbólicos a dichos scripts en la ruta  /etc/init.d  e incluirlo en los niveles de arranque adecuados. 

Particularizamos a continuación los diferentes procedimientos a seguir para servidores de aplicaciones Tomcat y Jboss.

TOMCAT

 

Para levantar el servidor Tomcat con un usuario sin privilegios y dejarlo corriendo como servicio, se utiliza la aplicación jsvc que viene incluida dentro del propio servidor Tomcat (Tomcat 5.x), tal y como se indica en la web http://tomcat.apache.org/tomcat-5.5-doc/setup.html, siguiendo la siguiente secuencia de comandos.

cd $CATALINA_HOME/bin
tar xvfz jsvc.tar.gz
cd jsvc-src
autoconf
./configure
make
cp jsvc ..
cd ..

Se obtiene el binario jsvc y el script Tomcat5.sh en el directorio $CATALINA_HOME/bin. 

Este script, una vez modificado para indicar el usuario (ej: tomcat). Tendremos que modificar los siguientes parámetros en el script Tomcat5.sh:

JAVA_HOME = [Ruta donde hemos instalado el JDK]
CATALINA_HOME = [Ruta donde hemos instalado Tomcat]
DAEMON_HOME = [Ruta donde hemos instalado el Tomcat]
TOMCAT_USER = [Nombre del usuario que arrancará el Tomcat]

Si tenemos múltiples instancias de Tomcat, puede ser necesario modificar también los siguientes parámetros:

TMP_DIR
PID_FILE
CATALINA_BASE

El siguiente paso consistiría en crear un simbólico en la carpeta /etc/init.d con el siguiente comando y ejemplo:

ln -s /opt/pa_html/apache-tomcat-5.5.25/bin/jsvc /etc/init.d/tomcatservice

Si nos encontramos en un sistema Redhat, el siguiente paso sería colocar el script en los correspondientes niveles de arranque, mediante el comando:

chkconfig --add /etc/init.d/tomcatservice

Si estamos en un sistema Debian, el comando “chkconfig” no funcionaria correctamente, deberemos de colocar los scripts manualmente para inicio en los niveles 2 3 4 5, y de parada en los niveles 0 1 y 6. Lo haremos de la siguiente manera:

ln -s /etc/init.d/tomcatservice /etc/rc0.d/K88Tomcat
ln -s /etc/init.d/tomcatservice /etc/rc1.d/K88Tomcat
ln -s /etc/init.d/tomcatservice /etc/rc2.d/S88Tomcat
ln -s /etc/init.d/tomcatservice /etc/rc3.d/S88Tomcat
ln -s /etc/init.d/tomcatservice /etc/rc2.d/S88Tomcat
ln -s /etc/init.d/tomcatservice /etc/rc4.d/S88Tomcat
ln -s /etc/init.d/tomcatservice /etc/rc5.d/S88Tomcat
ln -s /etc/init.d/tomcatservice /etc/rc6.d/K88Tomcat

De todas formas podemos automatizar este proceso (sólo en Debian) mediante el comando “update-rc.d”, de la siguiente manera:

update-rc.d /etc/init.d/tomcatservice start 88 2 3 4 5 . stop 11 0 1 6

Se aconseja que los números de secuencia (88 y 11) sumen 99. Ya que la secuencia de inicio debe de ser inversa a la de arranque.

JBOSS

 

En la carpeta bin del servidor de aplicaciones Jboss existen una serie de scripts preparados para ponerlos en el arranque y servir como demonios. El script está optimizado para sistemas operativos Red Hat, aunque en Debian no debe haber problemas para que funcione. 

Por tanto, cogemos el script jboss_init_redhat.sh y lo editamos para definirle los siguientes parámetros:

JAVAPTH = [Ruta donde hemos instalado el JDK]
JBOSS_HOME = [Ruta donde hemos instalado el Jboss]
JBOSSUS = [Nombre del usuario que arrancará el Jboss]

A continuación creamos en /etc/init.d/ un enlace simbólico, llamado jboss, que apunte al script que acabamos de modificar. Lo hacemos con el siguiente comando:

 ln –s  $JBOSS_HOME/bin/jboss_init_redhat.sh jboss

 Para terminar lo colocamos en los niveles de arranque. Este script está preparado para colocarlo en el nivel de arranque 3, para hacer esto, tras crear el enlace simbólico, basta con ejecutar el siguiente comando:

 chkconfig --add /etc/init.d/jboss
           
Si nos encontramos en un sistema Debian, el comando “chkconfig” no dará resultado, así que haremos lo descrito en el último punto anterior sobre Tomcat, es decir crearemos los enlaces simbólicos en los distintos niveles de arranque manualmente.