2 votes

Exécution d'une série de commandes dans Terminal

J'exécute les commandes suivantes pour logkext dans mon terminal et j'aimerais connaître un moyen d'automatiser l'ensemble du processus.

  1. Terminal ouvert
  2. type "sudo logKextClient"
  3. Saisir le mot de passe de l'administrateur
  4. logKextClient a son propre mot de passe que je dois taper maintenant
  5. logKextClient est en cours d'exécution. l'invite est logKextClient >
  6. Je dois taper une commande ici. "ouvrir"
  7. Je dois ensuite fermer une fenêtre qui s'ouvre. Cette fenêtre est intitulée out_logFile.txt. En général, elle s'ouvre dans TextEdit. Cela ne me dérange pas de la fermer de force. Une copie du fichier est enregistrée sur le bureau.

J'aimerais pouvoir double-cliquer sur quelque chose et exécuter parfaitement la liste de commandes/actions ci-dessus.

Merci beaucoup pour vos suggestions.

1voto

Adam Points 49

J'ai suivi exactement le même processus lorsque je jouais avec logKext. La commande Unix que vous pouvez explorer est /usr/bin/expect.

Il peut rapidement devenir complexe, mais il agit essentiellement comme un médiateur entre vous et les programmes que vous exécutez, de sorte qu'il peut fournir des réponses que vous auriez normalement dû taper. Par exemple, j'ai construit ce script pour pouvoir automatiser le processus d'impression de la sortie logKext. Vous devriez reconnaître toutes les commandes que vous devriez normalement taper vous-même dans logkextClient...

#!/usr/bin/expect -f
spawn logkextClient
expect "logKext Password:"
send "mylogkextpassword\r"
expect "logKextClient > "
send "print\r"
expect "logKextClient > "
send "quit\r"
close

Dans les versions 10.5 et 10.6, cela fonctionnait bien pour sortir l'impression logKext afin de pouvoir l'insérer dans un e-mail et l'envoyer. Cependant, j'étais connecté en tant que Root au terminal, donc c'était simple.

Théoriquement Si vous n'étiez pas connecté en tant que Root, vous pourriez dire à la place

#!/usr/bin/expect -f
spawn sudo -k logkextClient
expect "Password:"
send “myrootpassword\r”
expect "logKext Password:"
send "mylogkextpassword\r"
expect "logKextClient > "
send "print\r"
expect "logKextClient > "
send "quit\r"
close

(à noter que j'ai utilisé sudo -k intentionnellement d'être cohérent et d'exiger un mot de passe à chaque fois)

Vous pouvez donc utiliser votre éditeur de ligne de commande préféré pour créer ce script, faire un chmod +x et faites-le glisser vers le dock pour le lancer... En théorie.

Mais j'ai eu des problèmes avec Mavericks pour que /usr/bin/expect se comporte correctement avec sudo, donc cela ne fonctionne pas pour moi dans d'autres scripts comme cela devrait. Et je n'ai plus du tout installé logKext pour les tests de toute façon.

Mais je pense que c'est la direction que vous souhaitez prendre.

Bonne chance !

0voto

Rajiv Points 428

Vous pouvez utiliser Automator pour ce faire. Les instructions concernent Mavericks, mais l'essentiel est le même pour tous les systèmes d'exploitation.

  1. Ouvrir Automator
  2. Cliquez sur "Nouveau document"
  3. Sélectionnez "Workflow"
  4. Cliquez sur "Enregistrer" (il se peut que l'on vous demande l'autorisation, cliquez sur "Ouvrir les préférences du système").
  5. Effectuer toutes les actions que vous voulez qu'il fasse
  6. Cliquez sur le bouton d'arrêt
  7. Sauvegarder le flux de travail

Désormais, lorsque vous souhaitez qu'il effectue ces actions, il vous suffit d'ouvrir le flux de travail.

0voto

Michael Kropat Points 3993

Je suggère d'utiliser AppleScript. Je ne suis pas en mesure de fournir le code réel, mais seulement une idée.

a) Terminal de lancement : http://smallbusiness.chron.com/use-applescript-launch-programs-48829.html

b) Indiquer au terminal d'exécuter la commande : https://stackoverflow.com/questions/1870270/sending-commands-and-strings-to-terminal-app-with-applescript

c) Accorder au terminal le privilège de superutilisateur : https://discussions.apple.com/message/23354237#23354237

Je ne suis pas sûr que les points (b) et (c) puissent se combiner parfaitement.

d) Fermer la fenêtre d'édition de texte/document : https://stackoverflow.com/questions/10933711/how-to-open-close-and-close-the-dialogs-of-another-application-using-cocoa-or-a

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