Maxfer
Un sysadmin cualquiera
Un sysadmin cualquiera
22 mar
Desde el foro de xda-developers os traigo la manera de liberar vuestra HTC Desire sin tener que pagar ni un centimo.
Os dejo paso a paso lo que teneis que hacer:
1 – Descargar el siguiente archivo .iso (Rapidshare - Fileserve – Megaupload)
2 – Grabar la imagen en un CD o en un USB. Tambien se puede utilizar VMware o similares para cargar la imagen ISO.
3 – Arrancar el PC desde el CD o USB que acabamos de crear. En caso de que utilicemos VMware crear una máquina virtual y arrancar con la imagen ISO directamente.
4 – Apagar el movil
5 – Sacar la tarjeta SD y la tarjeta SIM
6 – Encendemos la desire presionando el boton de VOLUMEN ABAJO + ENCENDIDO, esto hará que la Desire arranque en HBOOT.
7 – Conectamos la Desire al PC (que nos muestra un mensaje en inglés esperando que pulsemos una tecla)
8 – Cuando en la pantalla del Desire ponga HBOOT USB PLUG pulsamos cualquier tecla en el ordenador.
9 – Estar atento a los mensajes que pone en el PC y si no hay ningun error, este proceso nos liberará el HTC Desire.
En algunos casos hay que hacerlo varias veces, pero funciona. Podeis comprobar que funciona en cualquier foro especializado (HTCmania o GSMSpain) o directamente en la fuente XDA-developers
21 ene
Voy a hacer un break en la temática normal del blog, pero puede serle útil a mucha gente.
No es la solución definitiva para saltarse el recaptcha pero funciona bastante bien.
Captchatrader es una web en la que puedes solucionar varios captchas de otros usuarios de golpe y acumular puntos que a su vez pueden ser intercambiados por captchas solucionados por otros usuarios. Es decir, entras en la web y vas solucionando captchas un rato, mientras vas acumulando puntos. Cuando tienes algo que descargar en el Jdownloader puedes utilizar esos puntos para que otros usuarios te solucionen los captchas gracias a un plugin para el programa.
Si os interesa la idea os podeis dar de alta mediante el siguiente link, así me ponéis como referente y me darán puntos por cada captcha que resolvais (no os perjudica de ningún modo):
9 dic
He visto, gracias a Google Analytics, que hay gente que llega a mi blog buscando cómo comprobar que el servicio ssh está activo; por lo que he decidido crear esta entrada y así darles una solución.
En un sistema linux, tienes varias formas de comprobarlo.
Lo primero que se tiene que probar es mirar si el proceso del demonio SSH está corriendo:
$ ps -ef | grep sshd root 823 1 0 08:52 ? 00:00:00 /usr/sbin/sshd
Si no sale ningún proceso, es que el demonio no está arrancado. En la mayoría de distribuciones lo podremos arrancar ejecutando lo siguiente:
$ /etc/init.d/sshd start
Si el proceso está corriendo, verificamos el puerto por donde está escuchando el servidor:
$ grep Port /etc/ssh/sshd_config
Si el fichero /etc/ssh/sshd_config, debes realizar una búsqueda de este fichero en el sistema:
$ locate sshd_config
o
$ find / -name sshd_config
Normalmente el puerto de escucha del servidor SSH es el 22 pero puede haberse modificado. Una vez tengamos el puerto, comprobamos que el servidor está escuchando:
$ netstat -na | grep 22
Se nos mostrará un listado de conexiones entre las que estarán las que se refieran al puerto 22, tenemos que ver una similar a esta:
tcp 0 0 0.0.0.0:22 0.0.0.0:* ESCUCHAR
En lugar de ESCUCHAR es posible que se muestre LISTEN si la distribución está en inglés.
Si todos los puntos anteriores están correctos y aún así no podemos conectarnos, podemos comprobar la configuración de la iptables:
$ /etc/init.d/iptables status
15 nov
1. Darle un valor por defecto a un parámetro:
${1:-valorPorDefecto}
También se puede utilizar el símbolo :=, pero la variable destino debe tener ya un valor. Por lo que no se puede utilizar en los parámetros de entrada de un programa ya que las variables no tienen un valor inicial:
${var:=value}
2. Mostrar un error si no se pasa un parámetro y parar la ejecución del script:
${var?Error, la variable no se ha definido}
${var?Error, la variable no se ha definido o está vacía}
Se puede rizar el rizo un poco más y además de dar un error ejecutar un comando, en nuestro ejemplo hacemos un cat de un fichero:
"${1:?Error, falta el parámetro $(cat $HOME/leeme.txt)}"
3. Mostrar la longitud de una variable:
${#var}
4. Borrar un patrón de la parte delantera del valor de una variable.
Para borrar la mínima parte del patrón
${var#patrón}
Para borrar la máxima parte del patrón:
${var##patrón}
Por ejemplo:
$> path=/home/user1/dir1/text.txt
$> echo ${path#*/}
home/user1/dir1/text.txt
$> echo ${path##*/}
text.txt
5. Borrar un patrón de la parte trasera del valor de una variable. Es totalmente equivalente al punto anterior.
Para borrar la mínima parte del patrón
${var%patrón}
Para borrar la máxima parte del patrón:
${var%%patrón}
6. Reemplazar texto en una variable:
${var/Patrón/Reemplazo}
7. Seleccionar parte del texto de una variable:
${var:inicio}
${var:inicio:longitud}
Por ejemplo:
$> var="0034914434343"
$> echo "El teléfono es ${var:4}"
El teléfono es 914434343
$> echo "El prefijo es ${var:0:4}"
El prefijo es 0034
9 nov
Para acceder vía SSH a nuestro NAS de Iomega lo primero que debemos hacer es comprobar que el servidor de SSH está activado. Podemos hacerlo de dos formas:
Una vez activado el servicio SSH nos conectaremos como root al NAS vía SSH y como password utilizaremos soho seguido de nuestro password de admin, en nuestro ejemplo el password sería “sohosecreto“.
3 nov
Si al intentar desmontar una unidad en red os da un mensaje como el siguiente:
umount: /media/disk: device is busy umount: /media/disk: device is busy
Primero os podéis asegurar de que no hay ningún proceso que está escribiendo en la unidad con los comandos siguientes:
$ fuser -m /dev/sdc1 /dev/sdc1: 538 $ ps auxw | grep 538 donncha 538 0.4 2.7 219212 56792 ? SLl Feb11 11:25 rhythmbox
Ahí tenéis el culpable de que no se pueda desmontar.
Pero hay casos en que el problema es que el servidor remoto ya no está disponible y no hay forma de desmontar la unidad. En ese caso se puede utilizar el flag -l (lazy) del comando umount:
$ umount -l /dev/sdc1
29 oct
Si tienes problemas con el intercambio de claves SSH, has comprobado que has hecho bien el intercambio y con el flag -v no obtienes más información asegurate que el directorio .ssh del usuario en la máquina destino tiene los permisos correctos. He perdido media hora hasta que le he quitado los permisos de escritura de grupo.
29 oct
1. Creo una partición en cada disco nuevo
$ fdisk /dev/cciss/c0d1 "n" : Para crear una nueva partición "p" : Partición primaria "1" : Primera partición Enter : Primer cilindro Enter : Último cilindro "t" : Escoger el tipo de partición "8e" : Tipo Linux LVM "w" : Guardar los cambios en el disco y salir
Si hay varios discos se debe hacer para cada uno de ellos cambiando la ruta /dev/cciss/c0d1 por la ruta del disco.
2. Formateo la(s) nueva(s) partición(es):
$ mkfs -t ext3 -c /dev/cciss/c0d1p1
3. Añado la nueva partición al VG:
$ pvcreate /dev/cciss/c0d1p1 $ vgextend VolGroup00 /dev/cciss/c0d1p1
4. Hago crecer el LV:
$ lvextend -L +738G /dev/VolGroup00/LogVol00 $ resize2fs /dev/VolGroup00/LogVol00
28 oct
Para tener varias instancias de Tomcat corriendo en un mismo servidor y no morir en el intento tengo un par de trucos para que a la hora de administrarlos no sea un infierno.
1 – Se instala tomcat normalmente:
apt-get install tomcat5.5 apt-get install tomcat6
yum install tomcat5 yum install tomcat6
up2date tomcat5 up2date tomcat6
2 – Creamos un directorio donde tendremos cada una de las instancias de Tomcat, por ejemplo:
mkdir /opt/tomcat-instances
Y para cada instancia su directorio:
mkdir /opt/tomcat-instances/server1 mkdir /opt/tomcat-instances/server2 mkdir /opt/tomcat-instances/server3
3 – Para cada una de las instancias que queremos creamos el siguiente árbol de directorios:
mkdir /opt/tomcat-instances/server1/conf mkdir /opt/tomcat-instances/server1/logs mkdir /opt/tomcat-instances/server1/temp mkdir /opt/tomcat-instances/server1/webapps mkdir /opt/tomcat-instances/server1/work
4 – Copiaremos los ficheros del directorio conf de la instalación estándar de Tomcat a cada uno de los directorios conf de nuestras instancias:
cp -pr /usr/share/tomcat5/conf/* /opt/tomcat-instances/server1/conf/ cp -pr /usr/share/tomcat5/conf/* /opt/tomcat-instances/server2/conf/ cp -pr /usr/share/tomcat5/conf/* /opt/tomcat-instances/server3/conf/
5 – Editamos el fichero server.xml del directorio conf de cada una de nuestras instancias, tenemos que cambiar los puertos de cada instancia para que no haya coincidencias. Son 3 puertos por instancias:
<Server port="8190" shutdown="SHUTDOWN">
<Connector port="8090" maxHttpHeaderSize="8192" ...
<Connector port="8290" ...
Podemos poner numeros consecutivos para identificar más facilmente los puertos, por ejemplo, para el server1 usar los puertos 8191, 8091 y 8291; para el server2, el 8192, 8092 y 8292; etc.
6 – Creamos un directorio /opt/bin y por cada instancia creamos un fichero llamado entorno_NOMBRE_INSTANCIA.sh, en nuestro caso de ejemplo:
touch /opt/bin/entorno_server1.sh touch /opt/bin/entorno_server2.sh touch /opt/bin/entorno_server3.sh
En cada uno de estos ficheros cargaremos el entorno y las diferentes opciones de arranque de las instancias Tomcat. Un ejemplo sería el siguiente:
#!/bin/sh JAVA_HOME=/usr/java/default CATALINA_HOME=/usr/share/tomcat5 CATALINA_BASE=/opt/tomcat-instances/server1 JAVA_OPTS="-server -Duser.language=es -Duser.region=ES -Xmx256m -XX:MaxPermSize=128m -Djava.awt.headless=true" export JAVA_HOME JAVA_OPTS CATALINA_HOME CATALINA_BASE
7 – Creamos un fichero shutdown_generic.sh en el directorio /opt/bin con el siguiente contenido:
#!/bin/sh
my=`whoami`
instance=`echo $0 | cut -d '_' -f 2-`
if [ $my = root ]
then
su - tomcat5 -c ". /opt/bin/entorno_${instance}; /opt/bin/shutdown.sh"
elif [ $my = tomcat5 ]
then
. /opt/bin/entorno_${instance};
/opt/bin/shutdown.sh;
else
echo "Ejecutar como usuario root o tomcat5."
Este fichero nos permite arrancar las instancias con el usuario tomcat5 (cambiar por el equivalente en el sistema). Si se ejecuta con el usuario root, el script utiliza el comando “su” para arrancar la instancia como tomcat5.
8 – Equivalentemente creamos un fichero en el directorio /opt/bin llamado startup_generic.sh con el siguiente contenido:
#!/bin/sh
my=`whoami`
instance=`echo $0 | cut -d '_' -f 2- | cut -d '.' -f 1`
if [ $my = root ]
then
su - tomcat5 -c ". /opt/bin/entorno_${instance}.sh; > /opt/tomcat-instances/${instance}/logs/catalina.out; > /opt/tomcat-instances/${instance}/logs/gc.log; nohup /opt/bin/startup.sh"
elif [ $my = tomcat5 ]
then
. /opt/bin/entorno_${instance}.sh;
> /opt/tomcat-instances/${instance}/logs/catalina.out
> /opt/tomcat-instances/${instance}/logs/gc.log
nohup /opt/bin/startup.sh;
else
echo "Ejecutar como usuario root o tomcat5."
fi
Este script además de arrancar la instancia de Tomcat, borra los logs catalina.out y gc.out, en un entorno de producción sería conveniente otro sistema para el tratamiento de logs y no recomiendo estas instrucciones.
9 – Por último creamos enlaces simbólicos hacia los scripts genéricos con el nombre de cada instancia:
$ ln -s startup_generic.sh startup_server1.sh $ ln -s startup_generic.sh startup_server2.sh $ ln -s startup_generic.sh startup_server3.sh $ ln -s startup_generic.sh shutdown_server1.sh $ ln -s startup_generic.sh shutdown_server2.sh $ ln -s startup_generic.sh shutdown_server3.sh
10 – Para arrancar una instancia únicamente tendremos que ejecutar el script correspondiente.
Para el server1:
$ /opt/bin/startup_server1.sh
Para el server2:
$ /opt/bin/startup_server2.sh
Etc.
Igualmente a la hora de parar la instancia:
Para el server1:
$ /opt/bin/shutdown_server1.sh
Para el server2:
$ /opt/bin/shutdown_server2.sh
Etc.
28 oct
Para automatizar el acceso SSH a cualquier servidor linux podemos utilizar el sistema de intercambio de claves.
Tenemos por ejemplo el usuario “user1″ de la máquina origen que se quiere conectar automáticamente (sin password) a la cuenta del usuario “user2″ de la máquina destino. El procedimiento sería el siguiente:
1 – En la máquina cliente (desde la que nos vamos a conectar) debemos crear (si no existe ya) un par de claves pública/privada desde el usuario que utilizaremos para hacer login
user1@origen$ ssh-keygen -t rsa
Durante el proceso nos preguntarán donde queremos dejar las claves (por defecto en el directorio .ssh de nuestro home) y un password para cifrar las claves (que podemos dejar vacío si queremos utilizar las claves para automatizar procesos).
Se habrán creado dos ficheros en $HOME/.ssh:
/home/user1/.ssh/id_dsa /home/user1/.ssh/id_dsa.pub
2 – En la máquina servidor (a la que nos queremos conectar) debemos copiar el contenido de la clave púbica $HOME/.ssh/id_dsa.pub de la máquina cliente en el archivo de $HOME/.ssh/authorized_keys del home del usuario que vamos a utilizar para conectarnos.
Podemos copiarlo con un scp o simplmente hacer un copy&paste desde las consolas:
user1@origen$ scp /home/user1/.ssh/id_dsa.pub user2@destino:/home/user2/.ssh/authorized_keys
3 – Hay que asegurarse que en la configuración del servidor SSH del destino está habilitado el acceso con claves:
user2@origen$ grep PubkeyAuthentication /etc/ssh/sshd_config PubkeyAuthentication yes
4 – Una vez hecho esto cuando el usuario user1 se intente conectar a la máquina destino con la cuenta user2 no se le pedirá password.