2009-07-19 10 views
3

J'ai créé un fichier crontab qui exécutera un script bash test.sh. Ce fichier test.sh nécessite une entrée de l'utilisateur et enregistre l'entrée de l'utilisateur dans une variable. Comment puis-je m'assurer que l'entrée de l'utilisateur sera enregistrée dans une variable dans test.sh, et quand crontab exécute le script, je peux obtenir la sortie que je veux? Par exemple, j'ai 2 fichiers, fichier1.sh et fichier2.sh. Je mets file2.sh dans le fichier 1.sh. Je lance ensuite file1.sh, récupère l'entrée de l'utilisateur et l'enregistre quelque part. crontab exécutera file2.sh et récupèrera la valeur de la variable "enregistrée quelque part". est-ce qu'il y a de toute façon pour ça?Exécuter crontab avec l'entrée utilisateur

Répondre

5

Si l'entrée est lue par le script à partir de stdin, il suffit de rediriger l'entrée à partir d'un fichier (à l'aide d'un script wrapper).

#! /bin/sh 
test.sh < data.in 

Si cela ne fonctionne pas pour vous (vous avez votre script appelant un certain programme shell interactif comme telnet, vous pouvez utiliser Expect pour automatiser l'interaction.

0

Cela semble être une chose étrange à faire. Posez-vous ces questions:

voulez-vous vraiment un pop-up demandant à l'utilisateur une valeur d'entrée chaque fois que l'action sera exécutée

ce qui arrive quand il n'y a personne au clavier

01?
+0

si j'ai pour 2 par exemple, les fichiers file1.sh et file2.sh. Je mets file2.sh dans le fichier 1.sh. Je lance ensuite file1.sh, récupère l'entrée de l'utilisateur et l'enregistre quelque part. crontab exécutera file2.sh et récupérera la valeur de * la variable quelque part enregistrée *. est-ce qu'il y a de toute façon pour ça? – Herves

+0

J'ai rencontré un cas où cela serait utile: un script de commit git automatisé. Le cron s'exécute très fréquemment, mais le popup n'est requis qu'occasionnellement (par simple simplification, s'il y a des changements à commettre et que rien n'a changé depuis au moins 5 minutes). Ce qui serait bien, ce serait une entrée de l'utilisateur pour saisir un message de validation afin que tout n'ait pas un message "auto commit". Si l'entrée de l'utilisateur n'est pas reçue après une certaine période de temps, le script devrait revenir à une valeur par défaut. –

1
  1. file1.sh obtient l'entrée d'utilisateur et écrit à /etc/file2.dat
  2. file2.sh lit /etc/file2.dat et fait tout ce dont il a besoin
Questions connexes