Re: Telnet (Ejecutar Comandos En Un Servidor Unix Remoto) (SOLUCIÓN ALTERNATIVA)
Hola, gracias por responder. El problema es que el servidor no tiene SSH.
Pero encontré una solución que le da la vuelta a mi problema.
Hay que instalar
Expect:
Citar:
"Expect es una herramienta para automatizar aplicaciones interactivas usando un script. Mediante el script, Expect conoce lo que se espera del programa y cómo debería ser la respuesta correcta. Expect también es muy útil para probar esas aplicaciones. Y añadiendo Tk, puede contener aplicaciones interactivas en interfaces de usuario X11. Un lenguaje interpretado proporciona un control de alto nivel de ramificaciones y de estructuras para manejar el diálogo. Además, el usuario puede tomar el control e interactuar directamente cuando quiera, para después devolver el control al script."
Nota: Expect depende de Tcl.
Este es un script que hace lo que necesito (La solución original está
aquí, en inglés):
- #!/usr/bin/expect -f
-
- # this_script "address" "username" "password" "command"
- # This command is used to hide the conversationn between the script and the other machine
- log_user 0
-
- # Assign the first passed parameter while calling the script to $address
- set address [lindex $argv 0]
-
- # Assign the 2nd passed parameter while calling the script to $username
- set username [lindex $argv 1]
-
- # Assign the 3rd passed parameter while calling the script to $password
- set password [lindex $argv 2]
-
- # Assign the 4th passed parameter while calling the script to $command
- set command [lindex $argv 3]
-
- # Start the telnet session to machine with IP=$address
- spawn telnet ${address}
-
- # Start conversation with the machine:
- expect "login:"
- send -- "${username}\r"
- expect "Password:"
- send -- "${password}\r"
- expect "$ "
-
- # Declare the shell to be used (optional)
- #send -- "#!/bin/ksh\r"
- #expect "$ "
-
- # Execute the command
- send -- "${command}\r"
- expect "$ "
-
- # End the telnet session and exit the script
- send -- "exit\r"
Se graba como
telnet_command, se le dan permisos de ejecución
chmod +x telnet_command y se ejecuta de la siguiente manera:
telnet_command "dirección IP" "usuario" "contraseña" "comando"
Ejemplo:
- $ ./telnet_command 10.94.232.83 mi_usuario mi_pass /home/mi_usuario/prueba.sh
En
gambas el código sería así:
Shell "~/mi_ruta/telnet_command 10.94.232.83 mi_usuario mi_pass /home/mi_usuario/prueba.sh" Wait
Espero que a alguien más le sirva.
Y de todos modos, si alguien tienen idea de hacerlo con puro código
gambas, ésta será muy bien recibida.
Daniel