Cuando hago una copia de un disco virtual e intento arrancarla en una nueva máquina virtual con Virtual Box, aparece un error diciendo que el UUID del disco ya existe.
Para solucionar esto podemos cambiar la UUID del disco virtual .vdi copiado con el siguiete comando desde MS-DOS:
C:\Program Files\Oracle\VirtualBox>VBoxManage.exe internalcommands sethduuid "C:\HDfile.vdi"
UUID changed to: 1727a910-2037-4d8d-866b-ae6d52c5a6cd
y problema resuelto.
23 de agosto de 2013
Python: ejecutando comandos linux
Para ejecutar comandos de Linux desde Python podemos usar los módulos os y commands.
Con os se ejecuta el comando ls y retorna un bit de ejecución, no el resultado del comando:
import os
out = os.system("ls")
Si necesitamos el resultado del comando linux ejecutado usar commands:
import commands
out = commands.getoutput("ls")
Con os se ejecuta el comando ls y retorna un bit de ejecución, no el resultado del comando:
import os
out = os.system("ls")
Si necesitamos el resultado del comando linux ejecutado usar commands:
import commands
out = commands.getoutput("ls")
18 de agosto de 2013
Colorizando Scripts en Php CLI ... y en Bash
#!/usr/bin/php
echo "\033[31m Texto en color rojo \033[0m\n";
die;
\033[0m : vuelve el color de la consola al color por defecto, importante!! ya que si no se pone cambias el color de la consola al salir del script.
el número XX de los códigos \033[XXm determinal el color y formato del texto según esta tabla:
Style Foreground Background 1st Digit 2nd Digit 3rd Digit 0 - Reset 30 - Black 40 - Black 1 - FG Bright 31 - Red 41 - Red 2 - Unknown 32 - Green 42 - Green 3 - Unknown 33 - Yellow 43 - Yellow 4 - Underline 34 - Blue 44 - Blue 5 - BG Bright 35 - Magenta 45 - Magenta 6 - Unknown 36 - Cyan 46 - Cyan 7 - Reverse 37 - White 47 - White
Pudiendo combinarlos, por ejemplo: fondo blanco, texto negro: \033[30;47m
Y ya que estamos ...esto es aplicable para Colorizar Bash Scripts:
#!/bin/bash
echo -en "\033[31m Texto en color rojo \033[0m\n"
echo -en "\033[30;47m Negro sobre Blanco \033[0m\n"
Para añadir un poco de color a nuestras vidas en CommandLine !!!
Ref.:
http://ubuntulife.wordpress.com/2011/04/10/los-codigos-de-color-en-bash/
http://praxis.edoceo.com/howto/bash
13 de agosto de 2013
Eliminando los banners del sevidor apache2
Editar el archivo:
# nano /etc/apache2/conf.d/security
y descomentar solo las lineas:
ServerTokens Minimal
ServerSignature Off
TraceEnable Off
y reiniciar apache2
# service apache2 restart
Ahora ya no aparecerán banners con información del servidor apache2 ni del sistema operativo de la máquina al producirse algún error.
Ref.:
http://www.securityartwork.es/2012/02/22/bastionado-de-un-servidor-web-apache-i/
# nano /etc/apache2/conf.d/security
y descomentar solo las lineas:
ServerTokens Minimal
ServerSignature Off
TraceEnable Off
y reiniciar apache2
# service apache2 restart
Ahora ya no aparecerán banners con información del servidor apache2 ni del sistema operativo de la máquina al producirse algún error.
Ref.:
http://www.securityartwork.es/2012/02/22/bastionado-de-un-servidor-web-apache-i/
12 de agosto de 2013
Python: letra ñ de UTF-8 a LATIN-1
En un script en Python con codificación UTF-8, necesito la letra 'ñ' con codificación Latin-1 ...
¿Como paso la letra ñ de UTF-8 a Latin-1?
#!/usr/bin/python
# -*- encoding: utf-8 -*-
enieUtf8 = 'ñ'
enieLat1 = 'ñ'.decode("utf-8").encode("latin1","ignore")
Por supuesto que la letra 'ñ' del script se puede sustituir por cualquier otro caracter o variable para su recodificación en Latin-1.
¿Como paso la letra ñ de UTF-8 a Latin-1?
#!/usr/bin/python
# -*- encoding: utf-8 -*-
enieUtf8 = 'ñ'
enieLat1 = 'ñ'.decode("utf-8").encode("latin1","ignore")
Por supuesto que la letra 'ñ' del script se puede sustituir por cualquier otro caracter o variable para su recodificación en Latin-1.
11 de agosto de 2013
Cambiar directorio de MySQL y apparmor
En la entrada de misnotaslinux:
Bases de datos MySQL distribuidas en memoria USB
Bases de datos MySQL distribuidas en memoria USB
describía una técnica muy sencilla, que había utilizado con éxito para cambiar los directorios de trabajo de las bases de datos de MySQL, pudiendo alojarlos en memorias USB u otras unidades de disco.
Al intentar esto en mi nanoservidor domo, con Xubuntu 13.04: NO ha funcionado.
La razón es que Xubuntu tiene activado apparmor, que es un sistema de seguridad que bloquea el uso irregular de directorios extraños.
Al intentar cambiar el directorio de trabajo de MySQL a otra unidad, direccionándolo mediante un enlace, appArmor no lo permite.
Apparmor esta en SuSe y Ubuntu.
Protocolo:
# cp -a /var/lib/mysql /mnt/otraunidad
# mv /var/lib/mysql /var/lib/mysql.bck
# ln -s /mnt/otraunidad/mysql mysql
# service restart mysql
... esto no funciona a no ser que inactivemos appArmor para mysqld.
Solución 01:
# aptitude install apparmor-utils
# aa-complain /usr/sbin/mysqld
# service apparmor restart
# service apparmor restart
# service mysql restart
.. y ahora funciona mysql usando como directorio de trabajo /mnt/otraunidad/mysql
Con aa-complain hemos cambiado el protocolo de appArmor para mysqld y no lo bloquea sino que solo logea cuando ve algún comportamiento sospechoso como usar una directorio de trabajo diferente.
Solución 02:
Cambiar el perfil apparmor para mysqld:
# nano /etc/apparmor.d/usr.sbin.mysqld
añadimos las siguientes reglas para la nueva localización de la carpeta de MySQL:
/mnt/otraunidad/mysql/ r,
/mnt/otraunidad/mysql/** rwk,
# service apparmor restart
# service mysql restart
# service mysql restart
Esta solución es mas elegante ya que no desactivas las medidas de seguridad de appArmor para MySQL.
Ref:
Cambiar ruta de MySQL con apparmor: http://www.ubuntu-es.org/node/113525#.UgbW6dJ7LzY
8 de agosto de 2013
Python: Encoding UTF8
Si en los scripts Python utilizas acentos, eñes u otros caacteres no ASCII me aparecen el error:
SyntaxError: Non-ASCII character '\xc3' in file ./yourPytonScript.py line 4, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
Para solucionarlo hay que indicar el encoding al principio del script python
#!/usr/bin/python
# -*- encoding: utf-8 -*-
...
SyntaxError: Non-ASCII character '\xc3' in file ./yourPytonScript.py line 4, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
Para solucionarlo hay que indicar el encoding al principio del script python
#!/usr/bin/python
# -*- encoding: utf-8 -*-
...
Ref.:
3 de agosto de 2013
Python: fecha y hora actual
#!/usr/bin/python
import datetime
now = datetime.datetime.now()
print now
Result:
2013-08-03 01:32:27.711721
Para formatear la salida de la fecha:
import time
datetime.datetime.now().strftime('%d/%m/%Y')
Ref.:
http://www.pythonforbeginners.com/basics/python-datetime-time-examples/
http://www.tutorialspoint.com/python/time_strftime.htm
import datetime
now = datetime.datetime.now()
print now
Result:
2013-08-03 01:32:27.711721
Para formatear la salida de la fecha:
import time
datetime.datetime.now().strftime('%d/%m/%Y')
Ref.:
http://www.pythonforbeginners.com/basics/python-datetime-time-examples/
http://www.tutorialspoint.com/python/time_strftime.htm
1 de agosto de 2013
Python: Conectar con MySQL
Para conectar desde Python con bases MySQL se puede hacer con MySQLdb.
Para instalar MySQLdb en Debian:
# aptitude install python-mysqldb
Scrip Python para conectar con MySQL:
#!/usr/bin/python
#1)Cargar el modulo en el script python:
import MySQLdb
#2)Conectar con la base de datos:
db = MySQLdb.connect("host","Usuario","Password","BasedeDatos" )
#3)Preparar el objeto-cursor:
cursor = db.cursor()
#4)Ejecutar la consulta SQL y obtener resultados:
try:
cursor.execute("ConsultaSQL")
results = cursor.fetchall()
except:
print "Error de Conexión"
for registro in results:
print registro[0],"-",registro[1]
#6)Cerrar conexión con la base de datos:
Ref.:
http://www.tutorialspoint.com/python/python_database_access.htm
Para instalar MySQLdb en Debian:
# aptitude install python-mysqldb
Scrip Python para conectar con MySQL:
#!/usr/bin/python
#1)Cargar el modulo en el script python:
import MySQLdb
#2)Conectar con la base de datos:
db = MySQLdb.connect("host","Usuario","Password","BasedeDatos" )
#3)Preparar el objeto-cursor:
cursor = db.cursor()
#4)Ejecutar la consulta SQL y obtener resultados:
try:
cursor.execute("ConsultaSQL")
results = cursor.fetchall()
except:
print "Error de Conexión"
#5)Presentar datos obtenidos de la base de datos:
print "Datos Obtenidos"for registro in results:
print registro[0],"-",registro[1]
#6)Cerrar conexión con la base de datos:
db.close()
Ref.:
http://www.tutorialspoint.com/python/python_database_access.htm
Python: Funciones
Definición de la función:
def nombrefuncion (argumento1, argumento2):
'''Aqui puede ir el docstring, que es info sobre la función'''
y = argumento1 + argumento2
return y
return indica el valor de retorno de la función.
Ejecución de la función:
nombrefuncion (argumento1, argumento2)
Ref.:
https://sites.google.com/site/cursodepython/primer-clase/argumentos-de-funciones
Suscribirse a:
Entradas (Atom)