Programación para La Administración de Sistemas

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 25

EXAMEN:

EXAMEN tema 1 al 6. No cae nada del tema 7 al 9. Pero hasta el 7 inclusive merece la pena
leerlo.

Preguntas cortas 4 puntos


Preguntas para programar 6 puntos. Uno de bash y otro de power shell. Parecido a las
actividades, sobre todo de powershell. De pedir datos básicamente y algún flujo de for o if
para bash. While o case es totalmente voluntario. Para powerShell. Es programación básica
en Bash y Powershell. Leer datos, escribir datos y ciclos for o if. Y hacer alguna operación
básica con los datos como sumar o cosas así.Que es bash, que es powr shell, que es ssh,
ventajas y desventajas de irte a la nube, Estructuras hibridad de control d¡remoto, lo ideal
s¡es ssh y rdp pero quizá team viewer u otras.

Apuntes Básicos de Programación para la Administración de Sistemas

1. ¿Qué es Bash?

● Definición: Bash (Bourne Again Shell) es un intérprete de comandos o shell que


ejecuta comandos leídos desde el teclado o de un archivo de script. Es ampliamente
utilizado en sistemas operativos tipo Unix y Linux.
● Uso principal: Automatización de tareas de administración de sistemas, como
manejo de archivos, programas y ejecución de procesos.

2. ¿Qué es PowerShell?

● Definición: PowerShell es un framework de gestión de configuración y


automatización de tareas, que incluye un lenguaje de scripting y un shell de línea de
comandos. Desarrollado por Microsoft, está diseñado para sistemas operativos
Windows, aunque ahora es compatible con otros sistemas operativos a través de
versiones de código abierto.
● Uso principal: Administración de configuraciones, automatización de tareas
administrativas y operaciones en sistemas basados en Windows.

3. ¿Qué es SSH?

● Definición: SSH (Secure Shell) es un protocolo que proporciona una comunicación


segura entre dos dispositivos mediante técnicas de cifrado para garantizar la
confidencialidad y la integridad de los datos.
● Uso principal: Utilizado para acceder de forma segura a computadoras remotas,
ejecutar comandos y mover archivos de un host a otro.

4. Ventajas y Desventajas de la Nube

● Ventajas:
○ Escalabilidad: Permite ajustar los recursos según la demanda.
○ Accesibilidad: Acceso a los datos desde cualquier lugar.
○ Costo: Reduce los costos de inversión inicial y mantenimiento de hardware.
● Desventajas:
○ Dependencia de Internet: Requiere una conexión a internet constante.
○ Seguridad: Posibles problemas de seguridad y privacidad si no se gestionan
adecuadamente.
○ Control: Menor control sobre la infraestructura física.

Bash:
Poweb Shell:
Programación para la Administración de Sistemas
TEMA 1. INTRODUCCIÓN A LA ADMINISTRACIÓN DE
SISTEMAS

Introducción:

Debido a la aparición de la computación en la nube y su actual auge, el rol de un


administrador de sistemas está cambiando, derivando en muchos casos hacia
DevOps (Development Operations). A medida que crece la adopción de la nube, la
atención cambia de la administración de recursos físicos a la administración de
sistemas virtuales, junto con el mantenimiento de las máquinas que alojan los
servicios.

Uno de los primeros retos de un administrador de sistemas será la migración de


cargas de trabajo de infraestructuras físicas y virtualizadas de un centro de datos
privado (onsite) a una localización offsite un proveedor de nube pública. Onsite se
refiere a una localización propia de la organización, frente a una ubicación offsite,
a la que la organización tiene acceso por red.

Linux vs. Windows

La elección de uno u otro debe estar marcada por las necesidades de la aplicación, la
organización y los usuarios.

Por ejemplo, Linux es una buena opción para una aplicación nueva, diseñada
con una arquitectura nativa en la nube, gracias al soporte nativo de
contenedores.

En el caso de una empresa con una gran base de usuarios que necesitan una
suite ofimática y acceso a varias herramientas corporativas, Windows parte con
la ventaja de facilitar la administración de políticas de seguridad de manera
centralizada.

Cuando se trata de elegir entre Windows y Linux para la administración de sistemas,


hay varios factores clave que debes considerar, especialmente en términos de
capacidades de gestión, seguridad, costos, compatibilidad y comunidad de
soporte.
1. Costo

● Windows: Generalmente incurre en costos más altos debido a licencias para el


sistema operativo y otras aplicaciones de software de Microsoft necesarias para
administrar eficazmente los sistemas.
● Linux: Es de código abierto y gratuito, lo que puede reducir significativamente los
costos operativos. Sin embargo, las distribuciones empresariales de Linux, como
Red Hat Enterprise Linux o SUSE, pueden tener costos asociados con soporte y
servicios adicionales.

2. Seguridad

● Windows: Ha mejorado significativamente en términos de seguridad a lo largo


de los años y ofrece robustas políticas de seguridad y herramientas integradas.
Sin embargo, sigue siendo un objetivo frecuente para los ataques de malware y
virus debido a su amplia utilización.
● Linux: Generalmente se considera más seguro que Windows. Su naturaleza de
código abierto permite a la comunidad detectar y corregir rápidamente
vulnerabilidades, aunque esto también requiere que los administradores sean
proactivos en la aplicación de parches.

3. Compatibilidad y Software

● Windows: Ofrece excelente compatibilidad con una amplia gama de hardware y


software, especialmente en entornos empresariales y de oficina. La mayoría de
las aplicaciones comerciales están diseñadas principalmente para Windows.
● Linux: Tiene un soporte más limitado en términos de software comercial, pero es
ampliamente compatible con software de código abierto. Además, Linux es
altamente personalizable, lo cual es una ventaja en entornos de desarrollo y para
aplicaciones específicas.

4. Facilidad de Uso

● Windows: Tiene una interfaz de usuario gráfica (GUI) familiar y fácil de usar, que
es accesible para usuarios con poco conocimiento técnico.
● Linux: Aunque las distribuciones modernas han mejorado mucho en términos de
facilidad de uso y GUIs, generalmente requiere más conocimiento técnico y
familiaridad con la línea de comandos.

5. Estabilidad y Rendimiento

● Windows: Es generalmente estable, pero puede sufrir degradación del


rendimiento con el tiempo debido a la fragmentación del registro y otros
problemas.
● Linux: Es conocido por su estabilidad y rendimiento sólido. Los sistemas Linux
corren durante años sin necesidad de reinicio y son preferidos para servidores y
sistemas críticos.

6. Administración de Sistemas y Automatización

● Windows: Ofrece herramientas poderosas como PowerShell para la


automatización y la gestión de sistemas, pero puede ser más dependiente de
soluciones basadas en GUI.
● Linux: La gestión de sistemas es extremadamente flexible debido a su fuerte
soporte para scripts y herramientas de línea de comandos. Esto es ideal para la
automatización y la gestión de servidores a gran escala.

7. Comunidad y Soporte

● Windows: Tiene un soporte extenso a través de Microsoft y una vasta cantidad


de documentación, foros y profesionales certificados disponibles.
● Linux: La comunidad de código abierto es muy activa, y hay un amplio soporte
disponible a través de foros, documentación en línea y comunidades. Además, el
soporte empresarial está disponible a través de distribuciones pagas.

Conclusión

La elección entre Windows y Linux para la administración de sistemas depende en gran


medida de las necesidades específicas del entorno, presupuesto, y habilidades técnicas
del personal.

Linux es ideal para servidores, aplicaciones especializadas y como una opción


de bajo costo,

Windows es preferible en entornos que requieren una amplia compatibilidad con


aplicaciones comerciales y facilidad de uso para usuarios finales.
Tema 2. Administración de servidores de Linux

Distribuciones de linux:

La licencia varía de una distribución a otra: aunque Linux es de código abierto, hay
distribuciones comerciales que se ofrecen con contratos de soporte. Compañías como
SUSE o RedHat no cobran por el sistema operativo, sino por el soporte que ofrecen a
sus clientes.

Entre las aplicaciones incluidas en casi todas las distribuciones, están las utilidades
GNU. Hay utilidades de manipulación de ficheros y del propio contenido de los ficheros,
de información del sistema operativo, de la sesión, de búsqueda, editores de texto, etc.
Estas utilidades son esenciales a la hora de administrar servidores en la línea de
comandos y para automatizar tareas.

Acceso remoto

Uno de los primeros aspectos que considerar para utilizar un servidor en la nube es el
acceso remoto al mismo. Al tratarse de un servidor en la nube, será necesario contar
con las herramientas necesarias que lo permitan: Telnet, SSH (Secure Shell), Otros

Telnet es un protocolo de capa de aplicación, utilizado en Internet o redes de


área local, para proporcionar acceso remoto mediante una conexión de terminal
virtual. La utilización de Telnet está desaconsejada, porque el tráfico no se
transmite cifrado. Para poder utilizar Telnet, es necesario que el servidor lo tenga
activado y contar con un cliente de Telnet, que habitualmente está incluido en
todos los sistemas operativos.

SSH Secure Shell (SSH) es un protocolo de red de cifrado para servicios de red
de operación segura a través de una red no segura. Su aplicación más habitual
es la de inicio de sesión remoto a servidores Linux. SSH proporciona un canal
seguro mediante una arquitectura cliente-servidor. Los sistemas operativos Linux
cuentan habitualmente con un cliente de SSH. En el caso de los clientes
Windows, el cliente más utilizado es el llamado Putty. Se trata de un cliente de
SSH de código abierto y libre.

SSH soporta el acceso con usuario y password y el uso de certificados (también


llamados pareja de claves o key pair). En muchos de los proveedores de nube pública,
el uso de certificados es obligatorio.
Existen otras formas de acceder a los servidores de forma remota, la mayoría de ellas
específicas para entornos gráficos, por lo que serán menos usadas a nivel de
automatización y administración. Algunas de ellas son:

● VNC. Virtual Network Computing es un sistema de control remoto que utiliza el


protocolo remote framebuffer (RFB) para controlar de forma remota otro
ordenador. Transmite los eventos de teclado y ratón de un ordenador a otro y las
actualizaciones de pantalla de vuelta en la otra dirección. VNC es independiente
de la plataforma, por lo que puede usarse para conectarse también a equipos
Windows. El código fuente VNC original y muchos derivados modernos son de
código abierto bajo licencia GNU.

● TeamViewer. Se trata de un desarrollo comercial y propietario, pero es posible


usarlo de forma gratuita en una de sus ediciones.

Automatización de instalación y configuración

Se indican algunas estrategias para escribir scripts útiles:

● Escribir el script incrementalmente. Conviene escribir una versión sencilla del


script e ir añadiendo funcionalidad poco a poco.
● Invocar los scripts en modo verboso. Por ejemplo, los scripts de shell se
pueden invocar con el parámetro -v, que muestra cada línea antes de ejecutarla.
● Probar en archivos locales. Antes de ejecutar el script en un entorno real,
conviene probar con archivos de prueba.
● Empezar a probar con casos pequeños. Por ejemplo, si el script va a operar
sobre una lista de elementos, conviene probar que la tarea sobre un elemento
funciona correctamente antes de introducir la lógica del bucle. No olvidar probar
las situaciones límite. Siguiendo con el caso anterior, conviene probar que el
script puede operar con un elemento, con muchos elementos y que no falla si la
lista es de cero elementos.
● Asumir que algo va a ir mal. Cuanto más control de errores incorpore el script,
más estable será. El control de errores implica tanto detectarlos como la lógica
necesaria para tratar el error: un mensaje de error legible para el usuario,
deshacer las acciones llevadas a cabo hasta el momento, etc.
● Generalizar. Un script más general es más fácil de extender a otros casos,
probablemente será más fácil de probar y, por tanto, más robusto.

Acceso remoto en la nube

Los servidores en la nube no se instalan, se despliegan. Las instancias, como


generalmente se denominan en muchos proveedores, se pueden arrancar de diversas
maneras: en una consola web, con una herramienta de línea de comandos o a través de
aplicaciones propias que usen un SDK del proveedor. Esta versatilidad ofrece
posibilidades a los administradores para automatizar los despliegues al máximo.

Un SDK, o "Software Development Kit" (Kit de Desarrollo de Software), es un conjunto


de herramientas, guías, y bibliotecas de código proporcionadas por plataformas y
servicios tecnológicos para facilitar a los desarrolladores la creación de aplicaciones que
interactúan con esos servicios. Un SDK permite a los programadores integrar y
manipular funcionalidades específicas de plataformas de software sin tener que escribir
mucho del código base desde cero. Esto es particularmente útil en entornos de nube
donde la interacción con servicios remotos es fundamental.

Tema 3. Guía de estudio de Bash

Este tema servirá de introducción para una de las herramientas de scripting más usadas
en servidores Linux: la shell Bash.

Qué es la shell

La shell es un macroprocesador que ejecuta comandos. Esta definición indica que


hay una funcionalidad donde textos y símbolos se combinan para crear expresiones
más grandes. La shell es, a la vez, una intérprete de comandos y un lenguaje de
programación. En su rol de intérprete de comandos, la shell ofrece al usuario una rica
interfaz de utilidades o herramientas de GNU. Las características del lenguaje de
programación, por su parte, permiten que estas herramientas se combinen.

Bash: Hay múltiples shells disponibles en entornos Linux y Unix. Aquí se usará Bash, ya
que está disponible prácticamente la totalidad de las distribuciones.

Características de la shell

La shell puede funcionar en modo interactivo y en modo no interactivo.

En modo interactivo, la shell acepta entrada desde el teclado, ya sea el teclado


local o un teclado remoto en una sesión SSH. El sistema operativo arranca una
shell en el momento en el que un usuario inicia una nueva sesión, ya sea una
sesión local o por SSH. Por tanto, una shell no es sino un proceso más.
En modo no interactivo, la shell lee un archivo (es decir, un script) y ejecuta los
comandos contenidos en él, línea por línea. Estos scripts pueden convertirse en
comandos en sí mismos. Estos nuevos comandos tienen el mismo estatus que
comandos del sistema en directorios como /bin, permitiendo que usuarios o
grupos puedan construir sus propios entornos y automatizar sus tareas comunes.

En cuanto a los comandos GNU, la shell permite su ejecución de modo síncrono


y asíncrono.

● En modo síncrono la shell acepta un comando, lo ejecuta y espera a que


este termine antes de aceptar el siguiente comando.
● Los comandos asíncronos continúan ejecutándose en paralelo con la
shell, mientras lee y ejecuta comandos adicionales.

Funciones

Las funciones son pequeñas subrutinas dentro de un script de shell. Son una forma de
agrupar comandos para su ejecución posterior, usando un solo nombre para referenciar
varias sentencias. Se ejecutan como un comando regular u ordinario. Las funciones de
shell se ejecutan en el contexto de shell actual; es decir, no se crea ningún proceso
nuevo para interpretarlos.

Parámetros

Un parámetro es una entidad que almacena valores. Puede ser un nombre, un número
o un carácter especial. Una variable es un parámetro denotado por un nombre. Un
parámetro se establece si se le ha asignado un valor.

Conceptos relacionados con la shell

POSIX: Portable Operating System Interface - Unix. Estándares de sistemas abiertos


Unix, que intentan asegurar la portabilidad entre diferentes sistemas operativos.

Built-in: comando que se implementa internamente por la shell, en lugar de por un


programa ejecutable en algún lugar en el sistema de archivos. Es decir, es un comando
llevado a cabo por la shell, como cd, en lugar de interpretarlo como una solicitud para
cargar y ejecutar algún otro programa, como vim. Es más rápido, ya que el tiempo que
toma cargar y ejecutar un programa es más prolongado. Puede afectar el estado interno
de la shell. Por eso, los comandos como cd deben ser built-in, dado que un programa
externo no puede cambiar el directorio actual de la shell. Otros comandos, como echo,
podrían ser built-in por un motivo de eficiencia, pero no hay ninguna otra razón.
Job control: Especialmente en entornos Unix se refiere a la capacidad para gestionar y
manipular varios procesos que un usuario ha iniciado desde una terminal o consola.
Esta funcionalidad es crucial para la multitarea en la línea de comandos y ofrece a los
usuarios la flexibilidad de manejar el comportamiento de procesos en ejecución de
manera interactiva a suspensión,,continuación o terminación de procesos.

Funciones Clave del Control de Trabajos

1. Suspensión de Procesos: Puedes suspender la ejecución de un proceso que estás


ejecutando en primer plano (foreground) y retornarlo a segundo plano (background)
usando Ctrl+Z. El proceso se detiene, y el shell te devuelve el control, permitiéndote
realizar otras actividades en la terminal.

2. Continuación de Procesos: Un proceso suspendido puede ser reanudado en primer


plano o segundo plano. Para continuar un proceso en primer plano se utiliza el comando
`fg` (foreground), que toma el último proceso suspendido (o un proceso específico si se
proporciona su identificación) y lo reanuda en primer plano. Para continuar un proceso
en segundo plano, se usa el comando `bg` (background), lo que permite que el proceso
continúe ejecutándose pero te devuelve el control de la terminal.

3. Terminación de Procesos: Puedes terminar procesos usando comandos como `kill`,


`killall`, o `pkill`, que envían señales a los procesos para terminar su ejecución. Estos
comandos pueden especificar qué señal enviar, siendo la más común `SIGTERM` para
solicitar un cierre ordenado del proceso, o `SIGKILL` para forzar su terminación
inmediata.

Name: también conocido como identificador, es una palabra que consiste únicamente
en letras, números y guiones bajos y comienza con una letra o un guion bajo. Los
nombres se utilizan para identificar variables y funciones.

Expansión: proceso mediante el cual la shell Bash interpreta y transforma ciertos


caracteres o secuencias en otros valores antes de ejecutar un comando. Este proceso
facilita una amplia gama de operaciones dinámicas en la línea de comandos. Veamos
algunos tipos de expansión y ejemplos:

● Expansión de Parámetros: Sustituye una variable por su valor.

```bash

echo $USER

```

Aquí, `$USER` se expande al nombre de usuario actual del sistema.


● Expansión de Comodines: Utiliza símbolos como `` o `?` para representar uno
o más caracteres en nombres de archivo.

```bash

ls .txt

```

Lista todos los archivos que terminan en `.txt` en el directorio actual.

● Expansión de Llaves: Crea combinaciones de ítems enumerados entre llaves


`{}`.

```bash

echo file{1,2,3}.txt

```

Expande a `file1.txt file2.txt file3.txt`.

● Expansión de Comandos: Ejecuta un comando y usa su salida como parte de


otro comando.

```bash

echo "Hoy es $()"date

```

Inserta la fecha y hora actual en el mensaje del comando `echo`.

Field en Bash: unidad de texto que resulta de la expansión realizada por Bash. Estos
campos son utilizados como el nombre del comando y sus argumentos al ejecutar un
comando.

Si tienes el siguiente comando:

```bash

echo $USER downloaded transformando la entrada estática en comandos


dinámicamente generadosfile{1,2}.txt
```

- Proceso: Bash primero expande `$USER` y `file{1,2}.txt`.

- Resultado de Expansión: Supongamos que `$USER` es `juan` y las llaves se


expanden a `file1.txt file2.txt`.

- Fields Generados: `echo`, `juan`, `downloaded`, `file1.txt`, `file2.txt`.

En este caso, `echo` es el nombre del comando y `juan`, `downloaded`, `file1.txt`, y


`file2.txt` son los argumentos o fields.

Las expansiones permiten que la shell Bash sea extremadamente poderosa y flexible,
basados en el contenido actual del sistema y las operaciones definidas por el usuario.
Los fields, resultantes de estas expansiones, son fundamentales para determinar cómo
se ejecutan los comandos, permitiendo una interacción sofisticada con el sistema a
través de la línea de comandos.

Process group: Es un conjunto de procesos relacionados que comparten el mismo


identificador de grupo de procesos.

Process group ID: Es un identificador único asignado a un grupo de procesos


relacionados, que los representa durante toda su existencia.

Token: es una secuencia de caracteres que la shell considera una unidad. Puede ser
una palabra o un operador.

Control operator: es un token que tiene una función de control. Los más relevantes
son:
● ; se pueden poner dos o más comandos en la misma línea separados por un
punto y coma. Ambas series se ejecutarán secuencialmente y la shell esperará a
que cada comando termine antes de iniciar el siguiente.
● & cuando una línea termina con &, la shell no esperará a que termine el
comando. El comando se ejecutará en segundo plano y el usuario podrá seguir
introduciendo comandos.
● $? el código de salida de la orden anterior se almacena en el parámetro de shell
$?. Este parámetro se utiliza para comprobar el estado de la última orden
ejecutada. Si el valor devuelto por $? es 0, significa que el último comando acabó
con éxito; de lo contrario, el comando falló. El valor concreto depende de cada
utilidad, pero, en todo caso, es un número entero de 8 bits.
● && «and» lógico. El segundo comando se ejecuta solo si el primero tiene éxito.
Por ejemplo, test "$VAR1" = "val1" && echo $VAR1 imprime el valor de la
variable de entorno VAR1, solo si está definida como "val1".
● || «or» lógico. El segundo comando se ejecuta solo cuando la primera orden ha
fallado. Por ejemplo, test "$VAR1" != "val1" || echo "ERROR" imprime el mensaje
de error si VAR1 no contiene "val1".
● todo lo escrito después de es ignorado por la shell por ser un comentario.

Comandos habituales

​ Comandos de directorio:
​ pwd : muestra el camino completo del directorio actual.
​ $ pwd
​ /etc/apache2/extra
​ cd : cambia de directorio.
​ $ cd /etc/apache2
​ cd ~ : lleva a la carpeta home del usuario.
​ cd - : lleva a la última ruta.
​ cd .. : cambia al directorio padre del directorio actual.
​ Listado de ficheros:
​ ls : listado de ficheros.

$ ls

extra magic other

httpd.conf mime.types users

httpd.conf.pre-update original

​ ls -al : lista ficheros, carpetas e información.

$ ls -al

total 128

drwxr-xr-x 10 root wheel 320 Aug 27 2018 .

drwxr-xr-x 90 root wheel 2880 Apr 18 17:22 ..

drwxr-xr-x 14 root wheel 448 Apr 4 2018 extra

-rw-r--r-- 1 root wheel 21150 Aug 27 2018 httpd.conf


-rw-r--r-- 1 root wheel 21150 Apr 4 2018 httpd.conf.pre-update

-rw-r--r-- 1 root wheel 13077 Apr 4 2018 magic

-rw-r--r-- 1 root wheel 61118 Apr 4 2018 mime.types

drwxr-xr-x 4 root wheel 128 Apr 4 2018 original

drwxr-xr-x 3 root wheel 96 Apr 4 2018 other

drwxr-xr-x 3 root wheel 96 Aug 27 2018 users

​ ls –aR : lista de forma recursiva.


​ ls -aR | more : lista de forma recursiva, usando una canalización para mostrarlo
por pantalla. Es útil si la salida ocupa más líneas que las que puede mostrar la
ventana de consola.
​ ls -alR > resultado.txt : similar a la anterior, pero vuelca el resultado de la salida a
un archivo, en vez de mostrarlo por pantalla.
​ ls .htm : enumera todos los archivos terminados en .htm.
​ ls -al dir/subdir/ : muestra un listado de los ficheros en ese directorio.

​ Crear, modificar y borrar ficheros y carpetas:


​ touch /home/usr/html/index.htm : crea el fichero index.htm sin contenido.
​ rm file.txt : borra file.txt.
​ rm -rf dir/ : borra el directorio de forma recursiva y sin confirmación.
​ mkdir carpeta : crea un directorio con el nombre carpeta.
​ rmdir carpeta : borra el directorio llamado carpeta.
​ Archivos comprimidos:
​ zip arch.zip /home/usr/public/dir : comprime el directorio y su contenido en el
fichero arch.zip.
​ unzip arch.zip : descomprime arch.zip.
​ unzip -v arch.zip : visualiza el contenido de arch.zip.
​ tar xvzf package.tgz : descomprime el fichero package.tgz.
​ Visualización de ficheros:
​ less fichero.log : muestra el contenido del fichero solo en modo lectura;
permite búsquedas, ir al principio y al final del fichero, pasar de página,
etc.
​ cat fichero.log : vuelca el contenido completo del fichero en pantalla.
​ tail fichero.log : muestra las últimas diez líneas del fichero.
​ tail -5 fichero.log : muestra las últimas cinco líneas del fichero.
​ tail -f fichero.log : muestra las últimas diez líneas del fichero y se engancha
al fichero, mostrando las líneas nuevas que aparezcan en este. Es muy
útil para mostrar un fichero de log, según se actualiza.
​ head fichero.log : muestras las diez primeras líneas del fichero.

​ Otros comandos:
​ cp -a /home/usr/origen/ /home/usr/destino/: copia todos los contenidos de
un directorio a otro, manteniendo sus permisos.
​ du -sh: visualiza el espacio total ocupado por la carpeta actual.
​ du -sh : muestra el espacio ocupado de cada fichero.
​ whoami: muestra el nombre del usuario.

Ejemplos de concatenación de comandos;

Comando para Visualizar las IPs con Más Logins Exitosos

bash

Copiar código

​ cat /var/log/secure | grep Accepted | awk '{print $9 " " $11


}' | sort | uniq -c | sort -rn | head -20

Desglose:

● cat /var/log/secure: Este comando concatena y muestra el contenido de


todos los archivos en el directorio /var/log que comienzan con "secure". Estos
archivos generalmente contienen logs de seguridad, como intentos de acceso al
sistema.
● | grep Accepted: El pipe (|) pasa la salida del comando anterior a grep, que
filtra líneas que contienen la palabra "Accepted". Esto se usa para seleccionar los
registros de logins exitosos.
● | awk '{print $9 " " $11 }': AWK procesa la salida filtrada y extrae y
imprime solo el noveno y el undécimo campo de cada línea, que suelen ser el
usuario y la dirección IP respectivamente en logs de acceso.
● | sort: Ordena las líneas de salida alfabéticamente por dirección IP y usuario.
● | uniq -c: Agrupa líneas iguales y las cuenta, útil para saber cuántas veces se
repite cada combinación de usuario y IP.
● | sort -rn: Ordena los resultados numéricamente en orden descendente, lo
que pone las combinaciones más frecuentes primero.
● | head -20: Finalmente, head toma las primeras 20 líneas de la salida
ordenada, mostrando las 20 IPs con más logins exitosos.

Redirección

Bash soporta la redirección de la salida de un comando. Por un lado, puede volcar la


salida estándar en un fichero:

$ ls -la > listado.txt

Este comando no muestra nada por pantalla. El contenido se escribe en el fichero


listado.txt, sobrescribiendo cualquier contenido anterior.

También es posible añadir contenido al final del contenido actual del fichero:

$ ls -la >> listado.txt

Por otro lado, se puede usar el resultado de un comando como entrada de otro usando
la funcionalidad de tubería o pipe. Por ejemplo, el siguiente comando muestra el
contenido del fichero de configuración del servidor SSH, pero muestra solo las líneas no
comentadas y ordenadas por orden alfabético:

$ cat sshd_config | grep -v "" | sort | uniq

El comando cat sshd_config | grep -v "" | sort | uniq lee el

contenido del archivo de configuración sshd_config, utiliza grep

-v "" para excluir todas las líneas que contienen comentarios (el

-v invierte la búsqueda, excluyendo las líneas que coinciden con


el patrón), luego ordena las líneas restantes alfabéticamente con
sort, y finalmente, uniq elimina cualquier línea duplicada que
resulte de la ordenación. Este flujo es útil para visualizar las
configuraciones activas del archivo de manera organizada y sin
duplicados.

La redirección en sentido contrario también está soportada, es decir, se puede leer el


contenido de un fichero y pasarlo por la entrada estándar a un comando. Por ejemplo, la
siguiente línea lee el fichero input.txt y lo entrega por la entrada estándar a cat. El
resultado es idéntico a ejecutar cat input.txt directamente, pero la redirección de entrada
se puede usar con comandos que no estén preparados para leer ficheros directamente.

$ cat < listado.txt

Cuando defines una función en Bash, puedes pasarle argumentos al llamarla, de


manera similar a cómo funcionan las funciones en otros lenguajes de programación.
Estos argumentos se tratan como variables posicionales dentro de la función.

Parámetros Posicionales

Dentro de una función, los argumentos pasados se acceden mediante variables


posicionales. Estas son:
- `$1`, `$2`, `$3`, ..., `$n`: Cada uno representa un argumento pasado a la función,
donde `$1` es el primer argumento, `$2` es el segundo, y así sucesivamente.

Ejemplo de Definición y Llamada de Función

Vamos a definir una función simple que toma dos argumentos y los compara:

# Definición de una función para comparar dos números


function comparar_numeros {
if [ $1 -gt $2 ]; then
echo "$1 es mayor que $2"
elif [ $1 -eq $2 ]; then
echo "$1 es igual a $2"
else
echo "$1 es menor que $2"
fi
}

En este ejemplo, `$1` y `$2` son parámetros posicionales que representan el primer y
segundo argumento pasados a la función `comparar_numeros`.

Llamada a la Función

Para usar esta función en un script que solicita al usuario que ingrese dos números:

#!/bin/bash

# Solicitar dos números al usuario


read -p "Introduce el primer número: " num1
read -p "Introduce el segundo número: " num2

# Llamada a la función para comparar los números


comparar_numeros $num1 $num2

### Explicación del Script

1. **Solicitar Datos del Usuario**: Se utiliza `read -p` para pedir al usuario que
introduzca dos números. Estos se almacenan en las variables `num1` y `num2`.
2. **Llamada a la Función**: `comparar_numeros $num1 $num2` pasa los valores de
`num1` y `num2` a la función. Dentro de la función, estos valores son accesibles como
`$1` y `$2`.

Este mecanismo de paso de parámetros hace que las funciones en Bash sean
herramientas versátiles para realizar operaciones que dependen de datos de entrada
variables, permitiendo que un mismo bloque de código se utilice para diferentes
entradas de manera eficiente y clara.

DIFERENCIAS DE SINTAXIS ENTRE POWERSHELL


(Windows) Y BASH (Linux)
Crear scripts en Bash y PowerShell puede parecer similar a primera vista, ya que ambos
están diseñados para automatizar tareas en sistemas operativos. Sin embargo, cada uno
tiene su propia sintaxis y semántica únicas, adaptadas a los entornos en los que operan
predominantemente (Linux/Unix para Bash y Windows para PowerShell). Aquí te
proporciono un resumen de las diferencias clave en la semántica y algunos ejemplos que te
ayudarán a recordar cómo escribir scripts en cada uno.

1. Sintaxis de Variables

PowerShell
- Utiliza `$` antes del nombre de la variable.
- Tipado dinámico, pero puede especificar tipos.

$variable = "Hola Mundo"


[int]$numero = 20

Bash
- No requiere `$` para declarar, pero sí para acceder al valor.
- No soporta tipos de datos explícitos; todo es tratado como texto, aunque se trata como
números en contextos aritméticos.
variable="Hola Mundo"
numero=20
echo $variable

2. Entrada de datos del Usuario

PowerShell
- Usa `Read-Host` para leer la entrada del usuario.

$nombre = Read-Host "Introduce tu nombre"

Bash
- Usa `read` con la opción `-p` para mostrar un mensaje.

read -p "Introduce tu nombre: " nombre

3. Mostrar Información

PowerShell
- Usa `Write-Host` para imprimir en consola.

Write-Host "Tu nombre es $nombre"

Bash
- Usa `echo` o `printf`.

echo "Tu nombre es $nombre"


4. Estructuras de Control

PowerShell
- Usa `if`, `elseif`, y `else` con llaves `{}`.
- Bucles `for`, `foreach`.

if ($numero -gt 10) {


Write-Host "$numero es mayor que 10"
} elseif ($numero -eq 10) {
Write-Host "$numero es igual a 10"
} else {
Write-Host "$numero es menor que 10"
}
foreach ($num in $numeros) {
Write-Host "Número: $num"
}

Bash
- Usa `if`, `elif`, `else` con `then` y `fi`.
- Bucles `for`, `while`.

if [ $numero -gt 10 ]; then


echo "$numero es mayor que 10"
elif [ $numero -eq 10 ]; then
echo "$numero es igual a 10"
else
echo "$numero es menor que 10"
fi
for num in ${numeros[@]}; do
echo "Número: $num"
done

5. Funciones

PowerShell
- Define funciones usando forzosamente la palabra clave `function`, parámetros con
`param`.

function Saludar {
param ($nombre)
Write-Host "Hola, $nombre"
}
Saludar -nombre "Juan"

Bash
- Define funciones directamente, aunque se puede usar la palabra clave function si te es
mas claro y los parámetros accesibles por orden `$1`, `$2`, etc.

function saludar {
echo "Hola, $1"
}
saludar Juan

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy