Está en la página 1de 6

CTRL + E --> al final de la linea

CTRL + A --> Al inicio de la linea

history --> Muestra el historial de comandos


!nº --> Ejecuta el nº de comando del historial

CTRL + R --> permite buscar el comando que hemos introducido anteriormente.

echo $? --> Muestra el codigo de retorno de un comando (la variable '?')

echo "2 * $USER 2 = 4" --> 2 * botij0 2 = 4 ( Las comillas dobles no impiden que se
asigne el valor de la variable)

echo '2* $USER 2 = 4' --> 2 * $USER 2 = 4 (Las comillas simples si impiden)

date && whoami --> whoami solo se ejecutará si date devuelve un 0 porque se ha
realizado correctamente.

date ||whoami --> Funciona como un or, si se puede ejecutar la primera no hace la
segunda

echo Hola, la fecha es $(date) --> nos permite ejecutar ordenes en el script '$()'

find -name "*conf" -size +4k -exec gzip {}\;

cat /etc/passwd | wc -l

echo hola | gzip -f | gunzip

'-' --> Significa stdin

df | gzip -f | sudo nc 34.175.177.22 80

cat /etc/passwd |cut -d: -f1,3

echo $SSH_CONNECTION | cut -d' ' -f1

===================================================================================
======================
SESION 3/10/2022
------------------
Hemos instalado Gcloud CLI

para iniciar la configuracion hemos introducido el comando: "gcloud init"

Nos ha pedido elegir el proyecto, autenticarnos con un enlace que nos da una clave
de autenticacion

Luego hemos elegido la zona y ya lo tenemos disponible.

gcloud config configurations list //muestra la lista de configuraciones.

gcloud compute instances list // Muestra las VM

gcloud compute instances start operaciones // Inicia la máquina especificada, en


este caso operaciones.
gcloud compute ssh operaciones --command="df -h" //Ejecuta el comando especifico.

gcloud compute config-ssh // Actualiza el archivo ssh automaticamente.

tr // Traduce caracter a caracter, no utilizar para palabras. Ejemplo:


tr aeiou 12345
 ✔  at 17:50:02 
hola como estas
h4l1 c4m4 2st1s

cat /etc/passwd | tr : , // Convertimos el archivo passwd en formato csv.

cat /etc/passwd | cut -d: -f1 | tr "\n" , // muestra todos los usuarios en un
parrafo separados por coma.

ps ax | tr -s ' ' | cut -d' ' -f1,5 // Otro ejemplo de tr.

cat syslog | tr -s ' ' | cut -d' ' -f3 | uniq -c | sort // Utilizacion de uniq -c
(Muestra solo las lineas únicas) y sort.

cat syslog | tr -s ' ' | cut -d' ' -f3 | uniq -c | tr -s ' ' | tr ' ' , |cut -d, -
f2,3 | sort -t "," -n -k1

cat /etc/passwd | cut -d: -f1,3 | sort -t":" -n -k2

cat /etc/passwd | cut -d: -f1,3 | sort -t":" -n -k2 | tr [a-z] [A-Z]

cat /etc/passwd | grep --color -i bug // parametro -i ignora mayusculas y


minusculas.

cat /etc/passwd | grep --color -i ^[sum] // ^s muestra las lineas que empiezan por
s, u, m.

cat /etc/passwd | grep --color -i -v ^[sum] // -v hace lo contrario, en este caso


las que no empiece por s, u, m

cat /etc/passwd | grep --color -i [n]$ // que acaben por n

cat /etc/passwd | grep --color 's.\+n$'

cat syslog | grep --color '[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+' //Pilla las lineas


que presentan ips

cat syslog | grep --color '[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+' //-o

grep --color '[0-9]\{8,9\}-[A-Z]' // DNI

=======================================================
CAPITULO DE SCRIPTS EN BASH
========================================================
chmod +x miprimershell // permiso de ejecucion

script de apagado/encendido de máquinas googlecloud.

------------------
SESION 17/10/2022
------------------
script de adivinar el número secreto.
Vamos a probar el proof of work / Bitcoins.

echo $BLOCK:673fr |shasum -a 512 //Simulamos el hash de un bloque.

script simulando como seria minar un bloque de bitcoin tanto en python como en
bash.
---------------------------
Google clouD --> SERVERLESS

Almacenar objetos(blobs), (no se pueden fragmentar) es Cloud Storage.

Cloud Filestore --> No muy utilizado, Clásico.

==============
CLOUD STORAGE
==============
Creamos un Bucket nuevo.

Un bucket es un ontenedor de Blobs.

Todo lo almacenado tiene que estar cifrado at-rest. (Clave gestionada por google o
por el usuario).

No existen los ficheros dentro de los buckets (fotos/P1.jpg). es como si le pones


un prefijo al nombre.

-------------

sudo gsutil cp *.txt gs://aso-git-botij0/

sudo gsutil rsync . gs://aso-git-botij0/

sudo gsutil -m rsync . gs://aso-git-botij0/fotos //utiliza el multihilos.

----------------------------------
SESION 24/10/2022
----------------------------------
Hemos creado un archivo main.py con la funcion que hicimos
en el cloud function.

El archivo del programa esta en ~/cloudstorage/main.py

- $ virtualenv venv

- $ source venv/bin/activate

- (venv) $pip install -r requirements.txt

Si no estáis en la máquina de google, entonces tenéis que usar vuestras


credenciales para autenticaros.
Lo podéis hacer con:

- $ gcloud auth application-default login

Hemos creado un repositorio de google llamado processors


Hemos creado una nueva clave ssh en operaciones
Hemos clonado el repositorio en operaiones y posteriormente hemos subido los
archivos main.py y requierements.txt
- $ git clone
ssh://javier.gonzalez.soldado@gmail.com@source.developers.google.com:2022/p/aso-
git-jgs/r/processors

- $ git add main.py requirements.txt

- $ git config --global user.email "javier.gonzalez.soldado@gmail.com"

- $ git config --global user.name "Javier Gonzalez"

- $ git commit -a -m "Initial commit"

- $ git push

Hay que actualizar la funcion cada vez que actualicemos el codigo del repositorio.

PUB/SUB
"""""""
Producto/Consumidor. (Ver imagen).

- $ gcloud pubsub topics list

- $ gcloud pubsub topics publish payments --message "Hola PUBSUB"

- $ gcloud pubsub subscriptions list

- $ gcloud pubsub subscriptions pull payments-sub --limit 10

- $ gcloud pubsub subscriptions pull payments-sub --limit 10 --auto-ack

Hemos hecho un ejercicio en el cual hemos implementado


una nueva funcion (payments) para procesar esos mensajes.
La funcion no es por HTTP sino por pub/sub y utiliza el codigo del repositorio.

Echar un ojo al Logger de python.

EJERCICIO EXAMEN: PUBLICAR 2000 MENSAJES EN PUB/SUB

----------------------------------
SESION 31/10/2022
----------------------------------

Presentacion VM y Contenedores: https://hackmd.io/@ogarcia/intro-docker?


type=slide#/5

Los dockers solo funcionan en Linux.

tendremos un Linux y sobre el creamos los dockers.

Practica de docker: https://hackmd.io/@ogarcia/lab-intro-docker

$ uname -a //muestra datos de la MV.

$ docker run hello-world //Ejecuta el programa hello-world.

$ docker run -it python bash //Ejecutamos el docker de python y le especificamos


que nos devuelva una terminal interactiva (bash)

Hemos modificado/hecho un docker, el nginx, para que mueestre nuestra pagina web.

--------------------------------------
SESION 07/11/2022
--------------------------------------

Repaso de la aplicacion con nginx.

$ docker images //Mostrar las imagenes

$ docker run -p80:80 halloween //para ejecutar el docker en el puerto 80 de la


maquina principal.

$ docker build . -t myimage //Hay que reconstruir de nuevo la imagen para aplicar
los cambios.

$ docker volume create halloween //Crear un "disco duro" para el docker

$ docker volume ls //Muestra los "discos duros" que hemos creado.

$ docker run -p80:80 -it -v halloween:/almacen halloween bash //entramos en la


máquina especificando el volumen que queremos.

$ docker run -p80:80 -it -v $(pwd)/web:/usr/share/nginx/html halloween bash

PREGUNTA 1 DEL EXAMEN: EL PROFE NOS VA A DAR UNA MÁQUINA Y VAMOS A TENER A QUE
CONECTARNOS CON LAS CLAVES Y SOLO SABIENDO LA IP.

============
HTTP Y APIS:
https://hackmd.io/@ogarcia/restful?type=slide#/

POST --> solo 1 vez, creacion.


PUT --> modificacion total
PATCH --> modificacion parcial

Las cosas/recursos (http://miservidor/catalog) se nombran como sustantivos

Diferencias entre recursos y colecciones. Si haces un get devuelve colecciones.

Sobre las colecciones se pueden hacer filtros. (/ofertas?seccion=perros).

Framework te llama a ti: Framework --> programa.

Flask==^2.0.0 // Indicamos que queremos una version de Flask pero sin modificar el
MAJOR number.

$ docker run -p5000:5000 -it miapp

Procedemos a crear una politica Firewall desde la web de google para permitir el
trafico por el puerto 5000 (donde esta nuestra app).

$ docker run -p5000:5000 -it -v $(pwd)/app:/app miapp

$ tree //muestra el arbol.


========================================================================
FIND:
find *.conf
262 find *.conf -size4k
263 find *.conf -size+4k
264 find -size+4k
265 find -size +4k
266 find *.conf -size +4k
267 ls -l *.conf
268 find *.conf -size +4k | gzip archivo
269 find *.conf -size +4k | gzip archivos.zip
270 man gzip
271 find *.conf -size +4k || gzip archivos.zip

========================================================================
GZIP y GUNZIP:

304 echo hola | gzip -f | gunzip


305 df | gzip -f | nc 34.175.177.22 80
308 df | gzip -f | nc 34.175.177.22 80
3�*� �� ���bz�o. | gunzip -f
329 qrAgqMISoQIAYnqtby4BAAA= | gunzip -f

=======================================================================
Base64:
echo hola que tal | base64
echo hola que tal | base64 | base64 --decode
350 OCKswJqrAgqMISoQIAYnqtby4BAAA= | base64 --decode | gunzip -f | echo

También podría gustarte