Ayuda con script Básico Linux!

Temas sobre programación ( php, c, sql, html, perl, python, ruby, java, bash, etc ) y recursos ( herramientas, frameworks, hosting, cms, etc )

Moderadores: akodo, maiku

Responder
rq22
Forista Nuevo
Forista Nuevo
Mensajes: 1
Registrado: Jue Ago 25, 2016 10:22 pm

Ayuda con script Básico Linux!

Mensaje por rq22 » Jue Ago 25, 2016 10:37 pm

Hola como están?Desde ya gracias por tomarse su tiempo y leer mi tema, les agradeceré cualquier tipo de ayuda.

Los pongo en contexto, Estudiante de sistemas, se me cruz una materia "Sistemas Operativos y Redes", en la cual tocamos muchos por primera vez linux y c. Se nos abre un sin fin de cosas para hacer y nuestro entusiasmo aumenta, pero todo se derrumba cuando el profesor numero uno es un anciano recto y con pocas pulgas, y que viene de laburar desde zona sur y no quiere saber nada con nosotros los estudiantes, y el otro un estudiante avanzado muy introvertido que no da abasto con las consultas y muchas veces no te sabe responder.

Llega la primer práctica de script, cuando en todo lo que va de la cursada vimos una hor de script, pero gracias a ustedes pude manejar la situación y hacer todos menos un punto, el anteúltimo:

Generar automáticamente (script bash y pipes) un archivo donde se guarden los siguientes ítems:

Kernel

Arquitectura de la PC

Identificar el CPU

Identificar las primeras 10 interrupciones

Identificar la memoria swap

Identificar la cantidad de memoria principal

Identificar la placa de video



Bueno amigos aquí empiezan las dudas:

1. cómo es eso de generar automáticamente un archivo? alguien tiene una idea? que todo lo que vaya sacando tiene que guardarse en una rchivo de texto? o qué? y en el caso de que tengan una solución, cómo lo empleo?

Con lo que sé e investigué, saqué estas instrucciones para cada ítem que encnontrar, si alguno sabe otra instruccón más óptima para la misma función por favor dígamela:

#kernel= uname-r
#arquitectura de la pc= arch
#identifica el cpu= cat /proc/cpuinfo
#interrupciones= cat /proc/interrupts
#identificar memoria swap= grep 'MemTotal' /proc/meminfo; grep 'SwapTotal' /proc/meminfo
#identificar memoria principal=
#identificar placa de video=lspci | grep -i vga
2- cabe destacar que nunca vimos como formar un script solo instrucciones básicas suelta en terminal, pero aprendí investigando que se usa #! /bin/bash

y si alguien, sabe como ayudarme se lo agadeceré con el alma, tengan piedad de un estudiante que esta sufriendo por culpa de los profesores!

Encima le mandas un mail a sus mail de consultas y no te saben responder la diferencia entre memoria swp y memoria principal!

desde ya se los agradezco otra vez.

Abrazo, Gabriel.
Avatar de Usuario
neurus
Forista Legendario
Forista Legendario
Mensajes: 1805
Registrado: Dom Oct 10, 2004 7:00 am

Re: Ayuda con script Básico Linux!

Mensaje por neurus » Vie Ago 26, 2016 12:41 am

Para generar un archivo se usan los redireccionadores de salida. Normalmente, cualquier comando tiene su salida a terminal. Usando "<" o ">" se aplican redirecciones.

Ejemplo:

echo "test" > /dev/lpt0 imprimiría el texto "test" en una impresora por puerto paralelo. Sin la redirección, simplemente saldría un "test" por la pantalla.

echo "test" > archivo.txt envía la palabra "test" al archivo.txt

Si el archivo no existe, lo crea. Si existe, sobreescribe cualquier cosa que haya en su interior. Esto puede ser un problema si uno quiere ir agregando varias líneas, de a una. La solución es ">>".

Si se duplica el redireccionador, no se sobreescribe lo anterior, y se van agregando líneas al final.

Ejemplo:

echo "primera línea" >> archivo.txt
echo "segunda línea" >> archivo.txt

Para hacer un script como el que estás planteando, habría que redireccionar la salida de cada comando. Acertaste con el comienzo del script:

Código: Seleccionar todo

#!/bin/bash
# esto es un comentario. No se ejecuta.
# Una idea posible es empezar borrando cualquier línea que tenga el archivo.txt, para empezar en limpio.
echo " " > archivo.txt 

# Uno de los comandos que posteaste.
uname -r >> archivo.txt

exit
Un ejemplo un poco más complejo podría ser intercalar una ejecución dentro de un echo. Los acentos indican que se debe ejecutar lo que está en su interior. Así:

Código: Seleccionar todo

#!/bin/bash
echo "El kernel es `uname -r `" >> archivo.txt
Se le dan permisos de ejecución (chmod u+x script), y se lo ejecuta con ./script (punto barra script)

Te queda completarlo. No veo para qué puedan usarse pipes en el script que te pidieron. Si están en un nivel muy básico, todavía no creo que deban hacer tratamiento de textos con awk o cut.
Avatar de Usuario
PabliNet
Forista Menor
Forista Menor
Mensajes: 97
Registrado: Vie Ene 01, 2016 7:31 am

Yo te voy a dar otra idea...

Mensaje por PabliNet » Vie Ago 26, 2016 8:02 am

En Bash se puede ejecutar un comando con el resultado de otro comando y se hace con los acentos invertidos orden1 `orden2` o como si fuese una variable pero entre paréntesis orden1 $(orden2).

El comando pwd indica el directorio donde una está posicionado.

Lo que se puede hacer es:

Código: Seleccionar todo

echo Estoy en el directorio `pwd`.
O en su defecto:

Código: Seleccionar todo

echo La carpeta es $(pwd).
El comando echo tiene la opción -e que sirve para agregar saltos de linea, tabulares y otras cosas más. Para eso se necesita la doble barra invertida: \\n salto de linea, \\t tabular horizontal, \\b elimina un carácter a la izquierda.

Un ejemplo de lo que podés hacer:

Código: Seleccionar todo

echo -e La versión de kernel es:`uname -r`\\nEstoy en el directorio `pwd`.
O también:

Código: Seleccionar todo

echo -e La versión de kernel es:`uname -r`\
\\nEstoy en el directorio `pwd`.
> archivo.txt
Cuando terminás la orden con la barra invertida te lee sólo como salto de linea y podes continuar la orden.
Responder
  • Similar Topics
    Respuestas
    Vistas
    Último mensaje