viernes, 21 de octubre de 2016

Cifrado

http://www.muylinux.com/2014/07/23/cifrado-disco-ubuntu
http://www.redeszone.net/2014/05/06/como-cifrar-archivos-desde-un-terminal-en-ubuntu/
http://wasesores.com/cifrar-discos-o-particiones-en-linux-ubuntu/

a = 4
e = 3
i = 1
i = !
o = 0
~~~~
l = 1
s= 5
t = 7
b= |3
k = |<
u = |_|
===========  REGLAS CRYPT ============
~~~~~
a = 4
e = 3
i  = !
o = 0
~~~~
espacio = -
ñ = n*
s = 5
f/t = 7
z = 2
~~~~
* Siempre debe haber una mayuscula al menos
* Al menos un simbolo de preferencia dos y no repetidos (por eso siempre hay que buscar una i, un espacio y una ñ en la frase)
* Primera letra en mayuscula, si la primera es crypt entonces la que sigue se pone en mayuscula
~~~~

https://password.es/comprobador/
http://password.social-kaspersky.com/es

=========CIFRADO SSL ===============
https://www.digitalocean.com/community/tutorials/how-to-create-an-ssl-certificate-on-nginx-for-ubuntu-14-04

========================= CIFRADO EN ODROID ============
http://forum.odroid.com/viewtopic.php?f=112&t=10918
https://trick77.com/how-to-encrypt-odroid-c1-ubuntu-root-filesystem-dm-crypt-luks/

https://www.gnu.org/software/parted/manual/html_chapter/parted_2.html


http://forum.odroid.com/viewtopic.php?f=8&t=74  <-- p="" temperature="">sudo cat /sys/devices/virtual/thermal/thermal_zone0/temp

viernes, 25 de octubre de 2013

Rails, default_scope y readonly

Desde que empece a usar rails me sorprendió la facilidad de configuración, prácticamente cada cosa que quieras hacer es posible con alguna funcionalidad existente, sin embargo a veces una configuración puede darte algunos dolores de cabeza, por ejemplo, digamos que tengo una tabla/objeto clientes y otro que depende de ella a la cual le queremos agregar una condición que necesita referenciar a la otra tabla:

class AccountClient < ActiveRecord::Base
  default_scope joins(:account).where('accounts.deleted=?',0).
  belongs_to :account
end

Y todo funcionaba aparentemente perfecto, sin embargo fue hasta la hora de subir a producción que se intentó insertar algún registro y apareció el siguiente error:

ActiveRecord::ReadOnlyRecord (ActiveRecord::ReadOnlyRecord)

Después de navegar un rato por la red resulta que cuando realizas un default_scope que tiene un join se activa por default el readonly y por lo tanto hay que desactivarlo de la siguiente manera:

  default_scope joins(:account).where('accounts.deleted=?',0).readonly(false)

Ahora, yo estoy utilizando rails 3.2.3 y 3.2.6, en algún sitio leí que readonly tiene un bug en la versión 4 así que hay que tener cuidado a la hora de migrar. Sigo buscando otras formas de corregirlo.

lunes, 21 de octubre de 2013

Fedoreando

Fedoración 1:
Fedora es un poco estricto en cuanto a los permisos del firewall, basicamente tiene todo bloqueado y la configuración del firewall no es nada intuitiva así que a veces es necesario darle una desactivada general al firewall para evitarnos algún dolor de cabeza:

systemctl stop firewall.service

Lo volvemos a arrancar con un start o al reiniciar la máquina lo hará automáticamente.

Fedoración 2:
Gnome 3 a veces da algo de lata, a veces deja de recibir ordenes del teclado y practicamente vuelve tu escritorio de solo lectura, muchos recomiendan darle una reseteada a gnome tecleando Alt+F2 e insertando el comando "r" pero como en este caso gnome no responde al teclado esto se vuelve un poco más que inútil, este es un bug del que no he encontrado referencia alguna y lo padezco desde fedora 17, pero en fin, hace poco encontre como solucionar este problema de forma temporal:

1. Entramos a alguna consola virtual con Ctrl+Alt+F2, Ctrl+Alt+F3 ... Ctrl+Alt+FN donde N=6, no olvidemos que en Fedora la consola grafica es Ctrl+Alt+F1
2. Le damos kill al gnome
   killall gnome.-shell
3. Reiniciamos el entorno gráfico en segundo plano:
  DISPLAY=:0 gnome-shell &
4. Volvemos a la consola gráfica (Ctrl+Alt+F1) y observamos alegremente como se reinicia gnome sin cerrar tus ventanas con tu trabajo intacto

Por cierto, a menos que sean gringos cuando entren a alguna consola sufrirán con la configuración del teclado, para configurar el teclado utilicen el siguiente comando:

loadkeys /usr/lib/kbd/keymaps/i386/qwerty/la-latin1.map.gz

Me costó mucho trabajo encontrar el comando que funcionara ya que no me respondía el comando localectl, pero aun mas trabajo me costo encontrar donde estaban ubicados los keymaps correctos. Les ahorre jale, de nada.

Version Utilizada para este post: Fedora 18 (15 enero 2013)
Version Actual: Fedora 19 (2 julio 2013)

Locuras con el comando find

Recibí mas de un GB de archivos comprimidos en decenas de carpetas y necesitaba descomprimirlos todos dentro de sus mismas carpetas y no me hiba a poner a hacerlo de uno en uno, entonces se me ocurrio usar el comando find, al principio pensaba meter todo en un archivo y hacer un bash script para hacer un loop, pero  navegando encontre como mezclarlo con xargs sin necesidad de loops, veamos:

find ./ -name '*.rar' -printf "\"%f\"\n"

Busca todos los archivos con extensión rar y luego despliega las rutas encerradas en comillas.
%f   el nombre  del archivo encontrado
%h  la ruta relativa del archivo (empezando por .)
%p  digamos que es %h + %f

Extraer todos los rar en la misma carpeta donde se encuentra:
find ./ -name '*.rar' -printf "\"%p\"\n\"%h\"\n" |xargs -n2 unrar x -y

Eliminar todos los rar despues de descomprimir:
find ./ -name '*.rar' -printf "\"%p\"\n" |xargs rm

Después me encontre con algunos problemitas, el primero fue que había archivos que tenían la extensión en mayúsculas, lo que dificultaría posteriormente hacer algún procedimiento, entonces para renombrar las extensiones de los archivos ejecuté:

find ./ -name "*.PDF" -exec rename .PDF .pdf {} \;

Antes de hacer estó intenté realizarlo con el comando rename, y me voy enterando de que este tiene 2 versiones, una que pertenece a linux-utils y otra que pertenece a perl, algunas distros traen una, algunas otra, en mi caso tengo fedora 19 el cual trae la de linux-utils, la principal diferencia es que la de perl acepta expresiones regulares, por lo que podemos modificar archivos de forma masiva, no tuve oportunidad de probar el rename basado en perl y desconozco si tiene recursividad, sin embargo me parece mas útil el uso con find.

El segundo problema con el que me encontre fue que muchos pdf estaban protegidos y otros tantos dañados, entonces que flojera abrir cada archivo para ver si te pide password, se me ocurrio usar la utilidad qpdf que te devuelve un "invalid password" y otros errores cuando intentas manipular el archivo, estos fueron enviados a un archivo temporal con el siguiente comando:

find . -name "*.pdf" -exec qpdf --show-encryption {} \; 2&> temp_file

Los archivos con errores fueron eliminados manualmente ya que no eran tantos, el tercer problema era quitarle el password a todos los archivos que lo tenían, aquí si tuve que recurrir al archivo temporal y a un script para recorrerlos:

  #!/bin/bash
  while read LINEA ; do
    MY_PATH=${LINEA:0:-18}
    qpdf --password=$PASSWORD --decrypt "$MY_PATH" "./tmp/$MY_PATH"
    rm "$MY_PATH"

  done > temp_file

jueves, 1 de octubre de 2009

COPIAR ARCHIVOS DE UN SERVIDOR LINUX DESDE WINDOWS

Instalamos el pscp de putty y lo metemos en System32, entonces ejecutamos lo siguiente:

C:\Windows>pscp -P 5201 -pw 12345 usuario@127.1.1.1:/home/usuario/archivo C:/Temp

archivo | 1 kB | 1.2 kB/s | ETA: 00:00:00 | 100%

Algunos comandos utiles

Ver los procesos ordenados por padres, hijos y nietos:
ps -ejH

Hacer un respaldo de un directorio a otro:

sudo rsync -av /home/eturcott/ eturcott/

Hacer un respaldo incremental de un directorio a otro:

sudo rsync -avvb --delete --backup-dir=$PWD/directorio_$(date +%y%m%d%H%M) /home/directorio/ directorio/

Clonar un proyecto con git cuando la conexion ssh esta ofuscada en un puerto distinto al 22, en este ejemplo el puerto es 1234:

git clone ssh://git@127.1.1.1:1234/home/git/miproyecto.mx.git ./miproyecto.mx

Para escanear todos los puertos de una maquina:

sudo nmap -p 1-65535 127.1.1.1