Comment créer un fichier universel (script) pour un Mac, basé sur plusieurs commandes de terminal

20

J'ai plusieurs commandes de terminal que j'utilise à des fins de dépannage, en les tapant une par une dans la fenêtre du terminal.

Ces commandes nécessitent la saisie du mot de passe de l'utilisateur.

Je cherche un moyen de créer un fichier (script) universel avec ces commandes. Je veux pouvoir exécuter le fichier sur un Mac simplement en double-cliquant dessus ou en faisant glisser le fichier sur l'icône du terminal.

Je n'ai jamais rien fait de tel auparavant. Existe-t-il un moyen de créer un tel script? S'il vous plaît donnez votre avis.

0lesya
la source
Voulez-vous dire que vous souhaitez exécuter un script sans que l'utilisateur n'entre son mot de passe?
Allan
@Allan Je veux exécuter un fichier au lieu de plusieurs commandes . Le faire fonctionner sans que l'utilisateur entre son mot de passe au moins une fois serait une bonne chose, mais très probablement impossible si je ne me trompe pas.
0lesya
C'est certainement possible, sauf si vous devez faire quelque chose qui nécessite un administrateur - voir ma réponse ci
Cullub

Réponses:

30

Réponse courte

Un .commandscript devrait faire l'affaire


Pas à pas

  1. Ouvrez TextEdit et créez un nouveau fichier
  2. Convertissez-le en texte brut en cliquant sur Format> Rendre le texte brut
  3. Ajoutez vos commandes, une par ligne. Par exemple, vous pourriez faire:
    #! /bin/bash cd ~/Desktop mkdir myCoolFolder cd myCoolFolder

  4. Exécutez chmod u+x ~/Desktop/myCommandScript.commanddans votre terminal, où ~/Desktop/myCommandScript.commandest le chemin d'accès à votre script. Cela donnera au terminal l'autorisation d'exécuter le fichier.

  5. Vous avez terminé! Double-cliquez sur le fichier à exécuter. Faire glisser sur l'icône du terminal fonctionnera également.

Remarques:

  • Si vous devez faire quelque chose qui nécessite un accès root (admin), vous pouvez préfixer votre commande avec sudo. Lorsque le script s'exécute, vous devrez entrer votre mot de passe (et être administrateur)
  • Si l'utilisateur final n'est pas un administrateur, mais que vous devez faire quelque chose qui nécessite un accès root, vous pouvez utiliser su someAdminName, qui exécutera la commande en tant que someAdminName(vous aurez besoin de son mot de passe).

Vous pouvez également voir ici sur Stack Overflow pour un peu plus d'informations.

Cullub
la source
Existe-t-il un moyen de faire en sorte qu'un fichier de commande ne se déconnecte pas? Je veux avoir un fichier de commande qui ouvre le terminal avec une variable de chemin prédéfinie.
Royi
8

Un script n'est qu'une série de commandes, vous pouvez donc le mettre dans un script bash.

#!/bin/bash

command 1
command 2
command 3

Maintenant, tout cela dépend du type de commande et de la nécessité ou non d'une intervention de l'utilisateur.

Cependant, si vous obtenez des informations de diagnostic, par exemple, vous pouvez avoir un script qui ne

#!/bin/bash

# Get SMART status of main drive
diskutil info disk0 | grep -i smart

# Get the model of the machine in question
system_profiler SPHardwareDataType | grep -i Identifier

Ce ne sont là que des exemples. Gardez à l'esprit que toute sortie générée sera envoyée à la console (écran). Cependant, vous pouvez rediriger la sortie vers un fichier en ajoutant >> /path/to/outputfile.txtà la fin de chaque commande afin d'avoir un fichier que vous pouvez analyser une fois le fichier terminé.

Vous pouvez nommer le fichier diagnostics.shet le placer où vous le souhaitez. Assurez-vous simplement de le rendre exécutable en exécutant la commande chmod +x diagnostics.shet utilisez-le ./diagnostics.shpour l'exécuter ou double-cliquez dessus pour l'exécuter s'il est enregistré sur votre bureau .

Allan
la source