Cuando te independizas y te vas a vivir a un piso o a una casa te preguntas, ¿cómo serán mis vecinos? Por un lado tendremos al típico que deja la basura en la puerta de su casa durante todo el día y esparce olores al resto de los vecinos; o el que desea compartir la música que escucha con los demás y el que cuando entra al edificio y ve que vas a entrar va corriendo al ascensor para no esperarte… Aunque como procesos en ejecución en un entorno Linux muchas veces queremos saber cómo son nuestros vecinos y, al contrario de lo que puede parecer en una comunidad de vecinos, éstos suelen ser mucho más receptivos y dispuestos a darnos información.… Leer artículo completo
Procesar argumentos de entrada en nuestros shell scripts con getopt
Hace unos días analizamos cómo tratar los argumentos de entrada desde un shell script en Bash de una manera sencilla. Aunque, cuando la cosa se complica, debemos utilizar herramientas algo más avanzadas. Tal y como hicimos con getopt para C [parte 1, parte 2], vamos a hacer lo mismo en un shell script.
Aunque aquí tenemos dos posibilidades, que hacen prácticamente lo mismo getopt y getopts.… Leer artículo completo
Cómo extraer la parte alta y la parte baja de un número con varios ejemplos en C
En ocasiones, en C, sobre todo, una misma variable numérica (un entero, un short, o incluso un char) encierra en sus bits más valores que nos pueden resultar interesantes por separado. Sobre todo, por optimizar la memoria, en lugar de reservar dos variables de tipo entero de 32bits para almacenar valores pequeños, queramos empaquetar en el mismo valor entero los dos valores y luego extraerlos cuando los necesitemos. Esto lo podemos ver en sistemas empotrados en los que estamos muy limitados en memoria.… Leer artículo completo
Introducir el resultado de una consulta SELECT de mysql en un Array [BASH]
¡Bash es una pasada! Es capaz de dejarnos hacer maravillas en poco tiempo y de automatizar lo inautomatizable, en este caso, traigo un ejemplo más, de cómo un código muy corto es capaz de presentarnos los resultados de una consulta SELECT de mysql:
Los datos de prueba provienen de uno de mis proyectos: Málaga Bloguea donde muestro las últimas novedades de blogs de Málaga.
… Leer artículo completo1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49#!/bin/bash
OLDIFS=IFS
MYSQL_USER=#Usuario Mysql
MYSQL_PASSWORD=#Password Mysql
MYSQL_HOST="localhost"
# IFS personalizado, para poder delimitar los campos correctamente
IFS="`echo -e "\t\n\r\f"`"
# Declaramos la variable como array, no es estrictamente necesario, pero sí un poco más correcto
declare -a IPS
# Generamos la consulta (Si vamos a utilizar un juego de caracteres determinado, como
# UTF8, debemos especificar primero para evitar sorpresas.Separar palabras de una cadena de caracteres en un array [ C ]
Si conocéis PHP, habréis visto la función explode(). Tiene una utilidad curiosa, separa cadenas de caracteres en elementos de un array. Es como hacer un corte a la cadena cada vez que encontremos un carácter delimitador. Por ejemplo:
«Bienvenido al blog Poesía Binaria», si usamos como delimitador » » (un espacio), los elementos del array quedarían así:
[0] = «Bienvenido»
[1] = «al»
[2] =»blog»
[3] =»Poesía»
[4] = «Binaria»Pero en C, no encontramos ninguna función que haga esto, tenemos que currar un poco; aunque tenemos una función de string.h que hace algo que se parece en cierto modo: strtok(), esta función, va a separar una cadena en fragmentos modificando la propia cadena, es decir, introduciremos caracteres terminadores al final de cada palabra.… Leer artículo completo
Bailando con bits: Ver y modificar los bits de un número
Hay muchas formas para hacer esto, pero quizás la más visual (tal vez también útil algunas veces) es la siguiente (se explica más abajo):
… Leer artículo completo1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83#include <stdio.h>
typedef struct {
unsigned int b1:1;
unsigned int b2:1;
unsigned int b3:1;
unsigned int b4:1;
unsigned int b5:1;
unsigned int b6:1;
unsigned int b7:1;
unsigned int b8:1;
unsigned int b9:1;
unsigned int b10:1;
unsigned int b11:1;
unsigned int b12:1;
unsigned int b13:1;
unsigned int b14:1;
unsigned int b15:1;
unsigned int b16:1;
unsigned int b17:1;
unsigned int b18:1;
unsigned int b19:1;
unsigned int b20:1;
unsigned int b21:1;
unsigned int b22:1;
unsigned int b23:1;
unsigned int b24:1;
unsigned int b25:1;
unsigned int b26:1;
unsigned int b27:1;
unsigned int b28:1;
unsigned int b29:1;
unsigned int b30:1;
unsigned int b31:1;
unsigned int b32:1;
} Tint_bits;
int main()
{
int numero;
Tint_bits *bitpack;
bitpack=(Tint_bits*)№
numero=63;
printf ("Dir cos: %X\nDir paq: %X\n", &numero, bitpack); // Vemos que las direcciones de memoria son idénticas.Extraer una copia de seguridad de Plesk
Muchos proveedores utilizan Plesk como panel de control, y en ocasiones, es necesario extraer dichas copias de seguridad, no sólo restaurarlas automáticamente vía Plesk.
Necesitamos el paquete munpack (la mayoría de las distribuciones lo traen en sus repositorios, si no, siempre podemos compilarlo desde el código fuente ( ftp://ftp.andrew.cmu.edu/pub/mpack/ ).
Si el fichero de copia de seguridad es copia_plesk, hacemos lo siguiente:
$ zcat copia_plesk copia_plesk_descomprimida
$ cat copia_plesk_descomprimida | munpackEn este punto tendremos muchos ficheros tar (tal vez el correo, las páginas web que tengamos, los logs y demás servicios que tengamos contratados), sólo tendremos que extraer los archivos:
$ tar xvf [archivo_tar_a_extraer]
Debemos procurar que los archivos generados por plesk no sean de más de 2Gb (el panel de control tiene la opción de fragmentar los archivos), ya que munpack se quejará en este caso, tendríamos que recortar el fichero descomprimido.… Leer artículo completo
Últimos comentarios