Si es un administrador de sistemas, probablemente escriba muchas secuencias de comandos para realizar tareas rutinarias o automatizar parte de su trabajo administrativo.Puede hacer esto utilizando un lenguaje de secuencias de comandos como Bash o un lenguaje de programación como Python o Perl.
[ You might also be interested in a sysadmin’s guide to Bash scripting. ]
Python y Perl son lenguajes interpretados y tienen limitaciones. Algunas de estas limitaciones incluyen:
- Al escribir y ejecutar código, se debe proporcionar una versión específica del intérprete.
- Las dependencias deben estar disponibles tanto en tiempo de escritura como en tiempo de ejecución.
- Muchos errores ocurren solo en tiempo de ejecución, lo que hace que el programa se detenga o se rompa.
- Ciertas cargas de trabajo pueden tener problemas de rendimiento y utilización de recursos.
Hace unos años estaba trabajando en un proyecto en el que no podía usar Perl debido a estas limitaciones. Necesito un nuevo idioma.En este momento encontré Vamos.
Tabla de Contenidos
Los beneficios del lenguaje de programación Go
Go es un lenguaje de programación de código abierto que combina la facilidad de uso que brindan los lenguajes dinámicos con la confiabilidad y el rendimiento que brindan los lenguajes compilados tipificados estáticamente. Aunque Go tiene tipos estáticos (lo que significa que los tipos de variables están predefinidos y se conocen en el momento de la compilación), el compilador de Go puede inferirlos por usted, por lo que a menudo parece que está programando en un lenguaje dinámico como Python. Esto hace que Go sea relativamente fácil de aprender, pero brinda la confiabilidad de la validación de tipos, lo que evita muchos errores de tiempo de ejecución comunes en los lenguajes dinámicos.
Los programas de Go compilados brindan una utilización de recursos y un rendimiento similares a los escritos en C, pero no tiene que lidiar con problemas de bajo nivel como la administración de la memoria. Además, los programas de Go se compilan en tiempo de ejecución en archivos binarios estáticos que no requieren dependencias ni un intérprete. Puede compilar el programa en la máquina de desarrollo, copiar los archivos resultantes en la máquina de ejecución y ejecutarlo.
Go proporciona funciones adicionales, que incluyen:
- Biblioteca estándar madura y completa y paquetes de terceros
- Compilación cruzada, lo que le permite escribir y compilar programas para diferentes plataformas desde un solo entorno
- Concurrencia incorporada para que pueda usar los recursos disponibles en su sistema
- Un conjunto completo de herramientas que incluyen pruebas, pelusa, verificación y finalización de códigos.
Go es el lenguaje de elección para muchas herramientas modernas, incluidas las herramientas de administración de contenedores como Podman, Kubernetes y OpenShift.
Debido a estas características y beneficios, Go llena un vacío para aquellos que no programan todo el tiempo pero necesitan un lenguaje de programación poderoso y flexible. Go es una excelente opción de idioma para ingenieros de redes y administradores de sistemas.
[ Want to test your sysadmin skills? Take a skills assessment today. ]
Instalar Ir
En Linux, instale Go usando el administrador de paquetes de su distribución (generalmente llamado golang
):
$ sudo dnf install golang
Alternativamente, puede descargarlo e instalarlo desde el sitio oficial ir a la página de descargaMientras escribo esto, la última versión de Go es 1.19.1.Para descargar esta versión específica, utilice curl
:
$ curl -sLO \
--output-dir /tmp/
Luego descomprima el archivo bajo /usr/local
Si ha instalado Go de esta manera antes, primero elimine la instalación existente:
$ sudo rm -rf /usr/local/go
$ sudo tar -xzvf /tmp/go1.19.1.linux-amd64.tar.gz -C /usr/local/
Finalmente, agregue /usr/local/go/bin
para ti PATH
Agregando la siguiente línea al archivo de configuración de su shell.Por ejemplo, para Bash, agregue esto a ~/.bash_profile
:
export PATH=/usr/local/go/bin/:$PATH
Vuelva a cargar el perfil de su terminal, abra otra terminal o cierre sesión y vuelva a iniciarla para que esta configuración surta efecto.Después de configurar la variable, ejecute go version
Ordenar:
$ go version
go version go1.19.1 linux/amd64
Ahora está listo para comenzar a desarrollar sus programas en Go.
[ Keep your favorite Git commands, aliases, and tips close at hand with the Git cheat sheet. ]
Inicializar un proyecto Go
Para comenzar a escribir su primer programa Go, cree una carpeta para su proyecto y cambie los directorios a esa carpeta:
$ mkdir greet
$ cd greet
ve a usar módulo Administrar las dependencias del proyecto. En general, los nombres de los módulos deben ser únicos, por lo que, por convención, muchos desarrolladores usan el nombre de su repositorio de código fuente como nombre del módulo.Para este ejemplo, use el nombre del módulo example/greet
.
Inicialice su nuevo módulo:
$ go mod init example/greet
go: creating new go.mod: module example/greet
Uso de paquetes e importaciones en Go
Go organiza proyectos en paquetes, cada paquete es un conjunto de funciones relacionadas.Para crear un programa ejecutable, defina un main
hay un main()
Esto define el punto de partida del programa.
Este es el comienzo de un programa Go común:
package main
import (
"fmt"
"os"
"os/user"
)
Este import
Las palabras clave importan funciones de otros paquetes. En este ejemplo, importa tres paquetes de la biblioteca estándar:
fmt
Proporciona funciones de entrada y salida, incluida la capacidad de imprimir valores en la pantalla.os
Proporcione una interfaz a su sistema operativo, proporcionando el código de salida apropiado.os/user
Le permite administrar los usuarios del sistema.
[ Download now: Advanced Linux commands cheat sheet. ]
usar la función principal
Este programa Go de muestra obtiene el usuario actual llamando a una función user.Current()
de os/user
empaquetar y almacenar el resultado en una variable llamada u
Luego verifica que la llamada a la función devolvió un error. Si es así, imprime un mensaje de error y finaliza el programa.Si no hay errores, imprime un mensaje de saludo para el usuario actual (por su nombre, gracias u.Username
).
Aquí está el código:
func main() {
u, err := user.Current()
if err != nil {
fmt.Println("Cannot get current user:", err)
os.Exit(1)
}
fmt.Printf("Hello %s, welcome!\n", u.Username)
}
Ejecute la aplicación Go
Guarde el archivo y use la herramienta Ir para ejecutar el programa dinámicamente go run
:
$ go run .
Hello ricardo, welcome!
Compilar una aplicación Go
También puede compilar un módulo Go en un único binario ejecutable con go build
:
$ go build
luego ejecuta tu greet
Llame directamente al programa:
$ ./greet
Hello ricardo, welcome!
¿Que sigue?
¡Ha escrito, compilado y ejecutado su primer programa Go! Hay mucho más que puedes hacer. Go es un lenguaje de programación con distintas ventajas y características dirigido a ingenieros de redes y administradores de sistemas. Es una excelente opción para desarrollar herramientas de línea de comandos y soluciones de automatización.
He estado usando Go durante años y he desarrollado varias aplicaciones de línea de comandos, como procesamiento de archivos de registro, clientes y servidores API, herramientas de administración de red, herramientas de monitoreo, recopilación de datos y más. Pensé que Go encajaba perfectamente con un trabajo de administrador de sistemas, así que escribí un libro sobre el desarrollo de aplicaciones de línea de comandos con Go.Si está interesado en obtener más información sobre Go, consulte Potente aplicación de línea de comandos en Go.
En el próximo artículo de esta serie, exploraré algunos otros conceptos en el lenguaje de programación Go.