jueves, 28 de agosto de 2008

¡Positivo!

Acabo de llegar... Lo que me temía pasó, me quedé hasta las 11 de la noche en la oficina desde las 10:30 de la mañana, que puse un pie en el DataCenter. La gente del soporte de Sun me dejo pagando y cayeron alrededor de las 13:00, como todavia no habia terminado ninguno de los backups críticos, lo despache y le dije que venga despues de las 15:00 y el tema se prolongó hasta las 22:30. En resumen, no hubo ninguna solución. El robot sigue andando a medias, parece que es una fibra, parece que es un drive, parece que es el Brocade, parece, parece, todo parece y la solución al problema es lo único que no aPARECE...

Como la noche pintaba que iba a ser mas larga, pedimos unas pizzas, de las que comi 3 porciones de jamon y morrones y un par de porciones de faina, si ya se, asi no se baja la panza :(, pero, como mañana jueves tenemos partido de basket con la gente de la oficina, ahi voy a correr un poco y quemar un poquito de calorias.

Espero esta noche poder conciliar el sueño antes de las 4 de la mañana, porque estos dias despues de una charla que tuve con Lorena el Lunes 25, me cuesta horrores dormir.

¡Ya está! decidí que esta noche voy a dormir(tomo la guardia pasiva el fin de semana y ahi me van a torturar a la madrugada).

Tambien decidí que hoy, Jueves 28 de Agosto va a ser un dia excelente! Voy a acostarme totalmente positivo, para que el dia sea asi. Estoy seguro que uno hace su propio destino y mi destino mañana es que voy a tener un dia fabuloso!

miércoles, 27 de agosto de 2008

I say a little prayer for you

Hoy tampoco puedo dormir, complicada va a venir la semana a este ritmo. El unico problema es que a las 9:00 van los tecnicos de Sun y TeleXtorage a revisar la libreria de backup que esta dando unos errores que nos pueden dejar fuera de servicio, con las complicaciones que eso traeria y los tengo que atender yo...

Para depejar un poco la cabeza y no pensar en cosas feas, me puse ver unos videos en youtube y los quise postear acá.




I say a little prayer for you

The moment I wake up
Before I put on my makeup
I say a little pray for you
While combing my hair now,
And wondering what dress to wear now,
I say a little prayer for you

Forever, and ever, you'll stay in my heart
and I will love you
Forever, and ever, we never will part
Oh, how I love you
Together, forever, that's how it must be
To live without you
Would only meen heartbreak for me.

I run for the bus, dear,
While riding I think of us, dear,
I say a little prayer for you.
At work I just take time
And all through my coffee break-time,
I say a little prayer for you.

Forever, and ever, you'll stay in my heart
and I will love you
Forever, and ever we never will part
Oh, how I'll love you
Together, forever, that's how it must be
To live without you
Would only mean heartbreak for me.

I say a little prayer for you

I say a little prayer for you

My darling believe me, ( beleive me)
For me there is no one but you!
Please love me too (answer his pray)
And I'm in love with you (answer his pray)
Answer my prayer now babe (answer his pray)

Forever, and ever, you'll stay in my heart
and I will love you
Forever, and ever we never will part
Oh, how I'll love you
Together, forever, that's how it must be
To live without you
Would only mean heartbreak for me (oooooooooh)

La boda de mi mejor amigo. Todos cantan en la mesa

Aretha Franklin


Whitney Houston & Natalie Cole - Say A Little Prayer

martes, 26 de agosto de 2008

La vida...

Hoy mientras volvia a casa, venia pensando en el titulo de mi blog.
Pensaba que tal vez podria interpretarse como resignación, como que uno se entrega con paciencia y telerancia, conformándose con lo sucedido, pero por el contrario, NUNCA fue esa la intención, sino todo lo contrario, que la vida vaya repartiendo cartas y hacer el mejor juego con las barajas que tocaron.

Realmente la vida me dió cartas excelentes con las que hice juegos fabulosos y otras me dio cosas con las que tenia todo perdido y a fuerza de voluntad me repuse y trate de hacer la mejor mano con lo que tenía.
No siempre pude hacer el mejor juego, muchas veces con cartas "buenas" perdí y gané con las peores.

Mientras escribo pienso porque hacer una analogia con un juego de cartas y se me ocurre que por lo azarosa que es la vida, uno no tiene comprado nada.
Alguna vez lei por ahi, buscando una definicion para la palabra vida y lo mas acertado que encontré fue lo que le preguntaba un alumno a su maestro...

Alumno - Maestro, que es la vida?
Maestro - Trataré de responder con sabiduría, la vida, es lo que se cruza entre tu y tus planes.

Despues de leer esto y analizarlo unos instantes, pasaron decenas de diapositivas por mi cabeza, la vida que se habia interpuesto entre mis proyectos y yo.
Proyectos personales, proyectos de pareja, de planear una familia, de soñar construir algo, vida, soñar con un hijo y que de golpe, paradojicamente, porque pasó la vida, se postergaron, se bloquearon y se esfumaron.

Cosas muy tristes, muy feas, muy jodidas de las que un pibe se pueda reponer facilmente.
Teniendo 27 años, un 7 de noviembre de 2003 perdí a mi viejo de la peor manera que se puede perder un ser querido, le arrancaron la vida cuando trató de defender la casa de tres mierdas que entraron a robar.

Me cai, me derrumbé, entré en un estado del que me costo mucho reponerme. En ese momento estabamos planeando una familia con Lorena, habiamos empezado con toda la fuerza y se postergó.
Nos separamos, fui por la vida sin rumbo, no me importaba si mañana era dia tambien.

Volvimos a unirnos despues de varios meses y otra vez arrancamos, con fuerza y fue muy lindo. Nos amabamos. Se veia, lo veian, estabamos volviendo a ser felices y en 2005 otra vez la vida se cruzaba entre los planes.
A mi madre le diagnostican cancer. Enfermedad de mierda. Irreversible dijeron los medicos y yo no podia entender como podia pasar esto de vuelta, odié a un dios que se hacia el boludo y otra vez volvia a mirar para otro lado.

Es asi que el 28 de Diciembre de 2005 pierdo a mi vieja, despues de una agonia terrible, en la que le pedí a mi viejo que la llevara. Me senti una mierda, ¿como podia estar entregando a mi vieja asi, sin pelear? y se me abrió un pensamiento. Yo no queria sufrir, pero por querer retener, estaba sufriendo mi mamá. Y fué asi que preferí que ella no sufriera mas.

Pensé, me quedo solo, pero estaba mi pilar, mi otra fuerza, Lorena.

Me ayudó, salimos y comenzamos nuevamente los proyectos postergados.
Planeamos una casa, una boda, una familia, dos hijos y la vida pasó de vuelta...

Tuvimos a Tomas, nuestro Labrador, pura alegría, la relación con altibajos, pero marchaba, la casa tomaba la forma que queriamos, nos fuimos de vacaciones, llevamos a Tomas y a Milton y fueron espectaculares, inolvidables.

En Mayo de 2008 Tomas enfermó. Peritonitis le diagnosticaron, hicimos lo que pudimos, y no se repuso.
El 12 de Mayo se murió en mis brazos. Puta vida, otra vez pasaba!
Estuvimos mal, muy mal y nos fuimos levantando, pero sin fuerza. Lo notaba.
La relación no fue la misma desde ahi. Nos separamos, ni un mail, ni un llamado, todo quedo suspendido, hasta hoy, 25 de Agosto.
Hoy quedó todo en la nada. 7 años. Hablamos y no hay vuelta atras.
No me siento muy bien, pero tengo estas cartas y voy a tratar de hacer mi mejor mano otra vez.

Miro el reloj y son las 5:30 de la mañana, y no tengo una gota de sueño. Por mi cabeza pasan cosas, pasa todo lo que no pude hacer, lo que hice y lo que quisiera hacer y pienso que hoy, de verdad estoy solo y que todavia no vi bien las cartas que me tocaron pero ya estoy pensando que esta mano la voy a ganar, no se como, pero no me voy a caer.

martes, 29 de julio de 2008

¡Y se va Julio!

Hace rato que no escribía nada, desde el 3 de Junio en el que agregué un pequeño manual de Linux que nunca esta de mas y sobre todo, para referencia en cualquier *ux, pero la realidad es que vengo con practicamente nada de tiempo.

Realmente, el trabajo esta bastante pesado, demasiadas cosas para hacer y para que no se acumulen estoy dedicandole mas horas y estoy empezando a sentir ese cansancio.

Espero poder tomarme el fin de semana largo del 17 de agosto y escapar a algun lado, porque necesito despejar la cabeza aunque mas no sea mirando por la ventana un par de plantas. Verdaderamente, creo que el cuerpo me esta empezando a pasar factura del poco tiempo libre que tuve en este año.

Otra cosa que me tiene asi, es el tema de las reformas de la casa, por suerte va todo marchando, a su tiempo y haciendose, pero ¡como aumentaron las cosas! se fue todo muy, pero muy al carajo.

Lo bueno, es que la casa va tomando forma y me gusta cada vez mas, y eso de alguna manera, reconforta, y tengo, obligatoriamente, que discrepar con Robert Kiyosaki, cuando él "desafía la creencia de que una casa es una inversión"...

Por suerte ya estamos en el final de ésta etapa, que era pintura y refacción de los ambientes de abajo, cocina, living, comedor y mi futuro estudio; hicimos que el baño en suite de arriba, quede "utilizable ante una emergencia", y ahora vamos por el corte de la losa para poner la escalera interna y que quede la casa definitivamente unida por adentro, sin necesidad de utilizar la escalera de patio, ademas, cambiar un par de puertas de lugar y colocar las ventanas del primer piso.
Con eso creo que suspendemos la obra, por este año, para descansar y tratar de ordenar algunas cosas que no estan del todo bien en la pareja y tambien para recuperar $$$ y darle respiro a la tarjeta de crédito y al bolsillo.

martes, 3 de junio de 2008

Manual de Linux


Espero que este manual sea de utilidad ya que va directamente a lo que importa porque es comando y reseña.

Entrada y salida del sistema:
- login: Petición de usuario y contraseña
- $: Usuario normal
- #: Superusuario
- exit: salir del Terminal
- logout: terminar sesión
- reboot: reiniciar sistema
- halt: apagar equipo
Información de Linux
o HOW TO: Documento corto para solucionar un problema Linux.
o FAQ: respuestas a dudas más frecuentes
o Libros LPD: libros o manuales de Linux
Ayuda de comandos
- man “comando” => man ls
- info “comando” => info ls
- “comando” –help => ls –help
El prompt del sistema
- $: usuario normal
- #: superusuario
- [usuario@maquina directorio]
- Se puede cambiar con la variable de entorno $ PS2
Sintaxis de una orden: $ orden opciones argumentos
Ej: ls –al
Comandos relacionados con archivos y directorios
- Directorio raíz => /
- Directorio actual: . ls.
- Directorio padre: .. ls..
- ls: muestra el contenido de un directorio
- ls –la: listado largo con ficheros ocultos
Caracteres comodín
- *(asterisco) => cualquier cadena de caracteres
- ? => sustituye a un único carácter en el nombre de un archivo
- [abc] => cualquier carácter de la lista
- rm => borra ficheros o directorios
- pwd => indica directorio de trabajo actual
- mkdir => crea directorios
- rmdir => borra directorios
- cd o chdir => cambia directorio
- gedit => editor de textos
-file “archivo” => tipo archivo
- cp origen destino => copia ficheros y directorios
cp texto.txt texto1.txt
cp texto.txt /home/Juan


Cuando un usuario copia un archivo se convierte en propietario
-mv origen destino => mueve ficheros y cambia el nombre de los ficheros
Mueve => mv proyecto /tmp
Cambia nombre => proyecto proyecto1
Mueve => mv /home/Juan/texto.txt /home/Luis
Cambia nombre al directorio => mv /home/juan/documentos /home/Juan/documentos2
-ln => crea enlaces entre ficheros (link)
- Duros: Es un nombre más para un fichero. Se elimina el fichero cuando se elimina el
último sobrenombre.
Ej: ln /home/luis/foto.jpg fotografía
-Simbólicos: contiene un camino de un fichero. Apuntan a ficheros en el mismo sistema de
archivos o en otros.
Ej: ln /home/Isabel/texto
- touch “archivo” => actualiza la fecha de un archivo
- cat “archivo” => visualiza el contenido de un archivo
- grep => busca caracteres en un fichero o ficheros
Ej: grep “hola” prueba.txt
- find => busca el directorio donde se encuentra un archivo
Ej: find / -name proyecto.txt
- user “nombreusuario” => pertenece usuario
- group “nombregrupo” => grupo
- mtime “numerodias” => modificado hace nº de días
- head => muestra la parte inicial de un archivo de texto
- tail => muestra la parte final de un archivo de texto
- wc => muestra el nº de bytes, palabras y líneas de un archivo
- less => muestra archivos por pantalla paginando la salida, permite volver atrás
- more => muestra archivos pantalla a pantalla
- cmp => compara archivos
- nl => muestr a el archivo numerado en líneas
- csplit => divide un archivo en secciones determinadas por líneas de texto
- cut => imprime secciones de líneas de un archivo
Ej: cut --bytes = 1 suma
- diff => busca diferencias entre los archivos
Ej: diff suma1.txt suma2.txt
- tac => visualiza un fichero de texto con las líneas invertidas
Ej: tac suma.txt
- uniq => borra las líneas duplicadas de un archivo ordenado
Ej: uniq suma.txt
Comandos varios
- cal => muestra calendario
- clear => borra pantalla
- date => proporciona o ajusta la fecha y hora del sistema


- dmesg => permite ver los mensajes de inicio del sistema
- env => muestra el entorno actual de trabajo con todas sus variables
- time => tiempo que tarda en ejecutarse un comando
- echo => muestra texto/contenido de una variable
GESTION DE GRUPOS Y USUARIOS
- groupadd -g gid grupo => crea un grupo
GID: Identificador de grupo
>500: grupos normales
<500: grupo =""> modifica grupo
- groupdel grupo => elimina grupo
- useradd usuario => crea un usuario
-d => home -s => shell
-g => grupo principal -p => password
-u => uid
-G => otros grupos
Ficheros /etc/passwd => información de usuarios
/etc/shadow => información de usuarios segura
/etc/default/useradd => información por defecto
/etc/skel => ficheros pro defecto en $HOME (esqueleto)
/etc/login.defs => definiciones por defecto del login
- usermod usuario => modifica las opciones de un usuario
Utiliza las mismas opciones que useradd
- userdel usuario => elimina usuario
-r => borra directorio
- users => usuarios que han iniciado sesión
- passwd [usuario] => cambia contraseña del usuario
- groups [usuario] => grupos del usuario
- id [usuario] => información del usuario
- finger [usuario] => información adicional
- chfn [usuario] => cambia información finger
- chsh => cambia el intérprete de comandos
/bin/bash /bin/csh /bin/zsh
/bin/bashz /bin/bsh
- whoami => usuario actual
- su => cambia a otro usuario (por defecto root)
PERMISOS DE ARCHIVOS Y CARPETAS
- Cada fichero posee un propietario (UID) y cada usuario pertenece al menos a un grupo (GID)
- El usuario que crea un objeto es su propietario
- El sistema asigna permisos a los objetos a 3 niveles:
-Propietario: u
-Grupo al que pertenece el propietario: g
-Todos los demás: o


rwx rwx rwx
u.prop g.prop resto
- A cada nivel asigna tres tipos de permisos
r => lectura…………………visualizar
w => escritura………………modificar contenido
x => ejecución………………navegar en el directorio
- Se visualizan con la opción ls -l
- chmod => asignación de permisos a un fichero (root, propietario)
Octal

Binario

Permisos

0 000 ninguno
1 001 - - x
2 010 - w -
3 011 - w x
4 100 r - -
5 101 r - x
6 110 r w -
7 111 r w x
- chmod 751 texto.txt
Usuario => 111 => r w x
Grupo => 101 => r - x
Otros => 001 => - - x
- Clases de usuarios:
u => usuario propietario
g => grupo
o => otros
Cambiar permisos
-Modo absoluto
chmod 652 notas => r w - r - x - w -
- Modo simbólico
chmod claveusuario (+/-) permisos fichero/s
Ej: chmod uo+x datos
chmod o+rwx datos
chmod o-rwx
- La primera letra de los permisos
d => directorio
l => link
- (guión) => fichero
- Otros permisos
- STICKY BIT (bit pegajoso)
- Fichero => se almacena en swap al ejecutarse frecuentemente.
- Directorio => solo el propietario del fichero o directorio pueden borrar el fichero
del directorio. Empleado en archivos temporales de acceso de escritura general.
- Se activa con: chmod 1000 objeto


Se inserta una “t” en el permiso de ejecución de otros.
- T => solo tiene el permiso sticky bit
- t => permiso de ejecución y sticky bit
- SUID => El usuario que ejecute el fichero tome la personalidad, durante la ejecución, del
usuario propietario del archivo
- Se activa con: chmod 4000 objeto
- Aparece con una “s” en la posición del permiso de ejecución del usuario propietario
- S => solo el permiso SUID
- s => ejecución y SIUD
- SGID => al ejecutar el fichero nuestro GID toma el valor del identificador del grupo
propietario del fichero
- Se activa con: chmod 2000 objeto
- Aparece una “s” en la posición del permiso de ejecución del grupo
- S => solo SGID
- s => ejecución y SGID
- chown nuevo-propietario fichero(s) => cambia el propietario
Ej: chown luis *.bat
Debemos ser superusuario (root)
usuario:grupo fichero
Ej: chown juan:alumnos texto.txt
- chgrp nuevo-grupo fichero => cambia el grupo de archivo(s)
- debemos ser superusuario(root)
- Ej: chgrp alumnos libro.txt
- newgrp => inicia sesión a un nuevo grupo
- se sale con exit
- debemos ser superusuario
- se consulta con groups
- Ej: newgrp topos
- umask => máscara de creación de ficheros
- umask => información de la máscara
- umask 0002 => cambia la máscara
- Se establece:
- Para ficheros: 0666 & ~0002 = 0664 (rw- rw- r--)
- Para directorios: 0777 & ~0002 = 0775 (rwx rwx r-x)
- Definido en el script /ect/bashrc


GESTION DE PROCESOS
Linux => S.O. multitarea
-

Estado de un proceso

D => un interruptible slep (procesos Input Output)
S => dormido (en cola)
R => ejecutándose (en cola de ejecución)
T => parado (stopped)
X => muerto (dead)
Z => zombie => defunct process (en proceso de defunción)
- PID => número de proceso
- PPID => número de proceso padre
Los procesos se organizan jerárquicamente (Árbol de procesos)
- PGID => identificador de un grupo de procesos.
- Si PGID es igual que PID de una Terminal => procesos en primer plano
- Si PGID es igual en varios procesos => pertenece a la misma tubería de procesos
- Los generados en primer plano son sensibles a señales del teclado.
- pstree => árbol de procesos
- init => proceso padre de todos los procesos
- xinetd => proceso padre de ciertos servicios de Internet
- ps => visualiza procesos
-A => todos los procesos
-l => formato largo
-a => procesos de otros usuarios
-u => nombre usuario, hora comienzo y uso de procesos de este usuario
-H => árbol de procesos
- kill -9 PID => mata a un proceso
- pstree => ver árbol de procesos
- top => visualiza tareas Linux en tiempo real
- free => visualiza memoria física y swap libre y buffers creados por el kernel
- uptime => tiempo que lleva el sistema ejecutándose
- w => usuarios en la máquina y sus procesos
- pgrep => muestra procesos según una selección
Ej: pgrep -l -u root,sshd => procesos de root y sshd
- who => muestra quién ha iniciado sesión
- uname => información del sistema (uname -a => toda)
- kill -“señal” PID => envía una señal a un proceso
kill -l => lista de señales
kill -9 PID => mata un proceso
kill -15 PID => termina un proceso
kill -19 PID => para un proceso
kill -18 PID => continua un proceso
- at => ejecuta un trabajo en un determinado momento
Ej: at -f ficheroscript 10:15
at -f ficheroscrip 10:15 30.11.05
- atq => ver tareas programadas
- atrm => elimina una tarea



Procesos en background
- comando & => ejecuta un proceso en background
Ej: find / -name network > b.txt &
- jobs => muestra trabajos activos
- bg %nº => envía un trabajo parado a background
- fg %nº => sigue con el proceso
Ej: find / -name squid > d.txt &
jobs
fg %1
- ldd => muestr a librerías compartidas necesarias para ejecutar un programa
Ej: ldd /bin/date
- nice => ejecuta un programa con otra prioridad
Desde -20 hasta 19
- 20 => mayor prioridad
19 => menor prioridad
Ej: nice -n 5 /bin/ls
Se recomienda dar siempre una prioridad baja
- nohup comando => ejecuta el comando que ignora las señales de hanup. Continúa en segundo
plano después de cerrar la sesión. Si el comando tiene salida por pantalla crea el archivo
$HOME/nohup.out.
Se debe poner al final “&” para enviarlo a background.
Ej: nohup ls-ls &
Si no es así hay que hacer:
- ctrl.+z => para el proceso
- jobs
- bg %nº
SISTEMAS DE ARCHIVOS
- df => información de la utilización del espacio de disco en sistemas de archivos
df -a => muestra todos los sistemas de archivos
df -h => formato humano (más comprensible)
- du => espacio ocupado por los archivos y directorios que cuelgan
du -sh directorio => en formato humano solo el directorio y no subdirectorios
Sistema de archivos => estructura situada en un área del disco denominada partición.
Un sistema de archivos puede estar montado sobre varias unidades de disco: sistema de archivos
multivolumen.
-Tipos de ficheros:
• ficheros normales
• directorios y discos físicos
• enlaces
• archivos especiales => ficheros de dispositivos /dev, fifo, tuberías con nombregrupo


-Tipos de sistemas de ficheros:
En Linux existen 2 tipos de sistemas de ficheros nativos: ext3, ext2, ext, minix, xia o swap
Además soporta otros tipos:
• ext3, ext2, ext => sistemas de archivos estandar de Linux.
• msdos => compatibilidad con sistemas de archivos FAT de ms-dos (FAT16).
• VFAT => compatibilidad con sistemas de ficheros Windows (FAT32).
• ISO 9660 => cdrom.
• UMS2 => permite desde Linux que el sistema MS-DOS, usarlo como si fuera de
Linux => nombres largos, propiedad, permisos, enlaces y ficheros de
dispositivo.
• Hpfs => OS/2.
• nfs => sistema de ficheros de red (compartir sistemas de archivos).
• sysv => UNIX.
• proc => sistema de archivos virtual de Linu.Acceso a ciertas estructuras de datos
del Kernel. El Kernel accede a estos como si fueran ficheros. No existe en el
disco realmente, el Kernel crea la ilusió. Existe también información de toda la
máquina.
• Devps => pseudoterminales.
• ntfs => windows NT.
• Vsbfs
Organización de los directorios:
/bin => comandos básicos del S.O., también /usr/bin
/sbin => comandos esenciales para administración del S.O. También /usr/sbin
/boot => binerios de arranque del sistema
/dev
/etc => ficheros de configuración del sistema
/home => directorio de trabajo del usuario
/root => directorio de trabajo de root
/lib => librerías básicas para trabajar con Linux
/mnt => montaje de sistemas de archivos
/proc => información del sistema
/tmp => información temporal de esa sesión
/usr => programas que no forman parte del sistema. Más básico
/var => directorios que tienden a crecer y cambiar de tamaño
- mkfs => crea un sistema de archivos sobre una partición
Ej: mkfs [-t tipo] partición
mkfs -t ext3 /dev/hda5
- mount => monta un sistema de archivos. El directorio debe de estar creado
- umount => desmonta un sistema de archivos


Ficheros /etc/fstab y /etc/mtab
- /etc/fstab => información descriptiva sobre los distintos sistemas de archivos. Es importante el
orden, pues se actua secuencialmente con mount y umount.
• device => dispositivo
• directorio => directorio de montaje. Debe existir
• tipo => tipo de sistema de archivos. Si es ignore no se monta
• opciones =>
- auto/noauto => la partición se monta o no en el arranque
- users/nousers => los usuarios o solo root puede montarla
- ro/rw => solo lectura o lectura y escritura
- exec => se pueden ejecutar los binarios de esa partición
- default => rw, exec, auto, nousers, async.
- async => el sistema sigue trabajando tras una petición de escritura del
dispositivo.
• frecuencia => frecuencia de copias de seguridad por el comando dump : 1 ó 0
• secuencia => orden en el que se realizan chequeos de los sistemas de ficheros en tiempo
de arranque. El raíz debe tener un 1 y los demás un 2, si tiene un 0 no es necesario el
cheque.
- /etc/mtab => muestra sistemas de archivos montados
- fdformat “device” => formatea un disco
Ej: fdformat /dev/fd0H1440
- fdisk => para manipular particiones, se puede utilizar también “parted”
Ej: fdisk /dev/hda => m => ayuda
p => tabla de particiones
q => salir
- dd => copiar discos
Ej: dd if= /dev/fd0 of= /image
dd if= /image of= /dev/fd0
Mete todos los archivos de un disco en un fichero, haciendo con ellos una imagen que luego
traspasa a un disco.
- e2label => cambia la etiqueta el disco en sistemas ext2, ext3
Ej: e2label /dev/hda3 => muestra
e2label /dev/hda3 discolinux => cambia
Sistemas Ext3, swap, RAID y LVM
- Características Ext3 => no es necesario chequear (e2fsk) tras una caída inesperada del sistema.
Características de “journal” (diario) utilizado para consistencia. Mayor valocidad puesto que los
journals optimizan el movimiento de cabezales. Fácil transición ext3 => ext2 y viceversa.
- Swap => se recomienda el de doble de RAM. Puede ser una partición o un fichero en ext3. Se
recomiendala partición.





- RAID => conjunto de discos agrupados para mejorar rendimiento y seguridad de acceso a datos.
Utilizan grupos de 32 KB y 64 KB (bandas)
• Dos tipos:
• Hardware => controladores RAID al que se conectan discos duros y es
transparente al S.O o chasis hot-swap
• Software => soporte del kernel. Creado en la instalación con disk druid
• Niveles:
• Nivel 0 => la información se divide en grupos y se distribuye por los discos.
Mejora rendimiento pero no proporciona redundancia.
Ej: Si tenemos 4 discos duros y queremos guardar un archivo de 256
KB, ese archivo se dividirá en trozos de 64 KB y se guardaría un trozo
en cada disco duro.
• Nivel 1 => redundancia, escribe datos idénticos en cada uno de los discos
miembros. Discos espejo
• Nivel 4 => utiliza paridad concentrada en una unidad de disco. No soportado
por RED HAT.





• Nivel 5 => distribuye la paridad entre los discos. (Es más utilizado)
• Línea RAID => va rellenando los discos 1 a 1, no tiene ni paridad, ni
distribución de datos entre los discos.
- LVM => grupo de volúmenes lógicos formado por varios volúmenes físicos que pueden ser
redimensionados.
– La partición /boot no puede estar en un grupo de volúmen lógico, porque el gestor de
arranque no puede leerlo
Pasos:
1) Crear un volumen físico desde las unidades de disco duro.
2) Crear un grupo de volúmenes desde los volúmenes físicos.
3) Crear voúmenes lógicos desde el grupo de volúmenes y asignar los puntos de
montaje de volúmenes lógicos.



CUOTAS DE DISCO
– Restringir el almacenamiento en disco de usuarios y grupos. Permitirá que cada usuario
tenga una pequeña porción de disco de uso individual y tener más espacio para
proyectos en grupo.
– Se puede configurar por número de bloques y por inodos (nº de archivos en disco).
Pasos:
a) Activar cuotas en el sistema de archivos a través de /etc/fstab.
Ej: gedit /etc/fstab
LABEL= / / ext3 defaults,usrquota,grpquota
b) Volver a montar el sistema de archivos.
• Si es raíz => reiniciamos
• Si es otro => umount /mnt/datos
mount /dev/hda6 /mnt/datos
c) Crear los archivos cuota y generar la tabla de uso de espacio en disco.
Paso 1: quotacheck -acugm => crea los archivos aquota.user y aquota.group
-a => todos los sistemas de archivos de /etc/mtab
-c => crear aquellos que tienen las cuotas activadas
-vg => usuario y grupos
-m => forzar en caso de estar utilizado
Paso 2: quotacheck -avugm => se debe hacer regularmente
-v => verificar
Genera la tabla del uso actual del disco duro por el sistema de archivos con
cuotas activadas.
Paso 3: reinniciar sistema ó quota on – quota off
d) Asignar cuotas
edquota username => editar cuota de usuario con vi


- quota username => comprobar cuota de usuario
- edquota -g nombregrupo => cuotas para grupo. El grupo principal del usuario será el que
limitaremos
- edquota -t => configurar periodo de gracia para sistemas de archivos.
-T usuario => usuario particular
- repquota => informe de cuotas
-a => de todos los sistemas de archivos. Si aparece on ++ se ha excedido el límite
- quotaoff -vaug => desactivar cuotas
- quotaon -vuga => activa cuotas
TEMA: Empaquetado y compresión. Paquetes
tar => empaquetar
gzip => comprimir
- tar => permite empaquetar o desempaquetar ficheros.
Tar “opciones” archivo.tar [archivo origen a empaquetar]
Opciones:
-c => crear archivos empaquetados
-x => expandir archivos empaquetados. Desempaquetar
-v => almacenamos o visualizamos. Información de f orma detallada
-f => indicar que es un fichero el archivo.tar
-z => filtrar el archivo a través de gzip(comprimir/descomprimir)
-M => para crear o desempaquetar en varios discos
-t => mostrar un listado del fichero.tar
Ejemplos:
tar -cvf paquete.tar texto.txt texto1.txt texto2.txt => empaqueta
tar -xvf paquete.tar => desempaquetar
tar -tvf paquete.tar => visualiza listado
tar -czvf paquete.tar.gz texto.txt texto1.txt => empaqueta y comprime
tar -xzvf paquete.tar.gz => descomprime y desempaqueta
-gzip => comprime y descomprime ficheros.
Gzip [opciones] archivo
-l => listado
-d => descomprimir archivos
-t => comprobar que la compresión se ha realizado con éxito
-1,9 => nivel de compresión
1 => menos ratio, más rapidez
9 => más ratio, menos rapidez
Defecto => 6
Ejemplos:
gzip texto.txt => crea texto.txt.gz
gzip -9 paquete.tar => crea paquete.tar.gz con máxima compresión
gzip -d texto.txt.gz => descomprime
gunzip => descomprime
Ej: gunzip texto.txt.gz
gzip -d texto.txt.gz Son equivalentes


tar -cvfM /dev/fd0 texto*.txt => copia segura en varios diskettes
tar -xvfM /dev/fd0 => desempaqueta
- compress, uncompress => comprime ficheros y genera ficheros .z . No se utiliza mucho, se puede
utilizar gunzip para descomprimirlo.
Ej: compress texto.txt => crea texto.txt.Z
uncompress texto.txt.Z => descomprime
- bzip2, bunzip2
Ej: bzip2 fichero => genera fichero.bz2
bunzip2 fichero.bz2 => descompr ime
- File Roller => herramienta gráfica
RPM (Red Hat Package Manager => sistema de paquetes de Red Hat)
– Paquete => archivo que contiene todos los archivos de un componente instalable, y
además almacena información de control y scripts que se ejecuta al instalar o borrar el
paquete.
– Instalará programas y sus librerías.
– Características:
– Mantiene una base de datos de información de todos los paquetes instalados y
ficheros que contiene
– Control de dependencias: necesita otros paquetes para funcionar correctamente.
Nos avisará al instalar si necesita otros paquetes y al desistalar si es utilizado
por otros paquetes.
– Control de incompatibilidades => si al instalarlo deja de funcionar otro.
– No es necesario reiniciar el equipo
– Nomenclatura => nombre, versión, release, plataforma y extensión.
Ej: Xfree-VGA16-3.3.5-3.i386.rpm
Comando rpm
- Instalación de paquetes => debemos ser root
rpm -i [opciones] paquete.rpm
Ej: rpm -ivh paquete.rpm => se instala con una monitorización más agradable
– Si existe un fallo de dependencias
– Buscar la librería en mi disco duro.
– Si existe pero no es la versión, debemos buscar en internet
rpm -Uvh paqueteversión2.rpm
- Actualización de paquetes
rpm -U [opciones] paquete.rpm
Ej: rpm -Uvh paquete.rpm
• Si no es compatible con versiones anteriores renombrará el antiguo como
.rpmsave
• Es mejor actualizar que desinstalar y luego instalar


- Desinstalar paquetes
rpm -e [opciones] paquete.rpm
• No es necesario indicar versión, ni extensión
rpm -e –test paquete.rpm => saber que pasa al desinstalar
rpm -e –nodeps paquete.rpm => desinstalarlo pese a problemas de
dependencias
rpm -qa grep paquete => busca un paquete concreto
rpm -qa => lista de paquetes
rpm -qi paquete => información del paquete
rpm -qc paquete => muestra ficheros de configuración
rpm -qd paquete => muestra ficheros de documentación
rpm -qR paquete => muestra todas las dependencias del paquete
rpm -ql paquete => muestra donde está instalado
- Verificación de paquetes
rpm -V [opciones] paquete.rpm
rpm -Va => verifica todo el sistema de paquetes
- Instalación de ficheros fuente
• Es necesario tener el compilador C++
• Descomprimimos el paquete
tar -xzuh paquete_src.tgz
• Situarse en el directorio donde se ha extraido el programada
• Configurar la precompilación => ./configure
• make [all] => makefile(Compilación)
• Instalación => make install
• Ventaja => se puede instalar en cualquier plataforma
yum => actualización automática de programas a través de internet
/var/cache/yum => guarda cabeceras y paquetes sin instalar
/etc/yum.conf => configuración de los servidores
Sintaxis:
yum [opciones] [comando] [paquete]
yum install paquete => instalar
yum update [paquete] => actualiza paquetes asegurando dependencia
yum check-update => revisa paquetes a actualizar
yum remove [paquete] => borra paquetes
yum lista => lista los paquetes que pueden ser instalados
--download-only => solo descarga
system-config-packages => agregar y quitar paquetes el cd de instalación
up2date => herramienta gráfica para actualizar paquetes
alien => convierte distintos sistemas de paquetes
alien -r paquete.deb => obtenemos paquete.rpm
alien -d paquete.rpm => obtenemos paquete.deb


Comandos de DEBIAN
dpkg => comando para instalar paquetes en Debian
dpkg -i paquete.deb => instalarlo
dpkg -s paquete.deb => información
dpkg -r pquete.deb => desintala
gsynaptic => instalador de paquetes en Debian. Actualiza a través de Internet
apt => actualiza paquetes debian
servidores => /etc/apt/sources.list
Descargar => apt-get install paquete.deb
apt-get remove paquete.deb
TEMA: La Shell Bash
- Shell (caparazón)
• Procesador de órdenes que sirve para ejecutar comandos
• También sirve como lenguaje de programación
• También para formar comandos más complejos combinando comandos simples (alias)
- Bash => Bourne Again Shell (La shell de Bourne viene de nuevo)
• La que tiene Linux por defecto
• Ejecuta órdenes leídas desde entrada estándar o desde fichero
• Devuelve 0 si la ejecución de una orden se realiza sin errores y un valor distinto de cero
si existen err ores.
- Otras Shell => /bin/csh
/bin/ksh
/bin/zsh
/bin/bash2
/bin/bsh
/bin/false
- Variables de entorno para la bash
• Definición de una variable:
nombrevariable=valor
apellido=espejo
• Exportar una variable para que sea visible en esta shell y en todos los pr ocesos hijos
export “nombrevariable”
• Ver el valor de una variables
echo $nombrevariable
• Se puede poner como valor de una variable un comando
micomando=ls
$micomando


• set => visualiza el nombre y valor de las variables de entorno
- HOME => directorio de comienzo de usuario
- PATH => lista de directorios separados por “;” en los que la shell busca para
encontrar los comandos. Escoge el primero que encuentre.
- PS1 => el prompt o indicador de inicio que presenta bash al usuario
- PWD => directorio de trabajo actual
- HISTSIZE, HISTFILE => tamaño del histórico de comandos
- Ficheros de inicio de la bash
• /etc/profile => inicializa variables: USER, PATH, LOGNAME, etc
Crea máscara => umask
Ejecuta /etc/profile.d/*.sh
• Después ejecuta
~/.bash_profile
~/.bash_login
~/.profile
• Al terminar se ejecuta ~/.bash_logout
• Si se una shell interactiva y no es el comienzose ejecuta ~/.bashrc
- Personalizando el prompt
• Variable PS1
• Valor predeter minado => PS1=”[\u@\h\w]\$”
• echo $PS1 Ej: PS1=inca
- \d => fecha
- \h => nombre del ordenador
- \H => nombre del ordenador con dominio
- \s => nombre de la shell
- \t => hora
- \u => nombre de usuario
- \w => directorio de trabajo
- \$ => # superusuario $ usuario normal
- \T => hora en formato 12h
- \W => nombre del directorio actual
- \@ => hora en 12
- Alias
• Nombrar con una sencilla palabra un comando complejo
• alias => ver o asignar alias
• unalias => quitar alias
Ej: alias ver=”ls -la”
- Historia de órdenes
• Ordenes tecleadas con anterioridad
• set -o hystory => da acceso a la shell a la histora de órdenes
• HISTSIZE => número de órdenes que se guardad (Defecto 1000)
• HISTFILE => fichero utilizado (Defecto => ~/.bash_history)
• HISTFILESIZE => número de líneas que guarda. Se trunca el fichero para contener no
más de HISTFILESIZE


- Los Builtings (órdenes internas)
• Comandos que ya vienen implementados en la bash
• No hay que buscar comando externo
• A diferencia los externos se buscan en el directorio path
- Redirección
• Antes de ejecutar una orden la E/S puede ser redirigida
• Descriptor fichero 0 => entrada estandar (teclado)
• Descriptor fichero 1 => salida estandar (pantalla)
• Descriptor fichero 2 => salida error estandar (salida estandar)
• Redirección de entrada “<” => [n] <>” => [n] > salida
• Añadir a la salida redirigida “>>” => [n] >> salida
Ej:
-ls > lista.txt
-ps -ax > p.txt
uname >> p.txt
-ls > lista.txt 2>&1 => salida estandar la r edirige a lista.txt y la de error se redirige a
la salida que es le fichero lista.txt
-ls 2>&1 > lista.txt
- Tuberías
• Secuencia de una o más órdenes separadas por el carácter “”
• Orden1 orden2......
• La salida estándar de orden1 se conecta a la entrada estándar de orden2
• Cada orden de la tubería se ejecuta como proceso separado
Ej:
rpm -qa grep httpd
cat lista.txt wc -l => cuenta las líneas de lista.txt
cat /etc/passwd grep alumno => busca alumno en /etc/passwd
ls -la more => salida página a página
- Listas de comandos
• Secuencia de comandos simples o tuberías separadas por operadores: “;” , “&” , “&&” ,
“” y terminada en “;” , “&” o retorno de carro
• comando1;comando2 => ejecuta secuencialmente los 2 comandos
Ej: ls; ps
• comando1 && comando2 => comando2 se ejecuta si comando1 se ejecuta
satisfactoriamente (es decir devuelve código o)
Ej: ls && ps
• comando1 comando2 => comando2 se ejecutará si y solo comando1 falla (devuelve
distinto de o)


- Expresiones
• test expr => evalua expresiones (si es verdadera devuelve 0 y si es falsa devuelve
distinto de 0)
• También se puede usar corchetes [expr]
• Las expresiones:
-opción fichero (ver fotocopias)
Ej: -e fichero => si existe ese fichero
-d fichero => si es un directorio
• Binarias:
fichero1 -nt fichero2 => verdad si fichero1 es más reciente
fichero1 -ef fichero2 => verdad si ambos tienen el mismo número de inodo y
dispositivo
fichero1 -Ot fichero2 => verdad si fichero1 es más antiguo
• Cadenas
-z cadena => longitud 0
-n cadena => longitud no es 0
cadena = = cadena2 => compara cadenas
! =
< >
• arg1 OP arg2 => -eq => igual
-ne => distinto
-lt => menor
-le => menor o igual
-gt => mayor
-ge => mayor o igual
- Evaluación aritmética
• Precedencia de operador, paréntesis (fotocopias)
- Combinación de expresiones
• (expresión) => cambiar precedencia
• ! expresión = negar
• expresión1 && expresión2 => si ambos es verdadero
• expresión1 expresión2 => si alguno es verdadero
BUCLES
• Until
until condición; do listacomandos; done => ejecutará hasta que la condición sea 0
• While
while condición; do listacomandos; done => ejecutará mientras la condición devuelva 0


• For
for nombre in palabras....;
do
listacomandos
done
– Sustituye el nombre por palabras en cada ciclo
– Si palabras no existe se asume la lista de parámetros ($@)
– Ej: for i in manuel ana luis;
do
echo $i
done
SENTE NCIAS CONDICIONALES
• If
if condición ; then
comandos
[elseif condición ; then
comandos]
[else comandos alternativos;]
fi
Ej:
if [ -e /etc/hosts ] ;
then
cat /etc/hosts
else
echo El fichero hosts no existe
fi
• Case
case palabra in
patron1 patron2....) comandos;;
patron3 patron4....) comandos;;
*) comandos
esac
Ej:
echo Introduce animal:
read animal
case $animal in
caballoperrogato) echo -n “cuatro”;;
hombremonopato) echo -n “dos”;;
*) echo -n “un numero desconocido de”;;
esac
echo “patas”


• break, continue, exit
– break => termina el bucle
– continue => continua con la siguiente interacción no terminado el bucle actual
– exit => detiene la ejecución actual del script
Ej:
a=1
while true
do
echo $a
a=`expr $a + 1`
if [ $a -gt 10 ];
then
fi
echo se termino
select => visualiza un menú de opción
select i [in lista]
do
ordenes
done
Ej:
PS3=”Opcion:”
select i in Listado Quien Salir
do case $i in
Listado) ls -l ;;
Quien) who ;;
Salir) exit 0 ;;
*) echo Opcion incorrecta
esac
done


Ficheros de órdenes (shell scripts)
– Ficheros de texto que contienen comandos de la shell
– Al invocarse desde la shell se lee y se ejecuta
– Debemos dar permiso de ejecución => chmod a+x “script”
– Si la primera línea empieza por # se especifica el intérprete de comandos que aparece a
continuación
Ej: # /usr/bin/perl
– Si no aparece se utiliza el intérprete por defecto
– Argumentos => variable que se transmite cuando se invoca un script. También se
llaman argumentos posicionales:
$0 => nombre del propio scripts
$1......$9 => parámetros
Ej:
echo $0
echo $1 $2
./param primero segundo
$0 $1 $2
– read variable => toma una línea de entrada de usuario y la asigna a una variable.
– Variables especiales
$# => número de argumentos
$* => cadena completa de argumentos
$? => código de retorno de la última orden ejecutada. Si es 0 error, distinto de 0 no
hay error
$@ => cadena de argumentos como lista de cadenas
Ej:
for i in $@ ;
do
echo $i
done
– shift nº => desplaza n posiciones los argumentos
Ej:
echo $1
shift 1
echo $1
shift 1
echo $1
– # => comentarios
– expr => ejecutar operaciones aritméticas
Ej:
i = `expr $i + $h`
i=8
h=9
i = `expr $i $h`
echo $i


– Funciones => agrupación de un conjunto de órdenes usadas frecuentemente
Ej:
error()
{ echo Erro de sintaxis
exit 2
}
if [ $@ = 0 ];
then
error
else
echo Hay $@ argumentos
fi
– Señales y orden trap
• Ciertos eventos generan señales que se envían a los procesos en ejecución
Ej:
logout => envía señal 1 a los procesos batch
delete => envía señal 2 a los procesos activos
kill PID => envía señal 15 al proceso PID
• La orden trap captura señales antes de matar al proceso
• trap -l => lista de señales
• Sintaxis => trap argumento señal
Ej:
trap 'echo adios; exit' 2
while true
do
echo hola
done



EJERCICIOS
– Crea:
if [ ! -d $1 ];
then
mkdir $1
chmod 700 $1
fi
Si no existe la carpeta la crea y le da esos permisos
– Comprobar
if [ $@ = 0 ];
then
echo Debes introducir argumentos
exit 1
fi
for i in $@
do
if [ -f “$1” ];
then
echo -n “$1 es regular”
if [ -x $1 ];
then
echo “ejecutable”
else
echo “no es ejecutable”
fi
elfi [ -d “$1” ];
then
echo “ $1 es un directorio”
else
echo “$1 es una cosa rara o no existe”
fi
shift
done
– Fecha
semana=`date cut -c 0-3`
case $semana in
lun) echo Hoy es lunes ;;
mar) echo hoy es martes ;;
mie) echo hoy es miercoles ;;
jue) echo hoy es jueves ;;
vie) echo hoy es viernes ;;
sab) echo hoy es sabado ;;
dom) echo hoy es domingo ;;
esac


– Contador
a=42
while [ $a -le 53 ]
do
echo contador = $a
a=`expr $a +1`
done


Administración del sistema de impresión
– Desde la versión 9 de Red Hat Linux se utiliza CUPS como sistema de impresión
predeterminado, antes se utilizaba LPRng.
– Menú principal / Configuración del sistema / Impresión
– Desde la línea de comandos => system-config-printer => gráfica y texto
system-config-printer -tui => texto
– Ficheros implicados => /etc/printcap
/etc/cups/* => cupsd.conf => configuración de cups
printers.conf => configuración impresoras
– Tipos de cola de impresión
Conectada localmente => Puerto paralelo /dev/lp0
Puerto USB /dev/usb/lp0
Conectada CUPS (IPP) => servidor que ejecuta CUPS por tco/ip
Conectada UNIX (LPD) => servidor ejecuta LPD
Conectada WINDOWS (SMB) => Samba
Conectada NOVELL (NCP) => Novell
Conectada de JetDirect
– Conectar una impresora de red IPP (Servidor ejecutando IPP)
• Compartir la impresora en el servidor (Menú contextual)
• habilitar en el cortafuegos cliente-servidor el puerto UDP 631
• Agregar la impresora en la máquina cliente
• Tipo conectada CUPS (IPP) Ej: cola /printers/hp
– system -config -printer -tui --Xexport > fichero
Guardar fichero de configuración de las impresoras
– system -config -printer -tui --Ximport < cups =""> stop
start
statut
restart
– Administración web http://ip:631
Comandos relacionados con la impresión
• lp,lpr => enviar un trabajo a la impresora
• lpq => ver cola de impresión
• lprm nº trabajo => elimina un trabajo de la cola de impresión
• lpc => comprobar el estado de la impresora
status, enable[imp/all], disable[imp/all], start[imp/all], stop[imp/all], restart
• lpstat => estado de la cola de impresión. Información impresora cups
• cancel nº => cancela un trabajo
• enable imp => activa impresora => /usr/bin/enable hp
• disable imp => desactiva impresora => /usr/bin/disable hp
• lpadmin -p imp [opciones] => administrar impresoras
• accept imp => acepta peticiones para la cola /usr/sbin/accept hp
• reject imp => denega peticiones para la cola /usr/sbin/r eject hp


• lpmove job dest2 => mueve trabajos a otra cola
Clases => grupos de impresoras. Envía el trabajo a la primera impresora disponible
Cuotas de impresión
• Se almacenan en /etc/cups/printers.conf
• usr/sbin/lpadmin -p hp -o job-quota-period = 604800 (segundos)
-o job-k-limit = 30 (kbytes)
-o job-page-limit = 100
Restricciones de acceso
• /usr/sbin/lpadmin -p -u allow:all
-u allow:pedro,juan
-u deny:luis,maria
-u allow:@grupo1
SAMBA
• Usa el protocolo SMB para compartir archivos e impresoras en la red, compatible con
Windows, OS2 y Linux entre otros.
• Permite compartir y acceder a recursos con Servidores Windows
– NFS => compartición de carpetas solo en Linux
– Fichero de configuración => /etc/samba/smb.conf
– Formado por dos programas que se ejecutan en demonios => smbd y nmbd
– Proporcionan cuatro servicios clave:
• Servicios sobre archivos e impresoras
• Autenticación y autorización
Estos dos son en smbd
• Resolución de nombres
• Anuncio de servicios en la red (browsing)
Estos dos en nmbd
– Arrancar el servicios
service smb { start/stop/restart/reload/status/condrestart }
– El fichero smb.conf
• Está dividido en secciones que son nombres entre corchetes
• Cada sección designa un recurso compartido. Existen tres secciones especiales:
[ global ], [ homes ], [ printers ]
• testparm => comando para ver si el fichero de configuración es correcto y vuelca los
recursos compartidos
• Sección global: se aplica al servidor SAMBA en general.
• Ej: netbios name = PC6 (nombre netbios del servidor)
server string = servidor Samba (descripción)
workgroup = nombre (nombre del grupo)
• Sección homes: genera recursos compartidos en tiempo de ejecución. Cuando un
usuario solicita un recurso previa autenticación de nombre/contraseña y dicho recurso
no existe se conecta al recurso home, siempre que la autenticación sea correcta. El
nombre del nuevo recurso es el nombre de usuario. Si no se proporciona el atributo
path, se tomará el directorio $HOME.


– Atributos usuales
– path = /home/usuarioSamba/%u
– guest ok = yes => no es necesaria autenticación
– comment = comentario
– read only = yes => solo lectura
– writeable = yes => escritura
– Crear un recurso compartido
[ recurso ]
comment = Archivos públicos
path = /home/anónimo
read only = no
public = yes
[ publico ]
path = /datos
public = yes
writeable = yes
only guest = yes
– Cliente Samba => smbclient
• smbclient -L servidor => ver recursos
• smbclient //servidor/recurso
mismos comando que FTP
• smbclient -U usuario //servidor/recurso => autentificado
– Autenticación de usuarios en Samba
/etc/samba/smbusers => usuarios Samba (alias)
/etc/samba/smbpasswd => usuarios/contraseñas
• Las contraseñas van encriptadas (W' 95 service pack 3)
• Usuarios deben existir en el sistema
• cat /etc/passwd mksmbpasswd.sh > /etc/samba/smbpasswd
• smbpasswd usuario => cambia contraseñas
• smbpasswd -a usuario (debe existir en Linux)
• mount -t smbfs -O username = angel, passwd = angel
//pc1/recurso /mnt/redes
– Opciones de red
• host allow => permitir
• host deny => denegar
Ej: host allow 172.26.0. => 172.26.0.0/24
• subredes => 192.18.1.
• nombres de dominio => servidor1.inca.edu
• nombres de subdominio => .inca.edu
• ALL => todos
• ALL EXCEPT => todos menos

lunes, 2 de junio de 2008

32...

32, los años que cumplí el Sábado 31 de Mayo, la verdad que no tenía mucho ánimo de fiesta, pero se dieron las cosas para que se junten alrededor de 30 personas en casa, entre amigos del barrio que se avisaron unos a otros, los amigos 2600, de igual modo, familia y tambien del trabajo, Matias y su novia Alicia y asi es que fueron llegando y la verdad que la pasé muy bien.
Comimos empanadas, panchos, un poco de lechón que trajo mi primo Ernesto de Santiago del Estero, gaseosas y un poquito de tinto. Hubo globos en los que hicimos un poco de arte y despues terminamos la noche haciendo un mundial de Pro Evolution Soccer 2008 en la PS2.
Con los regalos la verdad que se portaron! Daniel y los amigos 2600 me trajeron un multitap y 2 joysticks para la PS y Lorena, Matilde y Carlos un router Linksys WRT54G asi que ahora tengo libertad de usar mi notebook por toda la casa sin estar conectado a un cable. Juanchi me regalo una camisa que esta buenísima y hoy la estreno para ir al trabajo. Cerca de las 12 de la noche Lore dice "LA TORTA!", se me estaba terminando el cumpleaños y no habiamos cortado la torta! asi que cuchillo en mano, empezamos con vela tipo bengala y feliz cumpleaños cantado por todos y finalizado esto a repartir porciones de torta que me regaló Matilde.


domingo, 25 de mayo de 2008

Como montar un CD-ROM o DVD en Solaris

Montaje del CD-ROM (Entorno operativo Solaris)

Prerrequisitos

Si monta la unidad de CD-ROM desde un sistema remoto utilizando NFS, el sistema de archivos de CD-ROM del sistema remoto debe exportarse con acceso "root". También debe montar este sistema de archivos con acceso "root" en el sistema local.



Procedimiento

Para montar el CD-ROM en el Entorno operativo Solaris:

Inicie una sesión como usuario con autorización root.

Inserte el CD-ROM en la unidad.

Si el Gestor de volúmenes (vold) se está ejecutando en el sistema, 3 el CD-ROM se monta automáticamente como /cdrom/cd_label si el CD tiene una etiqueta o /cdrom/unnamed_cdrom si no está etiquetado.

Si el Gestor de volúmenes no se está ejecutando en el sistema, realice los pasos siguientes para montar el CD-ROM: 3

Determine el nombre del dispositivo escribiendo el siguiente mandato: 3 ls -al /dev/sr* awk '{print "/" $11}' 3

Con este c0mando se obtiene el nombre del dispositivo de CD-ROM. En este ejemplo, con el comando se obtiene la serie /dev/dsk/c0t6d0s2.

Escriba los comandos siguientes para montar el CD-ROM:
mkdir -p /cdrom/unnamed_cdrom

mount -F hsfs -o ro /dev/dsk/c0t6d0s2 /cdrom/unnamed_cdrom donde /dev/dsk/c0t6d0s2 representa el nombre del dispositivo que se obtuvo en el paso anterior y /cdrom/unnamed_cdrom representa del directorio de montaje del CD-ROM.

Si está montando la unidad de CD-ROM desde una máquina remota utilizando NFS, el sistema de archivos de CD-ROM de la máquina remota debe exportarse con acceso de root. También debe montar dicho sistema de archivos en la máquina local con acceso de usuario root.

Finalice la sesión.

Ahora, el sistema de archivos de CD-ROM está montado. Para ver el contenido del CD-ROM, coloque el disco en la unidad y entre el comando cd /cdrom donde cdrom es el directorio del punto de montaje de CD-ROM.

jueves, 8 de mayo de 2008

Gato drogado!

Es buenisimo lo que hace este gato.
¡No te pierdas el video!

miércoles, 7 de mayo de 2008

De recorrida por Youtube

Mientras miraba y buscaba cosas sin sentido en YouTube, dije, esta lista de favoritos la tengo que dar a conocer, asi que decidí ir posteando algunos de los videos que la componen.

Aca van algunos y en futuros posts, iré agregando mas.

Excelente boxeador

Ladron estupido.

Escape perfecto


Mujer al volante


Espera que se levante la persiana

domingo, 4 de mayo de 2008

Noche de guardia...

Me duelen los ojos... hace aproximadamente 15 horas que estoy frente a mi notebook, chequeando que finalizen correctamente los backups mensuales que empezaron a correr el sabado 3 de Mayo y se encolaron, produciendo que en mi dia de descanso, este trabajando en forma remota, reasignando drives y viendo como se abortan los grupos de clientes que deberian estar corriendo desde las 12 de la noche, porque aun no finalizaron los que empezaron ayer...
Con este panorama me pongo a escribir como para despejar la cabeza.
La verdad que esta semana fue caótica, el sabado pasado lo operaron a Tomas de urgencia, porque se comió unos huesos y le perforaron el intestino, produciendole una peritonitis, de la que gracias a Dios, se esta recuperando.
Por suerte caimos en una veterinaria con muy buenos profesionales, los doctores Joaquin Mestre y Carlos Di Leo, de Veterinaria Guayaquil, francamente, nos dieron una seguridad tremenda desde el primer momento.
El sabado Tomas, paso la noche en la veterinaria y para nosotros fue tremendo no tenerlo en casa. Me despertaron a las 3 de la mañana del domingo, atendi asustadisimo pero era de la oficina y despues no nos pudimos dormir hasta que fuimos a buscar a Tomas.
Lunes y martes tuve un seminario de Cisco en Puerto Madero, al que solo pude asistir el lunes, ya que el martes hubo un pedido de un cliente de banca para restaurar unos backups, asi que... como era de esperarse, me quede hasta que todo finalize correctamente.
El miercoles trabaje hasta tarde, porque me puse con la instalacion de un DNS nuevo, ya que desde hace un par de semanas, volvi a administrar los DNS de Advance, aparte de administrar backup.
El Jueves, una noticia mala. Me avisaron a las 7 de la mañana del fallecimiento de una vecina, que cuidaba a mi vieja desde que se enfermó y no podia valerse por si sola, hasta que se fue de este mundo. No solamente eso, me cocinaba, me planchaba las camisas y por sobre todo, me queria y yo a ella.
Realmente, algo muy triste.
Por la tarde vinieron a almorzar a casa la mamá de Lore, el novio, la tia, dos primas y tratamos de pasarla bien, con esta noticia en el medio.
La verdad, me levantaron el animo. Hace bien estar acompañado en esos momentos.
El viernes fue de terror!
Arranque a las 9 y volví a casa a las 12 de la noche.
En el medio, prepare las cintas para los backups mensuales, las que que hay que entregarles a AdeA y de yapa a las 20:00 arranque con una migracion en los DNS para Presidencia de la Nacion, que salió perfecta.

Como no todo son rosas... siendo ahora las 8:25 AM me voy a ir a dormir, ya que como dije al principio, toda la noche despierto, es como demasiado por hoy.

martes, 22 de abril de 2008

Esclavizados por la fibra óptica

En los años 60 las empresas solían organizare de forma que en un mismo edificio se encontraban todos los departamentos y secciones, organizados de forma mas racional posible para obtener el máximo rendimiento de los medios disponibles, tanto humanos como mecánicos.
Como ejemplo podemos recordar las típicas comedias yanquis de esa época, protagonizadas por Jack Lemmon, en las que adentro de un edificio trabajaban infinidad de personas y donde ocurrían mil historias distintas.
Resulta curioso ver en esas películas salas enormes, plantas enteras repletas de mecanógrafas, secretarias, vendedores, contables, etc. Ahora esto solo sucede en los ministerios, donde los funcionarios tendentes al inmovilismo, heredaron las formas de esa época. Y como todos sabemos, la Administración, no es en absoluto rentable.
Por lo tanto es fácil comprender que en las grandes empresas actuales, donde antes trabajaban 10000 personas, ahora solo hay 500 o 300. En la reducción de plantillas, dependiendo del negocio, las computadoras han tenido mucho que ver. Se dice que también se crearon nuevos puestos de trabajo gracias a ellas, pero no en la misma proporción ni mucho menos.

En Madrid se encuentra la sede de IBM en España. Es un edificio enorme, y por fuera da la sensación de que ahí trabajan muchísimas personas. La realidad es que la cantidad de espacio dedicada a salas de reuniones, despachos vacíos y a los dos enormes patios interiores, es sin duda mucho mayor que el espacio dedicado a las zonas de producción.


El tele trabajo es una nueva forma de concebir el trabajo. Los nuevos medios de comunicación con conexiones ininterrumpidas con mas ancho de banda para Internet, telefonía IP, telefonía celular con posibilidad de acceder al mail o MSN, notebooks cada vez mas potentes y livianas, diversos hot spots de WI-FI en casi cualquier lugar publico, e incluso, el poder aprovechar algún router wireless mal configurado para acceder a Internet, etc. permiten realizar tareas sin tener que ir a la oficina. Pero hay dos formas de entender lo que significa esto: La primera es la que busca el empresario. No tiene que tener apenas infraestructura ya que sus empleados trabajan como autónomos, ahorra costos y encima resulta más productivo porque fomenta la competitividad entre sus empleados “virtuales”

La segunda es la que vive el trabajador, que a pesar de la inseguridad de trabajar de forma virtual y de los costos de infraestructura que tiene que asumir, puede rentabilizar su tiempo y dedicarse a otros asuntos que complementen su salario.

Pero, como todo en este mundo tiende a corromperse, el tele trabajo tiene ya su propio gusano, las “empresas de servicios” que funciona de la siguiente forma: En instalaciones tercermundistas trabajan neosiervos o cuasi esclavos que por 4 euros son puestos a disposición de otras empresas que precisan de trabajadores. Países como La India y Argentina son hoy por hoy los que lideran la oferta de servicios que demanda el resto del mundo y que por un puñado de € traducidos en poco mas de 5$ a 1€ de nuestro devaluado peso, estamos dispuestos a alquilarnos, a sabiendas que, ellos tienen los contactos y nosotros el conocimiento.

Empresas como IBM, EDS, Unisys, Accenture o HP son quienes lideran el mercado del outsourcing o venta de servicios a nivel global, pero también hay “pequeñas” consultoras que pueden resolver los problemas de todo aquel que quiera tercerizar su área de sistemas con personal mediocre debajo de un team leader senior, que intentaran hacer lo que puedan para solucionar los problemas y sino, escalarán hasta que el cliente quede satisfecho, ahorrando tremendamente los costos en sueldos y maximizando las ganancias.

¿En que se traduce esto? Simple, $2000 entra 3 veces en $6000, por lo tanto, puede cubrirse una rotación de 24 horas de lunes a viernes con juniors y tener un senior que solucionara lo que los juniors obviamente, por falta de experiencia, no podrán y solo por $12000 al mes, sin ningún tipo de gasto extra, ya que en gran parte de los casos, los tomaran monotributistas y ellos deberán hacerse cargo de sus impuestos, obra social, etc. Pero no todas son pálidas, mientras el cambio siga favoreciendo a España, EEUU o Inglaterra, tenemos trabajo asegurado y nuestro país no es la excepción, ya que bancos, laboratorios, diarios, empresas postales y una larga lista de rubros, están migrando sus servicios a sitios externos, con personal repartido para atender a todos estos clientes desdibujándose para cumplir con los objetivos pautados en los SLA´s comprometidos y así los clientes, van contrayendo sus departamentos de sistemas al mínimo indispensable para microinformática o la atención de sus contingencias.

La lista de empresas que se dedican al negocio del outsourcing es extensa y aca van algunas de las que recuerdo que me llamaron en los ultimos 3 meses:

IBM para importante cliente offshore
EDS para administrar Linux no recuerdo para quien
HP
Sofrecom para Telecom
Sofrecom para CTI
Sofrecom para Nextel
El Corte Ingles para administrar desde Bs. As. Control-M de sus tiendas en España
Ceitech para administrar Unix

Tanta tecnología para al final volver a la Edad Media.



No se pierdan los videos que hicieron un grupo de trabajadores informáticos de España.


















sábado, 19 de abril de 2008

Comandos en unix

Hoy estaba precisando hacer un ldapmodify y no me acordaba como era la sintaxis, por lo tanto, recurri a google, como siempre ;) y encontre un documento que me parece util postear acá, no solo porque tiene lo que precisaba, sino, que ademas, hay una lista bastante extensa de comandos de uso comun y no tanto que les puede ser de gran utilidad, despues de largas horas de trabajo, en las que se hacen mas frecuentes las lagunas mentales, al menos en mi caso ;) o si solo queres aprender, aca están.

No me pidan que haga la traduccion, ya que es bastante claro y estoy con nada de tiempo :( me toco la guardia activa y estoy en la oficina.



--> change file date stamp
touch –t 199906042020 filename

--> move partitions
ufsdump 0f - /dev/rdsk/c0t0s0s0 (cd /home; ufsrestore xv -)


--> lay down file system with 1% minfree and inode density
newfs –m1 –i81920 /dev/rdsk/c0t0d0s0

--> check file system
fsck /dev/rdsk/c0t0d0s0

Q: starting sybase
login as sybase, run: ./install/RUN_SYBASE

Q: logging in as sybase sa
isql -U sa

--> dump a partition and pipe to gzip. Watch > 2GB limit
ufsdump 0f - /home gzip - >/tmp/home.dump.gz

--> rewind offline a tape
mt –f /dev/rmt/0 rewoffl

--> only allow 300MB for user /tmp access
swap - /tmp tmpfs – yes SIZE=300M

--> verbose interactive restore
ufsrestore –ivf /dev/rmt/1

--> remove a printer from a class
lpadmin –p level5-line1 –r level5-line


--> truss a command
truss –-f -–o /tmp/log.txt

--> [DB] feed a script into sybase
isql –Urfe_xfer -Uuser -Ppassword -isqlscript >>blah.txt

--> make a printer class
lpadmin –p level5-line1 –c level5-line

--> remove level2-line2 printer from printer class level2-line
lpadmin -p level2-line2 -r level2-line


--> add level2-line3 to printer class
lpadmin -c level2-line -p level2-line3

--> [DB] how to change your password in isql
sp_password password, password-new

--> move a directory
tar cf - ./games (cd /tmp; tar xvBpf - )

--> [DB] run a sybase script, and dump to file
$ISQL -i$SCRIPTFILE -U$USER -D$DATABASE -P$PASS_ENC >> $SCRIPTLOGFILE

--> move a directory to another server
tar cf - ./games rsh brucey cd /tmp; tar xvBpf -


--> check for SUID SGID files
ncheck -F ufs -s /dev/dsk/c3t0d0s

-- remove core files
find / -name core –exec rm –f {} ; -o –fstype nfs –prune


--> rebuild man pages
catman –w –M man-page-directory or /usr/lib/makewhatis


--> vi command to show special characters
: set list


--> adding an account
useradd -u 120 –g dls -d /apps/dls –s /bin/ksh -c "comment" -m dls

--> create a mysql database
mysqladmin -uroot -ppassword create ebs

--> starting mysql database
/etc/rc.d/init.d/mysql.server start
/usr/local/bin/safe_mysqld

--> Invoke CPAN module install
perl –MCPAN –eshell

--> dump to zip
ufsdump 0f - /filesystem /opt/local/gzip - > /tmp/dump.gz

--> shutdown mysql databse
/usr/local/bin/mysqladmin shutdown -ppassword
/etc/rc.d/init.d/mysql.server stop

--> test the loading of a module
PERL_DL_DEBUG=255 perl -e 'use CGI;'

--> shows open files
fuser –cu /

--> Writing a Daemon:
1. edit /etc/services
add service and port.
2. edit /etc/inetd.conf
add in: edwardd stream tcp nowait root /bin/sh /bin/sh /home/sextone/bin/SERVER.mine
3. kill –HUP inetd.conf

--> how to mount a file system
mount /dev/dsk/c3t0d0s4 /apps/data/easysoft/DEVT

--> look at sar log
sar –f /var/adm/sa/sa24

--> write file checksums and size
cksum filename

--> show storage array info
ssaadm display /dev/rdsk/c1t5d2s0
--> show all disks on device d
luxadm display d

--> examine for a specific OS finerprint
nmap –sS -p 80 -O -v = examine OS

--> show print jobs
/usr/ucb/lpq –Plevel6

--> Scan for known ports. log it. do OS scan.
nmap –sS -F -o foo.log -v -O www.foo.com//24 =

--> show status of printer
/usr/ucb/lpc status

--> make a swap file:
dd if=/dev/zero of=swapfile bs=1024 count=65535
mkswap ./swapfile
chmod 600 ./swapfile
swapon ./swapfile

--> show open files for process
lsof –p PID

--> show open files for all TCP connections
lsof –iTCP

--> show open files for internet address
lsof -iTCP@10.20.2.9

--> as above
lsof -i @10.20.2.122

--> examine tcp ports
lsof -iTCP@sarah:1-50000

--> show open files for user.
lsof –u username

--> show processes that has the file in use.
lsof /apps/cms/ECMS-Server

--> show open files and retry every 5 seconds
lsof –p process-id –r 5

--> mount a floppy
mount -t vfat /dev/fd0 /mnt/floppy

--> check here for debugging processes and errno.h for errors
/usr/include
/usr/include/sys
/usr/include/sys/errno.h

--> scp a whole directory, preserve mods
sudo scp -prv devel webadmin@203.19.123.140:/home/httpd/cgi-bin

--> take processor 2 and 3 offline.
psradm -f 2 3
--> show processor stats verbose.
psrinfo –v

--> how to skip grant tables in mysql (over ride security)
/usr/local/libexec/mysqld -Sg

--> how to feed in an SQL program
mysql rm all files in directories
find . -type f -exec rm {} ;

--> dump packets to a capture file
sudo snoop –o /tmp/tcp.txt cp

--> backup one liner
tar cvf - /home/ebs gzip - > ebs.tar.gz

--> Look at selected packets in capture file
sudo snoop -i /tmp/tcp.txt

--> unzip and pipe to tar
gzip -dc watch packets from two servers.
snoop sarah brucey

--> enable ip masquerading
/sbin/ipchains -P forward DENY
/sbin/ipchains -A forward -s 10.100.100.100/8 -j MASQ

-> view su log file
cat /var/adm/sulog

--> establish a default router or gateway.
echo "sagacity.com" > /etc/defaultrouter
echo "10.100.100.100 sagacity.com sagacity" >> /etc/hosts
change /etc/nsswitch.conf so that hosts has files, dns
edit resolv.conf put in
search .
nameserver 203.7.132.98

--> turn off automounter on /export/home.
vi /etc/auto_master, comment out /export/home

--> configuration file for sudoers
/opt/local/etc/sudoers

--> building ssh-1.2.27 on x86Solaris2.6 needed a few things:
/usr/openwin/bin in path
/usr/xpg4/bin in path
declare AR="/usr/xpg4/bin/ar"
declare NM_PATH="/usr/xpg4/bin/nm"

--> snoop network packets and get size and time stamp entries.
snoop -S -ta empa1

--> access perl CPAN
perl -MCPAN -e shell
install DBI

--> search for no password entries and lock all accounts.
for i in `passwd –sa grep NP awk ‘{print $1’`
do
echo “locking $i”
passwd –l $i
done


--> delete from a tar
tar --delete -f fs_backup_Sunday.tar home/ebs/tmp

--> Example on backing up files to tape. Must specify non rewinding, else you will over-write the files.
for file in `ls`
do
echo "sending $file to tape..."
echo `date`
tar cvpf /dev/rmt/0n $file
done

--> making/adding a partition.
1. use fdisk to make a parition.
2. mkfs -t ext2 -c /dev/hda11
3. mount -t ext2 /dev/hda11 /opt2
4. update /etc/fstab

--> rebuild the windex file
catman –w –M /usr/share/man



--> execute tar on remote host sarah and send tarball to standard output,
which becomes standard input for tar xvf – and the file gets dumped locally,
in this case on crawl. you have to cd to dir before tar or else you
will include path in tar
ssh maggie "cd $DIRNAME; tar cvf - $BASENAME" (cd $TPATH; tar xvf - )

--> dump a remote filesystem and send it to local tape drive.
ssh -–x $fw /usr/sbin/ufsdump 0cf - $fs dd obs=63k of=$TAPE

--> encrypt filename 1 and output to 1.crypt file
crypt 1.crypt ; rm 1

--> decrypt filename 1.crypt and stdout to screen
crypt send a file to tape
tar cvpf /dev/rmt/0 filename

--> quicker way to search and replace in vi
: %s/existing/new/g

--> shows where and which shared library files an application uses.
ldd binary

--> shell script stuff:
# repeat a command 100 times
x=100
while [ $x -gt 0 ]
do
command
x=$(($x-1))
done

--> Something very important to remember about partitions
It is important to note that Cylinder 0 contains the disklabel, which
contains the partition table. A normal filesystem can be placed
starting at Cylinder 0, since it will not touch the disklabel.
If you lay down a raw device, for a database, over Cylinder 0,
then you will completely lose all your partitions. You will then
have to restore the disklabel, and backup from tape if you happen to do this.

--> move a partition
find . cpio -pdm /apps

--> cron structure
min hour day-of-month month weekday command

--> PatchDiag Tool. Get patches from:
http://sunsolve.sun.com/private-cgi/patchpage.pl
patchdiag.xref is available at: http://sunsolve.sun.com/sunsolve/patchdiag/
/opt/local/bin/patchdiag -x /opt/local/lib/patchdiag.xref > patchdiag.`uname -n`

--> command showing system parameters
/usr/sbin/sysdef

--> Get Ambient Temperature of Server
/usr/platform/SUNW,Ultra-4/sbin/prtdiag -v

--> good ps formatting showing percent cpu first.
ps -edf -o pcpu,pid,user,arg

--> full details on ps
/usr/bin/ps –A -o user,pid,pcpu,pmem,vsz,rss,tty,s,stime,time,args

--> chown the hidden files as well.
find . -print -exec chown -R sextone:staff {} ;

--> The nsradmin command is a command-line based administrative
program for the NetWorker system. Normally nsradmin monitors
and modifies NetWorker resources over the network.
/usr/sbin/nsr/nsradmin

--> Spray a server
-c number of packets
-d delay in microseconds
-l pakcet size in bytes
/usr/sbin/spray -c 1 –d 20 -l 4096 maggie

--> Turn on bold.
bold=`tput smso`
offbold=`tput rmso`
echo "${bold}You must be the "root" user to run this script.${offbold}"

--> good way to send a dir to tape
tar cf /dev/rmt/0n directory

--> example of bringing up an interface
ifconfig hme0:1 inet 10.2.25.52 up

--> show all connections
netstat –f inet

--> rpcinfo makes an RPC call to an RPC server and reports
what it finds.
rpcinfo -b 390109 2 sort -u

--> rewind a tape fast
show loaded modules
/usr/sbin/modinfo

--> find world readable files and dirs
find / -type d –perm -2 –print
find . -type f –perm -2 -print

--> adding in a boot alias, eg:
boot sarahroot1 –s
nvalias sarahroot1 /sbus@1f,0/sunw,fas@e,8800000/sd@9,0:a

--> clever way to archive
tar cvf - `find . –print` >/tmp/dumpfile.tar
tar xvf - tee to a file
echo "Start Date/Time: `date`" tee -a $LOG_FILE


--> read a snoop file
snoop -i anz-telnet.snoop

--> write a snoop log (this will count the number of connections, which is pretty neat).
snoop –osnoop.log sarah

--> set default run level. 5 for gui.
/etc/inittab

--> show all exported filesystems
showmount -e crawl

--> shows all configurable variables for tcp interface.
sudo ndd -get /dev/tcp
- ?
eg:
sudo ndd -get /dev/tcp tcp_conn_req_max_q
128
ndd /dev/arp ?
ndd /dev/ip ?
ndd /dev/tcp ?
ndd /dev/udp ?
ndd /dev/icmp ?



--> set sticky bit on group files, only the owner can change the mode.
--> the +l is mandatory file and record locking while a program
--> is accessing that file.
chmod g+s,+l file

--> print duplex landscape 4 qudrant printing
mpage –t –l –4

--> install a patch
installpatch .

--> check to see if a patch has been installed
showrev –p grep package name


--> unzip, untar in a /tmp directory
zcat 104708-16.tar.gz ( cd /tmp; sudo tar xvf - )

--> check out revision level on ssa controller
/usr/sbin/ssaadm display controller


--> unzip and untar a file without having to create an intermediate tar file
sudo gzip -dc /tmp/270599/post-EOD.tar.gz tar xvf -



--> selectively extract from a tar archive
tar xvf /tmp/iona.tar ./iona/.sh_history

--> send a bunch of files to tape
tar cf /tmp/rules.tar ruleb* objects.C *.W

--> examine section 5 of man
man -s 5 signal

--> shows signals and definitions of structures, eg sigaction
/usr/include/sys/signal.h

--> location of the limits file on solaris
/usr/include/limits.h

--> send an attachment via email from command prompt
uuencode file.tar.gz file.tar.gz mailx –s “backup” root@crawl

--> zero a file
cat /dev/null > isam.log

--> good way to restore from cdrom a binary file
zcat running su as a user then ssh
su - dls-PROD -c "/opt/local/bin/ssh drp-stagger "cd /tmp; /bin/ls" "


--> verify a newfs format
sudo newfs –Nv /dev/md/dsk/d96


--> making lost_found. must be 8192 bytes in size.
mkdir ./lost+found;chown root ./lost+found; chgrp root ./lost+found ;chmod 700 ./lost+found’; cd ./lost+found
nofiles=0 ; while [ "$nofiles" -le 650 ] ; do ; /usr/ucb/touch $nofiles ; nofiles=`expr $nofiles + 1` ; done


--> execute lynx
lynx -cfg /usr/lib/lynx.cfg


--> sed search example
sed '/Sep 25/!d; /castill/!d' /var/log/syslo

-->should only be used at the EEPROM
boot –r
--> should be used at single user mode
reboot -- -r
--> should be used in multiuser mode
touch /reconfigure



--> performing a remote dump

find MFASYS
cpio -oc gzip -c
ssh brucey -l chaup dd obs=18k of=/dev/rmt/0n

- to extract -
cd /ssa/emphasys/sybase/dump
dd ibs=18k if=gunzip -c cpio –idc


--> boot block located here.
/usr/platform/`uname –i`/lib/fs/ufs


--> getting a server on the network
add hosts entry for IP address
clear configs: ifconfig pe0 unplumb
ifconfig pe0 10.20.2.27 netmask 255.0.0.0 up
route add default 10.20.0.1 1
verify the routing table: netstat –rn
add resolv.conf entry: domain rabobank.com.au nameserver 192.192.192.252
edit /etc/nsswitch.conf change hosts to files, dns


lesson here is to unplumb interface, and let ifconfig setup the routing.
if you specify an ip address and a netmask it will manage
the routing and the broadcasting.


--> find all, files associated with PID 22240
/usr/proc/bin/pfiles 22240
find file based on inode
find –i number
“ncheck –i number


--> good redirection example
./a.out trash

--> synchronize files from one server to another. This is useful for
synchronizing database dump files, binary files, etc. This is definitely a powerful tool.

rsync -avz -e ssh --rsync-path="/usr/local/bin/rsync" `pwd` myhost.com:/home/ebs/public_html

--> Example Awk Script

# run with awk -f/tmp/1.awk /etc/group

BEGIN { FS = ":" }
{ print $1 "sort" }
{ nlines++ }
END { print nlines }

--> awk example.
awk '/#/ {print "Got a comment"}' /etc/hosts

--> delete every 2nd field in file
awk '{$2= ""; print}' datafile > datafile.new

--> awk average/standard deviation program

x1 += $1
x2 += $1*$1

END {
x1 = x1/NR
x2 = x2/NR
sigma = sqrt(x2 - x1*x1)
if (NR > 1) std_err = sigma/sqrt(NR - 1)
print "Number of points = " NR
print "Mean = " x1
print "Standard Deviation = " sigma
print "Standard Error = " std_err

-->
Setting Prompt
PS1="`hostname`($LOGNAME)-->"

mount syntax
mount 10.0.20.41:/mnt/cdrom /mnt/cdrom

ldapsearch syntax
ldapsearch -h mainldap -b 'o=vialta.com,c=us' cn="*"

ldapmodify syntax
ldapmodify -h masterldap -D 'cn=Directory Manager,o=vialta.com,c=US' -r -f /tmp/user.ldif -w
"password123"

ldapadd syntax
ldapadd -f user.ldif -D 'cn=Directory Manager,o=vialta.com,c=US' -w "password"

ldapdelete syntax
ldapdelete -f martin.ldif -D "cn=Directory Manager,o=vialta.com,c=US" -w "password"

sendmail debugging
sendmail -bt -d0.1,21.12
truss -fae -o /tmp/truss.log -p
Count System Calls
truss -c

Debugging processes in Linux: strace
strace -a80 -f
strace -a80 -f -p

manually setting date/time
date 07091427.00 Syntax: (mmddhhmm.ss)


make a large file
(linux) dd if=/dev/zero of=bigfie bs=1024 count=65536
(sun) mkfile bigfile 65m

count number of open files
lsof awk '{ print $1 }' uniq -c sort -n awk '{print $1}' awk ' BEGIN { a=0; } {a+=$1;} END {print a; }'


apache bench marking
/usr/sbin/ab -n 100 -c 100 http://register.vialta.com/registe/index.ecgi

using dtterm with ssh, $1 is the hostname argument, eg: ./go va5-prod-101
dtterm -geometry 80x50 -n $1 -title $1 -bg $BG -fg $FG -cr $CR -sb -aw -e /usr/local/bin/ssh.binary
$LOGNAME@$1 &

global search and replace in vi
:%s/oldstring/newstring/g

Using php to md5 encrypt
echo "" php -q

delete all ldap entries
$ ldapsearch -h mainldap -b 'o=vialta.com,c=us' cn="*" >/tmp/all.ldif
$ ldapdelete -c -f /tmp/all.ldif -D "directory Manager,o=vialta.com,c=us" -w password
run again the ldapdelete, this will remove non-leaf nodes. it is a hack but it works.


testing radius logins
Usage: radtest login passwd server:port nas_port_id secretkey

radtest ebs password localhost localhost testing123

Writing to HPOV
opcmsg sev=normal app=Apache MsgGroup=Web_Apps node=va5-prod-101 msg_text=Your message
goes here.
sev=normalwarningminormajorcritical

LDAP and STDIN
ldapsearch -h mainldap -b 'o=vialta.com,c=US' cn=ed_904 ldapdelete -c -D "cn=Directory
Manager,o=vialta.com,c=US" -w secret_password
ldapsearch -h mainldap -b 'o=vialta.com,c=US' cn=ed_904 ldapdelete -c -D "cn=Directory
Manager,o=vialta.com,c=US" -w secret_password
Use -c to continue if errors are detected.

Oracle: deleting a username
sqlplus register ; SQL> exec maint.del_user('USERID');

Oracle: Decryption
select reg_crypt.pwd_decrypt(screen_pwd) from screen_name where screen_name='username';
select reg_crypt.pwd_decrypt(screen_pwd) from screen_name where screen_name='username';
select reg_crypt.pwd_decrypt(security_question_answer) from screen_name where
screen_name='username';
select vbl_crypt.cc_decrypt(credit_card_num) from vbl_user_creditcard;
select reg_crypt.pwd_decrypt(CENTER_PASSWORD) from CENTER where
CENTER_PUBLIC_SCREENNAME='username';

LDAP Information
ldapsearch -s base -b cn=monitor 'objectclass=#'

MPortal: fix mysql links for web guide management
use portal; select * from web_title where title_id=16 and title_code=0; update web_title set
title_code=11 where title_id=16 and title_code=0;

keyword search all files and print file names and date/size
find . -type f -exec grep -l search_word {} ; xargs ls -al

remove encrypted key from cert
( cd /etc/httpd/conf/ssl.key && openssl rsa -in home.vialta.com.key -out home.vialta.com.key)

broadcast ping
for host in `ping -b 10.0.101.255 -c 2 awk '{print $4}' grep "^10" sed s/.$//g`; do echo -n "$host ";
nslookup $host 2>/dev/null grep Name; echo ;done


Find all files a process tries to open
truss -t !all -t open

ldapsearch operators

AND operator:
ldapsearch -h mainldap -b 'ou=1,o=vialta.com, c=US' "(&(suffixflag=0)(loginname=eval*))"

OR operator:
ldapsearch -h mainldap -b 'ou=1,o=vialta.com, c=US' "((loginname=thanurak)(loginname=ebs))"

Adding a NewLine character with sed. Use a backslash
ldapsearch -h mainldap -b 'ou=1,o=vialta.com, c=US' cn=ebs sed
s/suffixflag=0/userid=000000000000/g

Adding a New field to existing LDAP database (this will add new field: foo=bar
ldapsearch -h masterldap -b o=vialta.com,c=us cn=loopy awk '{print} /suffixflag=0/{print
"foo=bar"}' ldapmodify -r -h masterldap -D "cn=Directory Manager, o=vialta.com, c=US" -w xxx


Continuing a process
If /proc/$PID/status ever shows a State: T (Stopped), then start it with this signal:
kill -SIGCONT pid

Oracle shutdown
export ORACLE_SID ; sqlplus internal ; select * from v$database; shutdown immediate;

Interesting Oracle views
v$sga;
v$session


using uuencode for file transfer
$ uuencode filename filename mail esexton@sun1-noc
eg: uuencode tnsnames.ora tnsnames.ora mail esexton@sun1-noc
tar cvf - * uuencode backup.tar mail esexton@sun1-noc
(linux) $ tar zcvf - * uuencode backup.tar.gz mail esexton@sun1-noc
(sun) $ tar cvf - * gzip - uuencode backup.tar.gz mailx esexton@sun1-noc

LDAP protocol 2 specific commands

LDAP protocol 2 query:
ldapsearch -LLL -P2 -x -h mainldap.vialta-inc.com -b 'o=vialta.com, c=us' cn=guest
ldapdelete -x "cn=j2, ou=1, o=vialta.com, c=US" -w
ldapsearch -x -LLL -b 'o=vialta.com, c=US' cn=j2
ldapadd -x -f newadd1.ldif -D "cn=Directory Manager,o=vialta.com,c=us" -w ""

Tailing tcpdump
tcpdump -l udp > dat & tail -f dat


mysql date select
SELECT * FROM `connection` where login_time > "2002-12-01 00:00:01"


RPM extract commands
Get a content listing:
rpm2cpio web-programs.rpm cpio -it

Extract Specific File:
rpm2cpio web-programs.rpm cpio -idm

Extract Entire contents:
rpm2cpio web-programs.rpm cpio -ivd

Sendmail
Testing aliases and routing.
echo "3,0 nreynolds@orchestream.com" sendmail -bt -d60.1
echo "3,0 nreynolds@orchestream.com" sendmail -bt -d60.1 -d21.12

use sed to translate a space to a newline
sed 's/ /

/g' filename

Bind version
nslookup -q=txt -class=CHAOS version.bind. 0
dig @host version.bind chaos txt
named -v

Query MX record
nslookup -q=mx server-name

freebsd
pkg_add package.tgz
MySQL

Too many indexes on a table will cause delete operations to be slow.


Linux Route
route add -net 10.0.19.0 netmask 255.255.255.0 gw 10.0.101.4
/etc/sysconfig/static-routes: eth0 net 10.0.19.0 netmask 255.255.255.0 gw 10.0.101.4
route del -net 10.0.19.0 gw 10.0.101.4 netmask 255.255.255.0