1 votos

Obtener la salida de un comando en una sesión ssh usando AppleScript

Me estoy conectando a un ssh sesión con AppleScript de la siguiente manera:

tell application "iTerm2"
  tell current window
   create tab with default profile
  end tell

  tell first session of current tab of current window
    split horizontally with default profile
    split vertically with default profile
    write text "ssh username@server"
    write text "ls" -- I need to get the output of command
  end tell
end tell    

¿Cómo puedo obtener la salida del comando en la máquina remota?

Lo siguiente no funcionó : set x to write text "ls"

0 votos

@user3439894 hecho, he actualizado el código

0 votos

@user3439894 No puedo compilar, tenga en cuenta que tengo varios paneles en la misma ventana, ¿puede mostrar un ejemplo de código?

1voto

Marc Wilson Puntos 146

Una mejor manera de hacer lo que quieres:

-- this ssh assumes that public-key authentication is set up to the server

set the_output to do shell script "ssh name_or_ip_of_server ls"

-- the_output contans the result of the ls

Para hacer lo que usted está tratando de hacer dependería de que el terminal capturara todo el ls en el búfer de retroceso y que tú puedas recuperarlo del búfer. No necesitas el terminal GUI (ya sea Terminal/iTerm) para hacer lo que pediste.

0 votos

Gracias , ya lo he intentado pero necesito la sesión interactiva. No quiero enviar cada comando con ssh.

0 votos

¿Por qué no? No hay ninguna razón para no enviar simplemente comandos. Agrupa los comandos como necesites. Los scripts de la GUI son intrínsecamente frágiles, ten en cuenta el comentario en la otra respuesta sobre el retraso necesario.

1voto

user3439894 Puntos 5883

Añadiendo, por ejemplo,:

delay 1
set foo to contents

Después:

write text "ls" -- I need to get the output of command

En el código de la OP, por ejemplo,:

tell application "iTerm"
    tell current window
        create tab with default profile
    end tell

    tell first session of current tab of current window
        split horizontally with default profile
        split vertically with default profile
        -- write text "ssh username@server"
        write text "ls" -- I need to get the output of command
        delay 1
        set foo to contents
    end tell
end tell

Obtiene el contenidos de la objetivo en el que se podría analizar foo para obtener la información buscada.


Tenga en cuenta que mientras -- write text "ssh username@server" está comentado, sin embargo, lo probé con un ssh y sí devolvió los resultados esperados en el contents .

También un delay era absolutamente necesario y el valor de la delay puede ser necesario ajustar según la condición.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X