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.
12 de agosto de 2013
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
28 de julio de 2013
Nuevo nanoServer Domo
Después de 4 años de funcionamiento intenso e ininterrumpido, solo puedo felicitar al pequeño micra, que se ha portado y sigue comportándose de forma excelente.
http://misnotaslinux.blogspot.com.es/2009/11/micra-server.html
Pero la tecnología y mis exigencias avanzan y ha llegado el momento de buscarle un hermano mayor al pequeño micra, dentro de la gama de nanoPc, de bajo consumo, silenciosos, ... para encenderlo y olvidarte de él.
De las maquinas actuales de esta categoría que he revisado me he quedado con el: Foxconn Netbox NT-A3500

El procesador AMD E350 es de 64 bits, de doble núcleo, con virtualización AMD-V y lanzado al mercado en 2011.
http://www.cpu-world.com/CPUs/Bobcat/AMD-E%20Series%20E-350%20-%20EME350GBB22GT.html
Como ventajas respecto a micra, desde luego la potencia y capacidad de almacenamiento con HD 2,3 SATA, 4 USB 2.0, 3 USB 3.0, ... y como punto negativo a priori que no es fanless, aunque hay que ver el ruido que hace y su durabilidad con un uso continuado.
Mi idea es instalar Linux, un sistema debian o basado en debian: Ubuntu, Xubuntu ó Lubuntu.
Quiero que sea servidor doméstico: ssh, samba, MySQL, Web, Virtualbox, ... y también un servidor multimedia, media center - SmartTV.
Para ello configurare dos modos de trabajo, que se pueda pasar de uno a otro según necesidades.
- Modo Server: sin entorno gráfico, (default).
- Modo HTPC: con entorno gráfico.
Con Domo ya tengo entretenimiento para este verano, ... y espero que para unos cuanto años.
pd: micra seguirá activo y pero que muy muy activo.
http://misnotaslinux.blogspot.com.es/2009/11/micra-server.html
Pero la tecnología y mis exigencias avanzan y ha llegado el momento de buscarle un hermano mayor al pequeño micra, dentro de la gama de nanoPc, de bajo consumo, silenciosos, ... para encenderlo y olvidarte de él.
De las maquinas actuales de esta categoría que he revisado me he quedado con el: Foxconn Netbox NT-A3500
Comercializado en España por VANT con el nombre de Domo3:
Sus características son:
| Modelo | F354T |
| Referencia | 81DOM3F354T |
| Memoria RAM | 4GB DDR3 |
| Chipset | AMD Fusion (A45FCH) |
| Disco duro | 1TB SATA2 2.5” |
| Formato | Mini-ITX |
| Dimensiones | 190 x 25 x 135 mm |
| Procesador | AMD E350 1,6GHz |
| Gráficos | Radeon HD6310 |
| Unidad óptica | No |
| Otros | Multilector flash MMC/SD/MS |
| Sonido | 7.1 canales a través de S/PDIF. Altavoz interno |
| Red | Gigabit |
| WIFI | 802.11b/g/n |
| VGA | Mediante adaptador incluido |
| DVI | SI |
| HDMI | SI |
| PS/2 | NO |
| USB 2.0 | 4 |
| USB 3.0 | 2 |
| Bluetooth | NO |
| Serie | NO |
| Paralelo | NO |
| Audio frontal | MIC y EAR frontales |
| Audio trasero | S/PDIF |
| Sistema operativo | Ubuntu Linux 12.04.1 preinstalado, configurado y con aplicaciones extra instaladas |
| Garantía | 2 años |
| Otros | Sopote VESA |
El procesador AMD E350 es de 64 bits, de doble núcleo, con virtualización AMD-V y lanzado al mercado en 2011.
http://www.cpu-world.com/CPUs/Bobcat/AMD-E%20Series%20E-350%20-%20EME350GBB22GT.html
Mi idea es instalar Linux, un sistema debian o basado en debian: Ubuntu, Xubuntu ó Lubuntu.
Quiero que sea servidor doméstico: ssh, samba, MySQL, Web, Virtualbox, ... y también un servidor multimedia, media center - SmartTV.
Para ello configurare dos modos de trabajo, que se pueda pasar de uno a otro según necesidades.
- Modo Server: sin entorno gráfico, (default).
- Modo HTPC: con entorno gráfico.
Con Domo ya tengo entretenimiento para este verano, ... y espero que para unos cuanto años.
pd: micra seguirá activo y pero que muy muy activo.
25 de julio de 2013
Proteger Carpetas y Ficheros en Linux y en Samba
Pongamos que queremos proteger unas carpetas personales de la mirada de otros usuarios, de modo que estas carpetas y los ficheros que contienen solo puedan ser vistas por el usuario.
Por defecto los permisos en Linux son:
Carpetas: 777 = rwx rwx rwx
Ficheros: 666 = rw- rw- rw-
Con la máscara 022
Lo que hace:
Carpetas: 777 - 022 = 755 = rwx r-x r-x
Ficheros: 666 - 022 = 644 = rw- r-- r--
De modo que por defecto Linux crea carpetas y ficheros que únicamente son modificables por el usuario pero que pueden ser vistos y copiados por todos los usuarios.
Esto es un problema cuando hay información sensible que se quiere proteger.
Para impedir que los directorios y ficehros sean visibles por otros usuarios tenemos que cambiar los permisos de las carpetas y los ficheros a:
Carpetas: 700 = rwx --- ---
Ficheros: 600 = rw- --- ---
Si ya tenemos una carpeta llamada "mycarpeta" y queremos cambiar los permisos de todo su contenido podemos hacerlo:
# chmod -R go-rwx mycarpeta
Para cambiar los permisos de las carpetas y ficheros que se crean por defecto en un usuario hay que modificar los ficheros .bashrc y .profile de su directorio personal y añadir:
umask 077
de este modo hemos cambiado la mascara que se aplica a los permisos por defecto que tiene linux para las las nuevas carpetas y ficheros que cree este usuario. Los permisos quedarian:
Carpetas: 777 - 077 = 700 = rwx --- ---
Ficheros: 666 - 077 = 600 = rw- --- ---
Los directorios y ficheros solo seran visibles y modificables por el usuario y el root.
Nota: para recargar el fichero .bashrc, hacer:
$ su usuario.
Si otro usuario intentara listar el directorio ...
$ ls mycarpeta
ls: no se puede abrir el directorio mycarpeta: Permiso denegado
En samba:
para poner una mascar en los archivo de los usuarios que accedan por samba, hay que modificar el fichero /etc/samba/smb.conf del siguiente modo:
[mycarpeta]
create mask = 0700
Ref:
http://www.ite.educacion.es/formacion/materiales/85/cd/linux/m1/permisos_de_archivos_y_carpetas.html
http://www.lasticenelaula.es/portal/index.php/linux-mint/679-cambiando-los-permisos-a-archivos-y-carpetas-en-linux-mint-y-ubuntu
http://blog.manuelviera.es/2012/06/entendiendo-umask/
http://www.ite.educacion.es/formacion/materiales/85/cd/linux/m4/gestin_de_usuarios_grupos_y_permisos_de_samba.html
Resumen de los permisos:
Cód Binario Permisos efectivos
0 0 0 0 - - -1 0 0 1 - - x
2 0 1 0 - w -
3 0 1 1 - w x
4 1 0 0 r - -
5 1 0 1 r - x
6 1 1 0 r w -
7 1 1 1 r w x
25 de junio de 2013
Proteger un directorio web con contraseña con apache2
En un servidor web con apache2 necesitamos proteger el acceso a una carpeta con password,¿como hacerlo?
Protocolo:
1) Creamos el directorio:
# mkdir /var/www/pub
2) Creamos fichero del passwords en el directorio /etc/apache2/:
# cd /etc/apache2
# htpasswd -c .htpasswd usuario
3) Modificamos el fichero /etc/apache2/sites-available/default creando una sección Directory con el nombre de la carpeta y la siguiente configuración:
# nano /etc/apache2/sites-available/default
Options -Indexes MultiViews FollowSymLinks
AllowOverride All
Order deny,allow
Allow from All
4) Creamos el fichero /var/www/pub/.htaccess
# nano /var/www/pub/.htaccess
AuthName "Directorio privado"
AuthUserFile /etc/.htpasswd
require valid-user
5) Reiniciamos apache2
# service apache2 restart
Al intentar acceder a este directorio desde el navegador web, aparecerá una pantalla que nos pedira el user y password para acceder.
8 de junio de 2013
Instalando KDE4 en Debian7.0 Wheezy
Tengo una maquina AMD 2400+ con ATI Raedon9200 en la que que no me funciona gnome3 ya que no hay forma de configurar la aceleración 3D en la tarjeta gráfica.
De modo que voy a instalar KDE.
Protocol:
Con Debian 7.0 Wheezy instalado con gnome.
1) # aptitude update
2) # aptitude install kde-full
Esto instala todo el sistema d escritorio KDE con todas sus aplicaciones.
Son 1585 MB en disco. !!
3) Con esto tendré instalado ambos sistemas de escritorios pudiendo elegir con cual arranco desde gdm o kdm.
Una vez configurado y probado me plantearé desinstalar gnome para liberar espacio del disco.
Update: Finalmente KDE-Plasma no funciona en mi sistema, la tarjeta gráfica me da problemas. Si que he podido usar KDE-OpenBox, seleccionando esta opción desde KDM.
Ref.:
http://diversidadyunpocodetodo.blogspot.com.es/2013/05/debian-wheezy-instalar-entorno-escritorio-adicional-kde-gnome.html
Suscribirse a:
Entradas (Atom)






