Última actualización: noviembre 19, 2021
14.4.2.7 Práctica de laboratorio: Escribir scripts básicos en Windows y Linux (versión para el instructor)
Nota para el instructor: Los elementos con color de fuente rojo o resaltados en gris indican texto que aparece solo en la copia del instructor.
Objetivos
En esta práctica de laboratorio, escribirá scripts básicos en diferentes lenguajes de secuencias de comandos para ayudar a comprender cómo maneja cada lenguaje las tareas de automatización.
Antecedentes / Escenario
La escritura de secuencias de comandos para automatizar las funciones de administración comunes ahorra tiempo y provee al administrador flexibilidad para realizar otras tareas. En la práctica de laboratorio, escribirá tres tipos de scripts que realizarán tareas similares. Compare los diferentes lenguajes a medida que automatiza una tarea simple.
Recursos necesarios
- Computadora con Windows
- VM con distribución de Linux
Instrucciones
Paso 1: Cree un script por lotes de Windows.
a. En un editor de texto, como el Bloc de notas, guarde un archivo de texto llamado info.bat en su directorio de inicio (C:\Users\yourusername) con el siguiente texto:
Abra la ventana de configuración @echo off echo Computer Name is: %computername% echo Windows version is: ver echo CPU is: %PROCESSOR_IDENTIFIER% echo Total memory is: rem WMIC (comando para el instrumental de administración de Windows) es una utilidad de la línea de comandos que puede recuperar información sobre computadoras locales o remotas. Para obtener más información en línea, introduzca help wmic o wmic /? en el símbolo del sistema. wmic ComputerSystem get TotalPhysicalMemory echo The disks that are installed and their freespace: wmic logicaldisk get size,freespace,caption echo All the %computername% IP addresses Rem netsh es una utilidad de scripts de línea de comandos que permite que los usuarios vean o modifiquen las configuraciones de red de una computadora en ejecución. Para obtener más información en línea, introduzca nesh /? en el símbolo del sistema. rem findstr se utiliza para buscar una cadena de texto en archivos. Para obtener más información en línea, escriba findstr /? en el símbolo del sistema. netsh interface ip show address | findstr "IP Address"
b. Abra un símbolo del sistema y navegue hasta su directorio de inicio.
c. Enumere el contenido de su directorio de inicio y verifique que el archivo info.bat se guarde con el archivo correcto. De lo contrario, cambie el nombre del archivo, por ejemplo, rename info.bat.txt info.bat.
d. En la línea de comandos, ingrese info.bat para ejecutar el script.
Preguntas:
¿Cuál fue la salida?
Las respuestas pueden variar
El nombre de la computadora es: KDV-PC La versión de Windows es: Microsoft Windows [versión 10.0.17763.437] La CPU es: Intel64 Family 6 Modelo 61 Stepping 4, GenuineIntel La memoria total es: Memoria física total 17091084288 Los discos que están instalados y sus espacios libres son los siguientes: Tamaño del espacio libre para leyenda C: 212692340736 997923037184 Todas las direcciones IP de KDV-PC Dirección IP: 192.168.56.1 Dirección IP: 169.254.45.2 Dirección IP: 169.254.126.64 Dirección IP: 192.168.159.1 Dirección IP: 192.168.181.1 Dirección IP: 192.168.1.40 Dirección IP: 127.0.0.1
¿Para qué se utilizan los %nombres% en el script?
Las respuestas pueden variar. Estas son las variables de entorno que mantienen los valores establecidos por el sistema operativo.
Identifique lo que hacen los siguientes comandos en el script:
echo:
Muestra en pantalla lo que viene después
findstr:
Busca una cadena de caracteres.
netsh:
El shell de red permite mostrar y modificar la configuración de red.
ver:
Proporciona la versión actual del SO.
wmic:
La interfaz de administración de Windows permite que un administrador vea o modifique la configuración.
Paso 2: Cree un script de PowerShell ISE.
a. Haga clic en Inicio, busque PowerShell ISE, haga clic con el botón secundario del mouse en la selección y, luego, en Ejecutar como administrador.
b. Verifique que se encuentre en su directorio de inicio: PS C:\Users\YourUsername
c. Para permitir que el script se ejecute, ingrese Set-ExecutionPolicy RemoteSigned en la línea de comandos. Haga clic en Sí para permitir que se ejecute el script. La configuración se puede volver a cambiar a No después de que se complete el script.
PS C:\Users\YourUsername> Set-ExecutionPolicy RemoteSigned
d. Elija Archivo, Nuevo y cree un nuevo script.
e. Ingrese el siguiente texto en la ventana Untitled.ps1 y guárdela como info.ps1 en su directorio de inicio.
Abrir la ventana de configuración Write-Output "Computer name is:" get-content env:computername Write-Output "Windows version is:" (Get-WmiObject -class Win32_OperatingSystem).Leyenda Write-Output "CPU is:" Get-WmiObject Win32_Processor | findstr "Name" Write-Output "total Memory is:" [Math]::Round((Get-WmiObject -Class win32_computersystem -ComputerName localhost).TotalPhysicalMemory/1 GB) Write-Output "los discos que están instalados y su espacio libre:" Get-WMIObject -Class Win32_logicaldisk -Filter "Drivetype = ' 3 '" Write-Output "IPv4 Addresses" Get-NetIPAddress -AddressFamily IPv4 | Sort-Object -Property InterfaceIndex | Format-table
Nota: El comando Get-NetIPAddress no está disponible en Windows 7.
Nota: Dentro de PowerShell ISE, puede presionar F1 o seleccionar Ayuda > Ayuda de Windows PowerShell ISE para obtener más información.
f. Para ver las funciones de cada comando, haga clic en Complementos, verifique que esté marcada la opción Comando. En la pestaña Comandos, introduzca el nombre del comando en el campo Nombre. Seleccione el comando deseado y haga clic en ? para obtener más información acerca de él.
En Windows 7, haga clic en Ayuda, seleccione Ayuda de Windows PowerShell. Seleccione Temas de ayuda sobre Cmdlet de Windows PowerShell. Busque el comando deseado.
g. Introduzca .\info.ps1 en la línea de comandos PS. Nota: Asegúrese de que está utilizando la barra oblicua correcta.
PS C:\Users\YourUsername> .\info.ps1
Pregunta:
¿Cuál es el resultado del script?
Las respuestas pueden variar.
PS C:\> .\info.ps1 El nombre de la computadora es: KDV-PC La versión de Windows es: Microsoft Windows 10 Education La CPU es: Nombre: Intel(R) Core(TM) i5-5200U CPU @ 2,20 GHz La memoria total es: 16 Los discos que están instalados y sus espacios libres son los siguientes: ID de dispositivo : C: TipoDeUnidad : 3 NombreDeProveedor : EspacioLibre : 212635987968 Tamaño : 997923037184 NombreDelVolumen : Windows Direcciones IPv4 ifIndex IPAddress PrefixLength PrefixOrigin SuffixOrigin AddressState PolicyStore ------- --------- ------------ ------------ ------- ----- ------------ ----------- 1 127.0.0.1 8 WellKnown WellKnown Preferred ActiveStore 3 169.254.220.156 16 WellKnown Link Tentative ActiveStore 5 de 192.168.159.1 24 Manual Manual Preferred ActiveStore 7 169.254.160.146 16 WellKnown Link Tentative ActiveStore 11 192.168.56.1 24 Manual Manual Preferred ActiveStore 15 169.254.45.2 16 WellKnown Link Preferred ActiveStore 17 192.168.1.40 24 DHCP DHCP Preferred ActiveStore 24 169.254.2.220 16 WellKnown Link Tentative ActiveStore 25 169.254.126.36 16 WellKnown Link Tentative ActiveStore 29 169.254.18.19 16 WellKnown Link Tentative ActiveStore 39 192.168.181.1 24 Manual Manual Preferred ActiveStore 73 169.254.126.64 16 WellKnown Link
h. Compare los dos scripts. Una el comando por lotes con los siguientes comandos de PowerShell:
Comando por lotes de Windows | Comando de PowerShell |
---|---|
echo Computer Name is: %computername% | Write-Output «Computer name is:» get-content env:computername |
echo Windows version is: ver | Write-Output «Windows version is:» (Get-WmiObject -class Win32_OperatingSystem).Caption |
echo CPU is: %PROCESSOR_IDENTIFIER% | Write-Output «CPU is:» Get-WmiObject Win32_Processor | findstr «Name» |
echo Total memory is: | Write-Output «total Memory is:» |
wmic ComputerSystem get TotalPhysicalMemory | [Math]::Round((Get-WmiObject -Class win32_computersystem -ComputerName localhost).TotalPhysicalMemory/1Gb) |
echo The disks that are installed and their freespace: | Write-Output «The Disks that are installed and their freespace:» |
wmic logicaldisk get size,freespace,caption | Get-WMIObject -Class Win32_logicaldisk -Filter «Drivetype = ‘ 3 ‘» |
echo All the %computername% IP addresses | Write-Output «IPv4 Addresses» |
netsh interface ip show address | findstr «IP Address» | Get-NetIPAddress -AddressFamily IPv4 | SortObject -Property InterfaceIndex | Format-Table |
Paso 3: Cree un script BASH.
Se utiliza un editor de texto para crear un script ejecutable. Una de las herramientas del editor de texto, vi, o la versión mejorada de vi, vim, se basa en comandos de letras y números para modificar el texto. Por ejemplo, dd eliminará toda la línea en la que se encuentra el cursor. 5dd eliminaría 5 líneas. Cuando vi está en modo de comando, la entrada se interpreta como comando.
Para ingresar al modo de inserción en la posición actual del cursor, escriba i. Para anexar texto al final de la línea actual, escriba a. Para insertar texto en una nueva línea debajo de la línea actual, escriba o. Utilice la tecla Esc para salir del modo de inserción y pasar al modo de comando.
Para guardar un archivo en el editor de vi, utilice :w desde el modo de comando. Para guardar y salir, escriba :wq. Para salir sin guardar, escriba :q!.
Según cuál sea su versión de SO similar a Unix, es posible que encuentre otra herramienta de editor de texto, como nano, pico y gedit. Se puede acceder a las herramientas de edición de texto, como vi, nano y pico, a través de la línea de comandos; mientras que los editores de texto basados en la GUI, como gedit, pueden ubicarse a través del menú de aplicaciones o de la línea de comandos.
a. Inicie una computadora Linux o una VM.
b. Utilice una herramienta del editor de texto y cree un archivo llamado info.sh en el directorio de inicio con el siguiente texto:
#!/bin/bash echo "Computer name is: " $HOSTNAME echo "Operating System is:" cat /etc/os-release | grep PRETTY_NAME echo "CPU is" lscpu | grep "Model name:" | sed -r 's/Model name:\s{1,}//g' echo "Total Memory is" cat /proc/meminfo | grep "MemTotal" echo "The disks that are installed and their freespace" df -h echo "All the" $HOSTNAME "IP addresses" hostname -I
c. Abra una terminal y navegue hasta el directorio de inicio. Para convertir el script en ejecutable, introduzca chmod 755 info.sh en la línea de comandos.
d. En la línea de comandos, introduzca ./info.sh para ejecutar el script.
Preguntas:
¿Cuál es el resultado del script?
Las respuestas pueden variar.
El nombre de la computadora es: KDV-PC El sistema operativo es: PRETTY_NAME="Ubuntu 16.04.5 LTS" La CPU es Intel(R) Core(TM) i5-5200U CPU @ 2,20 GHz La memoria total es: MemTotal: 16690512 kB Los discos que están instalados y sus espacios libres Sistema de archivos Tamaño Usado Disponible % de uso Montado en rootfs 930G 732G 198G 79% / root 930G 732G 198G 79% /root home 930G 732G 198G 79% /home data 930G 732G 198G 79% /data cache 930G 732G 198G 79% /cache mnt 930G 732G 198G 79% /mnt none 930G 732G 198G 79% /dev none 930G 732G 198G 79% /run none 930G 732G 198G 79% /run/lock none 930G 732G 198G 79% /run/shm none 930G 732G 198G 79% /run/user C: 930G 732G 198G 79% /mnt/c Todas las direcciones IP de KDV-PC 192.168.56.1 192.168.159.1 192.168.181.1 169.254.45.2 169.254.126.64 192.168.1.40
¿Qué significa “#!/bin/bash” al comienzo del script?
Le indica al script qué intérprete debe utilizar para el código.
¿Qué comando usaría para obtener más información sobre los comandos df y lscpu?
Utilice el comando man para obtener más información. En la línea de comandos, escriba man df y man lscpu.