martes, 27 de septiembre de 2016

Centos: buscar a que paquete pertenece un archivo

A veces necesitamos buscar a que paquete pertenece un determinado fichero. Por ejemplo si queremos buscar a que paquete pertenece el fichero /usr/sbin/suexec:
rpm -qf /usr/sbin/suexec
 Si queremos listar todos los archivos de un paquete. En el ejemplo como listar el contenido del paquete
rpm -ql httpd-2.4.6-40.el7.centos.4.x86_64

miércoles, 15 de junio de 2016

Bash: bucle en una línea usando secuencia

Para hacer un bucle en bash con una sola línea y usando una secuencia podemos hacerlo así
for i in {0..15}; do echo "mkdir -p /disk${i}/home";  done

lunes, 23 de mayo de 2016

Solaris 10: buscar archivo entre dos fechas

En solaris 10, para buscar  archivos entre dos fechas podemos usar el siguiente comando:

touch -d "2016-03-17 10:14:00" /tmp/start
touch -d "2016-03-17 10:16:00" /tmp/end
find DIRECTORIO  -type f \( -newer /tmp/start -a ! -newer /tmp/end  \) -print

Creamos dos archivos con el rango de fechas que queramos, y usamos find para que encuentre los archivos entre esas fechas. En el ejemplo buscamos los archivos del  2016-03-17, entre las 10:14:00 y las 2016-03-17 10:14:00

miércoles, 20 de abril de 2016

CENTOS 7: No se pudo cargar el archivo /etc/sysconfig/network-scripts/ifcfg-lo

Al iniciar las interfaces de red o al arrancar el sistemas operativo podemos encontrar el siguiente mensaje:

Activación de la interfaz de loopback:  No se pudo cargar el archivo /etc/sysconfig/network-scripts/ifcfg-lo
No se pudo cargar el archivo /etc/sysconfig/network-scripts/ifcfg-lo

Si hacemos sun systemctl status network observaremos el mismo mensaje.
Para solucionarlo:
1- Editamos el archivo /etc/sysconfig/network-scripts/ifcfg-lo
2- Añadimos al archivo la línea TYPE=Loopback
3- Reiniciamos la red con systemctl restart network



martes, 5 de abril de 2016

ORACLE: privilegios de un rol

Para saber que privilegios tiene asignado un determiando rol:

SELECT * FROM  ROLE_SYS_PRIVS ;
Para ver los roles asignado a un usuario:

SELECT * FROM USER_ROLE_PRIVS;

martes, 25 de agosto de 2015

Easy2boot: Persistencia y cambiar tamaño de archivo loopback (casper-rw)

Supongamos que tenemos un USB con EASY2boot instalado y queremos tener persistencia.

1) Persistencia:

Creamos un archivo de persistencia, dos formas posibles:

a) Windows:

Usando RMPrepUSB: le damos al botón "Create ext2 FS", fijamos 4GB, de nombre de archivo casper-rw (o el nombre que queramos) y de nombre de volumen casper-rw 

b) Linux:

Nos vamos a la raiz del usb y ejecutamos como root
dd if=/dev/zero of=casper-rw bs=1M count=4096
mke2fs -m 0 -F casper-rw

2) Menú de Arranque:

Supongamos que tenemos una iso de ubuntu copiada en ( _ISO/LINUX/ubuntu-14.04.3-desktop-amd64.iso ), debemos crear un archivo llamado
_ISO/LINUX/ubuntu-14.04.3-desktop-amd64.mnu con el siguiente contenido:

# Make a ext2 file using RMPrepUSB in the root of the drive (i.e. File Name=Ubuntu1304-rw  Volume Name=casper-rw)
# Place this .mnu file and the Ubuntu ISO in (_ISO\xxx\MNU), e.g. \_ISO\MainMenu\MNU or \_ISO\Linux\MNU
# This menu will work even on an NTFS USB boot drive
# IMPORTANT: you MUST run WinContig (Ctrl+F2) before booting E2B.


iftitle [if exist $HOME$/ubuntu-14.04.3-desktop-amd64.iso] Ubuntu 14.04.3 PERSISTENT casper\n Boot using .mnu file with persistence

set ISO=$HOME$/ubuntu-14.04.3-desktop-amd64.iso
set PF=/casper-rw

if "%E2BDEV%"=="" set E2BDEV=hd0 && pause E2BDEV forced to hd0!
if exist CD echo WARNING: Cannot use partnew command! && pause && configfile (bd)/menu.lst
#enable parttype output
debug 1
# make empty table entry in 3rd position in ptn table
parttype (%E2BDEV%,2) | set check=
debug off
set check=%check:~-5,4%
if "%check%"=="0x00" partnew (%E2BDEV%,2) 0 0 0
if not "%check%"=="0x00" echo WARNING: PTN TABLE 3 IS ALREADY IN USE - PERSISTENCE MAY NOT WORK! && pause
debug 1
if not exist %PF% echo WARNING: %PF% persistence file not found! && pause
errorcheck off
if "%check%"=="0x00" partnew (%E2BDEV%,2) 0x0 %PF%
errorcheck on
#map ptn 4 to ISO
partnew (%E2BDEV%,3) 0x0 %ISO%
map %ISO% (0xff)
map --hook
root (0xff)
kernel /casper/vmlinuz.efi  boot=casper persistent noeject noprompt quiet splash --
initrd /casper/initrd.lz 

4) Defragmentar:

Si vamos usar Easy 2 boot  (E2B) el archivo debe de estar defragmentado, si el USB donde está el archivo casper-rw es NTFS debemos usar windows para defragmentarlo, concretamente:

Ejecutar en stick USB MAKE_THIS_DRIVE_CONTIGUOUS.cmd desde el raiz del USB o _ISO/docs/WINCONTIG/WinContig.exe o  _ISO/docs/WINCONTIG/MAKE_THIS_DRIVE_CONTIGUOUS.cmd

PD: también se podría usar linux con rsync pero es más rápido y menos engorroso usar las herramientas de defragmentación en windows.

5) Ampliar archivo de loopback desde linux:

El usb tiene que estar en formato NTFS, si está en Fat32 el tamaño máximo de archivo es de 4GB.

Supongamos que tenemos el archivo casper-rw con ext2 y 4 Gigas de espacio. Para ampliarlo otros 4 GB (8 GB en total).
Por si acaso algo sale mal primero haz una copia del archivo en tu disco duro u otro sitio.

dd if=/dev/zero of=casper-rw bs=1M count=4096 oflag=append conv=notrunc
e2fsck -f of=casper-rw
resize2fs casper-rw
e2fsck -f of=casper-rw

y volvemos a defragmentar (paso 4)

Enlaces:
http://www.easy2boot.com/

miércoles, 8 de julio de 2015

Opensuse 13.2: instalación de los drivers nvidia para gtx 770 (gk-104)

Para la instalación desde un sistema Opensuse 13.2 limpio haremos lo siguiente:

1) Instalación del repositorio
sudo zypper ar -f ftp://download.nvidia.com/opensuse/13.2/ nvidia
2) Instalación del paquete:
sudo zypper install x11-video-nvidiaG04
3) Añadir usuario a grupo de video
sudo usermod -a -G video dieguz2
4) Bloquear drivers nouveau. Vamos a
  Yast  / Cargador de Arranque / Kernel Parameters / Parámetro opctional para la línea de comandos del kernel /  , añadimos al final de lo que haya nomodeset nouveau.modeset=0
otra opción es :
echo "blacklist nouveau" >> /etc/modprobe.d/50-blacklist.conf
 5) Comprobar que todo esté ok
glxinfo | grep -i nvidia
server glx vendor string: NVIDIA Corporation
client glx vendor string: NVIDIA Corporation
OpenGL vendor string: NVIDIA Corporation
OpenGL core profile version string: 4.4.0 NVIDIA 346.72
OpenGL core profile shading language version string: 4.40 NVIDIA via Cg compiler
OpenGL version string: 4.5.0 NVIDIA 346.72
OpenGL shading language version string: 4.50 NVIDIA
OpenGL ES profile version string: OpenGL ES 3.1 NVIDIA 346.72

domingo, 12 de abril de 2015

Opensuse 13.2 : Cambiar el swap. dracut Emergency shell, dev does not exist.

Al hacer algunos cambios en el ordenador el swap cambio de ubicación y de uuid, como consecuencia al arrancar el sistemas aparecía el prompt del dracut y siguiente mensaje
dracut-initqueue[299]: Warning: Could not boot.
dracut-initqueue[299]: Warning: /dev/disk/by-uuid/442317cd-e9ec-4001-90b0-8992008bd956 does not exist

GRUB2 arranque

Si usamos grub2, al arrancar, muestra el menú con las diferentes entradas, si pulsamos 'e', podemos editar los comandos. Hay algunas entradas como esta:
linux /boot/vmlinuz-3.16.6-2-desktop root=UUID=9e407f35-c659-44cd-85d4-e17b751da9a4 ro BOOT_IMAGE=/boot/x86_64/loader/linux ramdisk_size=512000 ramdisk_blocksize=4096 resume=/dev/sdb5 splash=silent quiet showopts
 Si queremos quitar el resume pondremos noresume, si queremos cambiar el dispositivo, resume=/dev/nuevodev  o resume=UUID=uuiddelnuevodispositivo

Sistema Arrancado

Si no arranca el sistema, arrancaremos con algún live CD. En cualquera de los dos casos haremos lo siguiente

Listar las particiones de nuestro sistema y su uuid. Las apuntamos.
# blkid
/dev/sda2: UUID="1E83-6E29" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="2bb2aec0-85d7-471a-a84e-cb290ae86a2a"
/dev/sda5: LABEL="suse" UUID="0e2c2ce4-cebf-4d2e-8829-19abe7870f27" TYPE="ext4" PARTLABEL="primary" PARTUUID="20a3af3c-265d-421b-a050-60ca64c2ed60"
/dev/sdb5: UUID="935c8fdb-1bfc-480e-8e7a-628ac0919f47" TYPE="swap" PARTUUID="00025d31-05"
UEFI  => /dev/sda2
La raiz  => /dev/sda5
El swap  => /dev/sdb5


Hacer chroot del sistema, en dev/sda5 esta mi raiz de linux
# mount /dev/sda5 /mnt
# mount --bind /dev /mnt/dev
# mount --bind /proc /mnt/proc
# mount --bind /sys /mnt/sys

# chroot  /mnt
Con esto ya tendremos montado la raiz de nuestro antiguo sistema.

Activar el swap
# swapon /dev/sdb5
opcional :Si necesitamos formatearlo se va a generar un nuevo UUID, así que ojo si usamos UUID(mkswap /dev/sdb5)


GRUB sistema

revisamos /etc/default/grub

Cambiamos la linea:
# GRUB_CMDLINE_LINUX_DEFAULT=" resume=/dev/disk/by-id/ata-ST3120026AS_3JT2HBTB-part5 splash=silent quiet showopts"

por un noresume
#GRUB_CMDLINE_LINUX_DEFAULT=" noresume splash=silent quiet showopts"

o por un resume de nuestro nuevo swap
# GRUB_CMDLINE_LINUX_DEFAULT=" resume=/dev/sdb5

Actualizamos el grub:
# grub2-mkconfig -o /boot/grub2/grub.cfg


Revisamos también un par de archivos relacionados
/etc/sysconfig/kernel
/etc/sysconfig/bootloader (mirar el DEFAULT APPEND)
Y finalmente
/sbin/mkinitrd
reiniciamos y debería estar todo correcto

lunes, 9 de marzo de 2015

Apache : calcular tamaño memoria por proceso de apache y optimizar el valor de Maxclients

Para calcular el tamaño que está ocupando en memoria apache y sus procesos podemos usar el siguiente script en bash:

 ps -ylC httpd | awk '{x += $8;y += 1} END  { print "Apache uso de memoria (MB): "x/1024;  print "Tamaño medio del proceso (MB): "x/((y-1)*1024);   print "Procesos apache: "y-1;   }'

Ejemplo de salida
Apache uso de memoria (MB): 1396.54
Tamaño medio del proceso (MB): 16.8257
Procesos apache: 83

Estos valores son útiles para optimizar el parámetro MaxClients en el fichero /etc/httpd/conf.d/mpm_prefork.conf ( Centos 7 ) .

Para calcular el Valor:

MaxClients = (Total RAM en el sistema - RAM reserva para el resto del sistema) /  Tamaño medio del proceso

Por ejemplo si tenemos una máquina con 16 GB, y queremos dedicar al apache el 80% de la memoria (3,2 GB) y el tamaño del proceso es de 17MB.

MaxClients = (16GB - 3.2 GB) * 1024 / 17MB =771,0118
o equivalentemente
MaxClients = ((16×1024) × 0,8) ÷ 17 = 771
SI queremos fijar la cantidad de memoria a un valor fijo (ej: 4GB) se hacen las mismas cuentas
MaxClients = (4×1024) ÷ 17 = 240

lunes, 15 de diciembre de 2014

LDAP: modificar varios atributos con el mismo archivo ldif

Para modificar varios atributos de una entrada LDAP usando sólo un archivo ldif, el formato tiene que ser similar al siguiente:
dn: uidNumber=69696967,ou=Usuarios,dc=dieguz2,dc=es
changetype: modify
replace: shadowLastChange
shadowLastChange: 111111
-
replace: sn
sn: 222222
-
replace: email
email: dieguz2@no.existo.xy
Los atributos que se modifiquen tienen que ir separados por un guión.