LinuxParty
Le gustaría ejecutar o ejecutar un comando en un host Linux, FreeBSD, Solaris, UNIX remoto y mostrar el resultado localmente. Una vez obtenido el resultado, puede ser utilizado por un script o programa local. Algunos ejemplos en los que la ejecución de comandos en un servidor remoto es útil para desarrolladores y administradores de sistemas:
- Sistema de archivos e información del disco
- Obtener información del usuario
- Descubre todo el proceso en ejecución
- Averigüe si un servicio en particular se está ejecutando o no, etc.
- Puede usar ssh para este propósito. Sin embargo, tenga en cuenta que el sistema remoto debe ejecutar OpenSSH o cualquier otro servidor SSH de su elección.
Sintaxis para ejecutar comandos en un host Linux o Unix remoto
La sintaxis es la siguiente:
ssh {USER-NAME}@{REMOTE-HOST} command1
ssh [USER-NAME]@[REMOTE-HOST] command or script
ssh [USER-NAME]@[REMOTE-HOST] -- command -arg1 -arg2
# Rum multiple commands #ssh [USER-NAME]@[REMOTE-HOST] -- "command1 && command2"
ssh [USER-NAME]@[REMOTE-HOST] -- command1 -arg1 >/path/to/local.output.txt
# Want to run remote command over ssh with sudo? #
ssh -t [USER-NAME]@[REMOTE-HOST] -- sudo command1 -arg1 arg2
Dónde,
- ssh: El ssh (u otro cliente SSH) es un programa para iniciar sesión en una máquina remota y para ejecutar comandos en una máquina remota.
- USER-NAME: nombre de usuario del host remoto.
- REMOTE-HOST: dirección IP o nombre de host del host remoto, como fbsd.cyberciti.biz.
- command or script: El comando o script de shell se ejecuta en el host remoto en lugar de un shell de inicio de sesión.
- --: El guion doble -- significa indicadores de fin de línea de comandos . Le dice a ssh que no intente analizar lo que viene después de las opciones de la lÃnea de comandos. Consulte "¿Qué significa" (doble guión) en el comando SSH Shell? para obtener más información.
- -t: La -topción necesaria cuando se usa el comando sudo sobre ssh. De lo contrario, obtendrá sudo: Lo sentimos, debe tener un tty para ejecutar sudo Error en un mensaje de Linux y Unix.
- >/path/to/local.output.txt: Ejecute el comando en un host remoto y almacene los resultados en este archivo.
Ejemplos sobre la ejecución de comandos en un host remoto
Obtenga información del disco de un servidor llamado 192.168.1.200 usando el comando df o el comando ncdu o el comando pydf o el comando duf:
ssh Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. df -h
ssh Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. -- df -h
Enumere qué puertos están abiertos en el host remoto de Linux usando el comando netstat o el comando ss:
ssh Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. netstat -vatn
en FreeBSD, puede enumerar o mostrar los puertos abiertos usando el comando sockstat. Por ejemplo:
ssh Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. -- sockstat -4
según la política de seguridad, es posible que deba ejecutar el comando ssh con el comando sudo
ssh -t Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. -- sudo netstat -4
Consulte "Cómo ejecutar varios comandos SSH en una máquina remota y salir de forma segura" para obtener ejemplos avanzados.
Reinicie el host remoto
¿Quiere reiniciar el servidor Linux o Unix remoto? Pruebe el comando de reinicio de la siguiente manera:
ssh Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. reboot
Si no puede iniciar sesión como usuario raíz, utilice el comando sudo:
ssh -t Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. -- sudo /sbin/reboot
Reinicie el servidor mysql de la siguiente manera encerrando múltiples argumentos de la línea de comando usando comillas simples o dobles:
ssh Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. '/etc/init.d/mysql restart'
O use el comando systemctl:
ssh -t Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. -- sudo systemctl restart mysqld
Obtenga información de la memoria de Linux y almacene ese resultado (salidas) en un archivo local llamado /tmp/memory.status.txt: luego puede ver el archivo usando comandos estándar como cat, more, bat command o less command de la siguiente manera: puede también ejecute múltiples comandos o use las tuberías, el siguiente comando muestra la memoria en formato de "memoria disponible = memoria usada + memoria libre":
ssh Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. -- 'free -m' > /tmp/memory.status.txt
cat /tmp/memory.status.txt
ssh Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. -- free -m | grep "Mem:" | awk '{ print "Total memory (used+free): " $3 " + " $4 " = " $2 }'
Salidas de muestra que se muestran en mi máquina macOS Unix local desde el servidor Linux remoto:
Total memory (used+free): 2279 + 25446 = 32110
Consulte cómo configurar ssh para iniciar sesión sin contraseña mediante la autenticación basada en clave pública para obtener más información. También vea el script de shell de muestra para obtener el tiempo de actividad, el uso del disco, el uso de la CPU, el uso de RAM, la carga del sistema, etc. desde múltiples servidores Linux y genera la información en un solo servidor en formato html.
Resumiendo
Expliqué cómo ejecutar un comando en un servidor Linux o Unix remoto usando el comando ssh. Para obtener más información, consulte las siguientes páginas del manual utilizando el comando man o el comando de ayuda:
man ssh
man bash

-
Linux
- La distribución de Linux KaOS 2025.03 se lanzó con KDE Plasma 6.3 y Linux Kernel 6.13
- Compartir archivos en la red LAN, sin nada, todo con un simple script en Python
- Free10: La mejor alternativa gratuita a Windows 10 basada en Linux
- ¿Se toma en serio la privacidad en línea? Este sistema operativo Linux "en vivo" es para usted
- Linux supera el 5% de cuota de mercado según PornHub: Un crecimiento del 41% en 2024
- Linux 6.14 permite que algunos sistemas suspendan y reanuden más rápidamente
- Cómo mantener Linux optimizado (y ahorrar tiempo) con Stacer
- Cambiar la Hora y la Fecha al sistema Linux
- Montar un directorio remoto, vía NFS, en Linux
- Predicciones de Linux para 2025
- Elementary OS 8: una distribución de Linux para usuarios de Windows y macOS
- Renombrar multiples archivos masivamente en Linux (quitar espacios, cambiar mayúsculas) a la vez en Linux
- He utilizado Linux durante 30 años. Aquí hay 5 razones por las que nunca cambiaré a Windows o MacOS
- Mis predicciones sobre Linux para 2025: será un buen año
- ¿Por qué Torvalds eliminó a los encargados rusos del mantenimiento del núcleo de Linux?