KVM: Administrando máquinas virtuales por consola / KVM with virsh


Listar las Máquinas Virtuales

[root@test ~]# virsh list
 Id    Name                           State
----------------------------------------------------
 1     w2003                        running
 2     centos                       running
 4     fedora                       running

Apagar Máquina Virtual

# virsh shutdown centos

Reiniciar Máquina Virtual

# virsh reboot centos

Forzar / Detener Máquina Virtual

# virsh destroy centos

Obtener Información acerca de la Máquina Virtual

# virsh dominfo centos

Obtener información acerca del Nodo

[root@test ~]# virsh nodeinfo
CPU model:           x86_64
CPU(s):              24
CPU frequency:       1596 MHz
CPU socket(s):       1
Core(s) per socket:  6
Thread(s) per core:  2
NUMA cell(s):        2
Memory size:         32814444 kB

Editar Configuración de Máquina Virtual

# virsh edit centos

Instalar Máquina Virtual CenOS 5.5 utilizando un mirror http:

Con 512Mb de RAM, 4GB de espacio en disco y utilizando la interfaz de red br0 (bridged network).

# virt-install \
 -n centos \
 -r 512 \
 --vcpus=1 \
 --os-variant=rhel5.4 \
 --accelerate \
 -v \
 -l http://mirrors.kernel.org/centos/5.5/os/x86_64/ \
 -w bridge:br0 \
 --vnc \
 --disk path=/tmp/centos.img,size=4 

Podemos conectarnos a dicha máquina virtual haciendo un:

# virt-viewer centos

Ubicación de archivos log:

$HOME/.virtinst/virt-install.log
$HOME/.virt-manager/virt-manager.log
/var/log/libvirt/qemu

Ubicación de archivos de configuración:

/etc/libvirt/qemu/centos.xml

Otras herramientas que podemos utilizar para resolver problemas:

ps, pstree, top
vmstat, iostat, lsof
tcpdump, brctl, ip, ifconfig

entre otras.

 

 

Script: Añadir prefijo o sufijo a cada linea de archivo / Add prefix or postfix to each line of a file


Supongamos que tenemos un archivo de texto kk.txt con las siguientes lineas:

linea1
linea2
linea3

y queremos agregarle un prefijo a cada línea de ese archivo.

Opción 1: con sed

[hvivani@test ~]$ sed -e 's/^/prefix/' kk.txt
prefixlinea1
prefixlinea2
prefixlinea3

Opción 2: con nl

[hvivani@test ~]$ nl -s prefix kk.txt |cut -c7-
prefixlinea1
prefixlinea2
prefixlinea3

Opción 3: con awk

[hvivani@test ~]$ awk '{print "prefix"$0}' kk.txt 
prefixlinea1
prefixlinea2
prefixlinea3

Opción 4: con shell script

#!/bin/bash
prefix="prefijo"
file="kk.txt"
while read -r line
do
 echo "${prefix}$line"
done <$file > renombrado
mv renombrado $file

Si queremos agregarle un sufijo o postfijo a cada línea de ese archivo:

[hvivani@test ~]$ sed -e 's/$/prefix/' kk.txt
linea1prefix
linea2prefix
linea3prefix

Prefijos de códigos EAN – GS1 por países / Barcode prefix list


Este es un lista de prefijos utilizados en los códigos de barras comerciales EAN13.  Por ejemplo, si tomamos un artículo en el supermercado y miramos el código de barras,  es probable que comience con 779. Todos los productos registrados en Argentina comienzan con 779.

En Argentina, la base de datos de códigos de barras comerciales es regulada y almacenada por GS1.

Siempre viene bien tenerlos a mano…
000 – 019 Estados Unidos y Canadá
020 – 029 Distribución restringida (Definición MO)
03 Estados Unidos (medicamentos)
040 – 049 Distribución restringida (Definición MO)
05 Etiquetados especiales
060 – 099 Estados Unidos y Canadá
100 – 139 Estados Unidos (reservado para futuros usos)
200 – 299 Distribución restringida(Definición MO)
300 – 379 Francia y Mónaco
380 Bulgaria
383 Eslovenia
385 Croacia
387 Bosnia y Herzegovina
389 Montenegro
400 – 440 Alemania (el código 440 pertenecía a la República Democrática Alemana hasta la reunificación en 1990)
45 Japón
46 Rusia
470 Kirguistán
471 República de China
474 Estonia
475 Letonia
476 Azerbaiyán
477 Lituania
478 Uzbekistán
479 Sri Lanka
480 Filipinas
481 Bielorrusia
482 Ucrania
484 Moldavia
485 Armenia
486 Georgia
487 Kazajistán
488 Tayikistán
489 Hong Kong SAR
49 Japón
50 Reino Unido
520 – 521 Grecia
528 Líbano
529 Chipre
530 Albania
531 Macedonia
535 Malta
539 Irlanda
54 Bélgica y Luxemburgo
560 Portugal
569 Islandia
57 Dinamarca, Islas Feroe y Groelandia
590 Polonia
594 Rumania
599 Hungría
600 – 601 Sudáfrica
603 Ghana
604 Senegal
608 Baréin
609 Mauricio
611 Marruecos
613 Argelia
615 Nigeria
616 Kenia
618 Costa de Marfil
619 Túnez
621 Siria
622 Egipto
624 Libia
625 Jordania
626 Irán
627 Kuwait
628 Arabia Saudí
629 Emiratos Árabes Unidos
64 Finlandia
69 República Popular China
70 Noruega
729 Israel
73 Suecia
740 Guatemala
741 El Salvador
742 Honduras
743 Nicaragua
744 Costa Rica
745 Panamá
746 República Dominicana
750 México
754 – 755 Canadá
759 Venezuela
76 Suiza y Liechtenstein
770 – 771 Colombia
773 Uruguay
775 Perú
776 Perú CODIGO UTILIZADO POR DATA CODE PERU – EMPRESA INDEPENDIENTE
777 Bolivia
779 Argentina
780 Chile
784 Paraguay
785 Perú
786 Ecuador
789 – 790 Brasil
800 – 839 Italia, San Marino y Ciudad del Vaticano
84 España y Andorra
850 Cuba
858 Eslovaquia
859 República Checa
860 Serbia
865 Mongolia
867 Corea del Norte
86 Turquía
87 Países Bajos
880 Corea del Sur
884 Camboya
885 Tailandia
888 Singapur
890 India
893 Vietnam
896 Pakistán
899 Indonesia
900 – 919 Austria
93 Australia
94 Nueva Zelanda
950 GS1 Global Office: Aplicaciones Especiales
951 EPCglobal: Aplicaciones Especiales
955 Malasia
958 Macao
96 GS1 Global Office: Localizaciones GTIN-8
977 Publicaciones (ISSN)
978 – 979 Publicaciones (ISBN) – 979-0 usado para música
980 Recibos
981 – 983 Otros etiquetados
99 Etiquetados especiaels

El prefijo 950 (GS1 Global Office) es usado para aplicaciones especiales de acuerdos bilaterales. El prefijo 951 es usado por EPCglobal. Desde el rango 960, los prefijos 9600 a 9604 han sido asignados a GS1 UK para números GTIN-8. Los prefijos que no están nombrados en la lista son usados por GS1 Global Office para países en los que aun no existe una organización GS1 y están reservados para su futuro uso. Los prefijos usados en países no miembros de GS1 y reservados por GS1 para su futuro uso son:

140 – 199
381, 382, 384, 386 & 388
390 – 399
441 – 449
472, 473 & 483
510 – 519
521 – 527
532 – 534 & 536 – 538
550 – 559
561 – 568
580 – 589
591 – 593 & 595 – 598
602 & 605 – 607
610, 612, 614, 617, 620 & 623
630 – 639
650 – 689
696 – 699
747 – 749
751 – 753 & 756 – 758
781 – 783, 785, 787 & 788
791 – 799
851 – 857
861 – 864 & 866
881 – 883, 886, 887 & 889
891, 892, 894, 895, 897 & 898
920 – 929
952 – 954, 956 & 957
959, 961 – 976
984 – 989

Algoritmo para Palindromas o Capicuas en C#


Primera aproximación: Recorriendo toda la cadena.

            Boolean palindroma = true;
            string str = new string(Console.ReadLine().ToCharArray());
            for (int i=0; i < str.Length; i++)
            {
                if (str[i] != str[str.Length-i-1])
                    palindroma = false;
            }
            Console.WriteLine(palindroma.ToString());

Segunda aproximación: Solo evaluamos la mitad de la cadena

            Boolean palindroma = true;
            string str = new string(Console.ReadLine().ToCharArray());
            for (int i=0; i < str.Length; i++)
            {
                if (str[i] != str[str.Length-i-1])
                    palindroma = false;
            }
            Console.WriteLine(palindroma.ToString());

Tercera aproximación: el bucle corta por falso de palindroma.

            string str = new string(Console.ReadLine().ToCharArray());
            for (int i = 0; i < str.Length / 2; i++)
            {
                if (str[i] != str[str.Length - i - 1])
                    return false;
            }
            return true;

Conectando a instancia de Maquina Virtual de Amazon AWS EC2


Hace un tiempo hice unas pruebas con las máquinas virtuales que ofrece Amazon AWS. Hay una opción interesante de servicio gratuito durante un año para pruebas o para ingresar al producto, y por eso me puse a explorar sus alternativas.

Lo que hay que tener muy en cuenta es que, inclusive para probar, hay que ingresar los datos de una tarjeta de crédito (Microsoft Azure hace lo mismo), y luego del año de prueba se comienza a facturar en función de la demanda (ojo con eso).

En el proceso de creación de la instancia de la maquina virtual, debemos crear una clave .pem que luego nos servirá para ingresar al servidor.

Una vez creada la instancia, en el panel de control, debemos localizar la IP o el nombre DNS de dicha instancia.

Pantallazo-15Luego, utilizaremos el certificado .pem descargado al crear la máquina virtual y conectaremos del siguiente modo:

[usuario@host ~]$ ssh -i usuario_aws.pem ec2-user@ec2-54-242-160-64.compute-1.amazonaws.com

Para estas pruebas yo di de alta un Linux RHEL 6.4

Acceder a servidor SQL Server en Servidor Virtual Azure / Connect to SQL Server on Azure Server


Si necesitamos acceder desde un equipo cualquiera a un servidor de base de datos SQL Server hosteado en una máquina virtual Azure, debemos hacer dos cosas en el servidor virtual:

1) Mapear el puerto 1433 para tener acceso al motor de la base de datos.

Esto lo hacemos en el gestor de máquinas virtuales, seleccionando nuestra máquina virtual, luego EndPoints y agregando una nueva regla.

windowsAzure_endpoints

2) Permitir conexiones entrantes al puerto 1433 en el firewall de Windows.

Esto asumo que ya saben como hacerlo, pero basicamente es agregar una regla en Panel de Control –> Firewall, permitiendo la entrada de los paquetes entrantes por TCP al puerto 1433.

Conectar a Servidor SQL Server por puerto no standard / sql server connect to a different port


Este dato es importante (al menos para mí) porque es distinto del criterio utilizado en la mayoría de las aplicaciones.

Si necesitamos conectar a un servidor MS Sql Server a través de un puerto distinto del standard (1433), debemos hacerlo de la siguiente manera:

NOMBRE_SERVIDOR\SQLEXPRESS,14333

Es decir, nombre de servidor, nombre de instancia, coma, numero de puerto.

La intuición me decía hacer NOMBRE_SERVIDOR:1433\SQLEXPRESS. Pero NO.

Esto es aplicable para conexiones desde el SQL Management Studio y también para las cadenas de conexión o connection strings.