1 votes

Obtenir la sortie d'une commande sur une session ssh en utilisant AppleScript

Je suis en train de me connecter à un ssh avec AppleScript comme suit :

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    

Comment puis-je obtenir la sortie de la commande sur la machine distante ?

Ce qui suit n'a pas fonctionné : set x to write text "ls"

0 votes

@user3439894 c'est fait, j'ai mis à jour le code

0 votes

@user3439894 Je n'arrive pas à compiler, veuillez noter que j'ai plusieurs volets dans la même fenêtre, pouvez-vous montrer un exemple de code ?

1voto

user3439894 Points 52496

En ajoutant, par exemple, :

delay 1
set foo to contents

Après :

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

Dans le code du PO, par exemple :

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

Obtient le contenu de la cible dans lequel on pourrait alors analyser foo pour obtenir l'information recherchée.


Notez que si -- write text "ssh username@server" est commenté, néanmoins, je l'ai testé avec un fichier valide. ssh et il a retourné les résultats escomptés dans le champ contents .

Également un delay était absolument nécessaire et le valeur de la delay peuvent avoir besoin d'être ajustées en fonction de la situation.

0 votes

Cela fonctionne, mais il ne devrait pas y avoir de raison d'avoir besoin du terminal GUI.

0 votes

Cela a très bien fonctionné :)

1voto

Marc Wilson Points 3640

Une meilleure façon de faire ce que vous voulez :

-- 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

Pour faire ce que vous essayez de faire, il faudrait que le terminal capture l'intégralité de la commande ls dans le tampon de défilement et que vous puissiez le récupérer dans le tampon. Vous n'avez pas besoin du terminal GUI (que ce soit Terminal/iTerm) pour faire ce que vous avez demandé.

0 votes

Merci, j'ai déjà essayé mais j'ai besoin de la session interactive. Je ne veux pas envoyer chaque commande avec ssh.

0 votes

Pourquoi pas ? Il n'y a aucune raison de ne pas envoyer simplement des commandes. Regroupez les commandes selon vos besoins. Les scripts de l'interface graphique sont intrinsèquement fragiles, comme l'indique le commentaire de l'autre réponse sur les délais nécessaires.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X