Vous êtes sur la page 1sur 15

APUNTES UNIX

Libre no significa gratis. Significa que no hay que pagar patentes

Unix es un S.O. multiproceso y multitarea. Además es multiplataforma. Se puede utilizar en


plataformas 386, 486, Pentium, Pentium II, AMD, Amiga, Atari y en otras plataformas como:
ALPHA, ARM, PowerPC, etc
Es multiprocesador. Es decir: puede utilizar INTEL o SPARC-C hasta 16 procesadores. Tiene una
protección de procesos en la memoria de manera que ninguno puede colgar el equipo y además
carga los ejecutables por demanda. Es decir, solo se cargan en memoria aquellas partes del
programa que se está ejecutando en ese momento. Además es compatible con SYSTEM V, y BSD.
Y es compatible a un 95% con SCO y SVR III y IV a nivel binario

Tiene pseudoterminales.

Siempre crea el usuario raiz (ROOT). Este usuario es el superusuario y puede hacer de todo.
En Ubuntu el usuario root viene desactivado, y para ejecutar comandos en modo root (o como SU)
se utiliza el comando sudo (los comandos siempre en minusculas)

Para apagar Debian ( o Ubuntu): shutdown x, siendo x el numero de segundo que tarda en apagar
Para ejecutar cq comando como SU en Ubuntu, entramos en la terminal
por ejemplo:
sudo nano (para abrir un editor de texto)
(me pide pass)
sudo nano (ya no pide pass)
sudo su (paso a ser SU)
kill para matar procesos

03/04/2017

Para las unidades hay hacer referencia a los archivos que las gestionan
En el directorio /dev tenemos los diferentes dispositivos
fd son los floppis
pty son los terminales (las configuraciones de )
sda son discos duros
tty son las diferentes pantallas
los puertos usb que están definidos

Yo para hacer referencia a un floppy, si yo quiero copiar:


pepe@pepe: /dev$ cp . /dev/fd0 (copia todo de donde estamos al floppy)

Directorios importantes:
en bin están todas las librería y comandos de linux (rm, ps...)

En etc las configuracion que nosotros tengamos donde vamos a trabajar: calendarios, software...

En user son las librerías para los usuarios

En sys las librerías del sistema


En home normalmente se crean las carpetas de los usuaris

El comando tar, con la opcion -c, comprime los archivos al tiempo que los mete en uno solo
¿Para qué? Para hacer copias de seguridad
Para extraer ese fichero es con la opcion -x

El comando find es para buscar archivos


find ruta -name nombre - > find /usr/bin -name Matilda.mkv

El comando grep busca expresiones regulares dentro de un archivo


Vamos a crear un archivo que se agenda:
sudo nano agenda
(se abre el editor y escribimos)
Manolo 981889977
Roberto 981660544
Pepe 981 332211
Luis 981001234
Maria 981123456

Guardamos los cambios


Para ver el contenido de agenda lo podria hacer con cat
cat agenda
Y me saldrían todos los nombres con todos sus teléfonos

Si quisiera buscar un telefono en concreto, por ejemplo el de Pepe, podría hacer:


cat agenda | grep pepe
Tambien valdría:
grep pepe agenda

El comando hostname (el nombre de la máquina)

Comando lpr y lpq


El lpr manda trabajos a la cola de impresión
El lpq visualiza el estado de la cola de impresión

El comando date nos muestra la fecha

El comando mail hay que instalarlo. No viene por defecto


Qué es el mail? Nosotros aqui obviamente tenemos el entorno gráfico y podemos utilizar los
correos en Ubuntu. En Debiam Solaris, Unix... no hay aplicaciones de correo
Con el comando mail podemos enviar un correo a otro usuario
El recuve tenemos los correos recibidos
Para leer un correo es poner mail y el numero del correo

Para cerrar una sesion (terminal ) es con el comando exit

para apagar tenemos el botón o bien desde el terminal:


sudo shutdown t, siendo t el numero de segundo que va a tardar la máquina en apagarse
El fichero passwd (dentro de etc) contiene la información de todos los usuarios definidos en la
máquina
El fichero es modificable:
sudo nano /etc/passwd

es un ID generado por la máquina y es único para cada usuario


Despues viene el GID, que es el identificador del grupo al que pertenece el usuario
Despues viene el nombre completo del usuario y los datos que nos pedia en la creación
A continuación el directorio de inicio donde se va a colocar el usuario cuando inicia la sesión
A continuación el intérprete de comandos que se va a ejecutar al comienzo
Y esta x de aquí (despues del nombre) le indica a la máquina que va a utilizar claves en la sombra
(shadow). En caso de que no haya una x ahí va a aparecer la contraseña encriptada en sitio de la
propia x

Si aparece la x significa que tiene que validar la contraseña contra el fichero shadow
sudo cat /etc/shadow

¿Como añado usuarios?


sudo add nombreusuario

¿Para borrar usuarios?


userdel nombreusuario

¿Dónde tengo la info de los grupos?


sudo cat /etc/group
pepe:x:1000: expliacion -> nombre : x (shadow) : GID : usuarios del grupo

Para crear grupos a mayores: addgroup

sudo nano /etc/localhost -> nombre del equipo y la direccion IP que tiene
sudo nano /etc/host -> guarda los nombres de los servidores con el sistema de paquetería que tiene
Para añadir una red:
DEBIAN
4/4/2017
para actualizar debian: apt-get update

06/04/2017
para las conexiones seguras: comando ssh

UBUNTU

sudo cat/etc/sudores: para ver otros miembros que son sudo

vamos a editar el fichero hostame de ubuntu


sudo nano/etc/hostname
cambiamos el nombre por el de ucliente01 y guardamos
despues reiniciamos para que se registren los cambios
y lo comprobamos con el comando hostname
no server: sudo nano/etc/host: cambiamos dserver por server00 (hay que poner el nombre de la
máquina)
en debian: sudo nano etc/hosts ponemos ucliente01 (en la segunda fila)
Vuelta a empezar 25-04-17

df -h particiones que tengo montadas


cat /etc/hostname nombre del servidor
cat /etc/resolv.conf contiene el dominio del servidor
ifconfig la configuracion de red

lo que tengo que instalar en el servidor


servidor DHCP

apt-get install isc-dhcp-server

cuando instalamos el debian solo cogimos ssh y poco mas. Podiamos haber cogido este
ahora va a dar error pq esta sin configurar
ahora ponermos los rangos ip

editamos
nano /etc/dhcp/dhcpd.conf

Protocolo de configuración dinámica de Host (DHCP) es un protocolo cliente-servidor que


proporciona automáticamente un host de protocolo Internet (IP) con su dirección IP y otra
información de configuración relacionados como, por ejemplo, la puerta de enlace
predeterminada y la máscara de subred.
Es decir, tú le das un rango y cada nuevo cliente que se conecte le va a asignar una nueva ip dentro
de ese rango. Tmabién se puede poner como opción que a cierto equipo (MAC) se le asocie una IP
siempre fija
scripts
Llevan una extension sh y el nombre del script

nano primero.sh
todos los scripts empiezan por almohadilla y exclamacion, que indica que es un archivo de
comandos y debe ser interpretados
y hay que indicarle cual es el interprete #! /bin/bash

si quiero comentario pongo almohadilla # esto es un coment

a veces se ponen 2. si un archivo tiene 2 quiere decirse que es un valor que existía antes de la
modificacion del archivo
si modifico algo, le pongo doble almoh, para saber. Por convenio

a continuacion lo que quiera, como por ejemplo:

clear
date -> ffecha sistema
cal -> calendario

lo guardo

escribo: sh primero.sh

ls -l -> vemos los permisos que hay


vemos que esto tiene pocos permisos. Debo cambiar los derechos para que sea ejecutable por todos

clear
chmod 755 primero.sh -> recordemos rwx rwx rwx

vamos a hacer otro

#! /bin/bash
clear

char -> comilla simple o doble comilla


si empiezpo con doble comilla acabo con ella

nombreVariable = "dasdas"

si la quiero numerica:
edad=18

edad=edad+1
edad1=edad
tercera==edad+edad1
fecha='date | cut -d (delimitador para cortar va a ser espacio) " " -f (cuantos voy a cortar?4) 1,2,3,4'
fecha='date | cut -d " " -f 1,2,3,4'

como pido valores por pantalla?


read nombre apellido ->me pediria variable nombre y variable apellido, pero no pide

read -p "introduce un nombre y un apellido" nombre apellido

ahora, para ver la lo guardo ponemos:

echo "el nombre es $nombre y el apellido es $apellido"

Vamos a cambiar la variable predefinida


IFS=","

condicionales, el if y el while (bin, no bind)


if ' cd /temp/prueba > /dev/null'

si lo puede ejecutar no va a devolver que es cierto


si no quiero que visualice el error, lo mandamos a tomar viento

if ' cd /temp/prueba'

IF

if condicion
then
comando1
elif condicion2
then
condicion3
fi
ejercicio
script que pida un usuario y un grupo
y que compruebe si existe ese usuario y si existe el grupo

nano existen.sh

#! /bin/bash
clear
read -p "teclee nombre usuario" usuario
read -p "teclee nombre grupo" grupo

grep -e busca una cadena string en un archivo de texto

if `grep -e "^$usuario:.*" /etc/passwd > /dev/null `


then
if `grep -e "^$grupo:.*" /etc/group > /dev/null `
then
echo "usuario y grupo existen"
else
echo "existe usuario pero no el grupo"
fi
elif `grep -e "^$grupo:.*" /etc/group > /dev/null `
then
echo "existe grupo pero no usuario"
else
echo "no existe ni uno ni otro"
fi

CONDICIONES MÚLTIPLES

case condición in
caso1) comandos;;
caso2) comandos;;

...

*) comandos;; <- estos es como el default, se da solo si no se cumple nada de lo otro


esac

nano letras.sh
voy a pedir un valor por pantalla y ver si son letras, numeros u otro caracter

Aqui hay listas, duplas y diccionarios (en vez de arrays)


lista, entre ()
dupla, entre corchete
en una dupla, a parte de crear vector y guardar vector, guarda la direccion de memoria donde está el
valor
[a-z,A-Z]
y otra dupla del 0 al 9 [0-9]

read -n 1(un caracter)


read -p (un texto)

EJERCICIO

menu con 3 opciones. Si no [1-3], decir opcion incorrecta

SELECT

select variable in "Caso1" "Caso2"


do
break
done
case variable in ...
EXPRESIONES

`expr num1 + num2` devuelve la suma aritmética


`expr num1 – num2` devuelve la resta
`expr num1 * num2` devuelve el producto
`expr num1 / num2 ` devuelve la division
`expr num1 > num2 ` devuelve cero si el numero 1 es mayor que el numero 2
...
... lo mismo con las otras opciones (<,>,>=,<=, !)
...

Lunes 15-05-2017

Script que dé las opciones:


sumar
restar
multiplicar
dividir
que pida dos numeros por pantalla y que dé el resultado de la operacion solicitada

#! /bin/bash
echo "1 – suma"
echo "2 – resta"
echo "3 – multiplicacion"
echo "4 – division"
read – p "escoge" opcion
read -p "primer valor" num1
read -p "segundo valor" num2
case opcion in
1) echo "El resultado de la suma es `expr $num1 + $num2`";;
2) echo "El resultado de la resta es `expr $num1 - $num2`";;
3) echo "El resultado de la multiplic es `expr $num1 + $num2`";;
4) echo "El resultado de la division es `expr $num1 + $num2`";;
OTRA OPCION
Aqui lo que hacemos es: si nos da un valor de opcion incorrecta, nos da un mensaje de error y no
entra en el siguiente if, que es el que hace las cuentas

#! /bin/bash
a=0
echo "1 – suma"
echo "2 – resta"
echo "3 – multiplicacion"
echo "4 – division"
read -p "introduce la opcion" opcion
case opcion in
[1-4]) a=1;;
*) echo "Debes pulsar un valor entre el 1 el 4";;
esac

if [a=1]
then
read -p "valor del primer numero" num1
read -p "valor del segundo numero" num2
if [ $opcion ==1 ]
then
operacion = `expr $num1 + $num2`
echo "La suma entre $num1 y $num2 es $div"
if [ $opcion ==2 ]
then
operacion = `expr $num1 + $num2`
echo "La resta entre $num1 y $num2 es $div"
if [ $opcion ==3 ]
then
operacion = `expr $num1 * $num2`
echo "La multiplicacion entre $num1 y $num2 es $div"
if [ $opcion ==4 ]
then
if [$num2==0]
then
echo "no se puede dividir entre cero"
else
operacion =` expr $num1 / $num2`
echo "La division entre $num1 y $num2 es $div"
fi
fi
Expresiones con cadenas

`expr length cadena` -> devuelve la longitud de una cadena

`expr inde cadena-donde-buscar cadena-a-buscar`

busca la cadena del 1er operando dentro de la cadena del 2º operando, y devuelve el valor donde se
encuentra dicha cadena

ejemplo:
expr index "123456ab1111" "ab" -> devuelve un 7

`expr substr cadena posicion num_caracateres


extrae, de una cadena, a partir de una posicion, x caracteres

#! /bin/bash
clear
cadena="abcdefgh"
echo "mi cadena es $cadena"
Ejercicio
Tenemos una cadena. Visualizar por pantalla la longitud de esa cadena y pedir una cadena a buscar
dentro de la cadena que tenemos. Y visualizar en qué posicion se encuentra

#! /bin/bash
clear
cadena="Esto es una cadena"
echo "La longitud de la cadena es `expr length $cadena`"
read -p "introduce la subcadena que quieras buscar en la cadena" subCadena
echo "la subcadena empieza en la posición `expr index $cadena $subcadena`"

ETTERCAP
programa para sacar datos de clientes conectados a mi red

Selecciono red
Acepto
aqui abajo me arranca los servicios y arriba me pondría todos los hosts que están encendidos, con
sus direcciones IP
Si me coloco encima de una direccion IP y le doy a start sniffing
Cualquier operacion que se haga contra esa direccion IP me va a decir el usuario y la contraseña

En el momento que se loguee alguien contra una wifi o contra un servidor

Vous aimerez peut-être aussi