2010-09-23 4 views
1

Chaque fois que j'essaie d'exécuter le script, il ne me montre aucun résultat sur la sortie standard.Aucun résultat sur la sortie standard lors de l'exécution attendez

#!/usr/bin/expect -- 
send [exec tail -f /var/opt/jboss/log/jbossall.log | grep -i "pattern"] 

Veuillez indiquer la raison.

+0

Savez-vous que avec l'option -f votre get seulement 10 dernière ligne et par conséquent l'apparition une fois? Donc, êtes-vous sûr qu'après l'invocation, il y a quelque chose d'écrit dans un fichier avec un motif donné. Avez-vous testé la commande sans grepping, juste pour voir si un motif donné apparaît? – Gadolin

+0

oui, pour répondre à votre requête: le fichier journal (jbossall.log) JBoss se connecte depuis les serveurs asf toujours écrits à chaque milliseconde pour les transactions sur le système. – ErAB

+0

En outre, oui, le fichier est toujours écrit avec le motif donné. EVen j'ai testé la commande sans et quelques autres commandes comme :: #!/Usr/bin/expect - envoyer [exec date] envoyer [exec tail -F /var/opt/jboss/log/jbossall.log] – ErAB

Répondre

0

La commande exec ne se termine jamais car vous utilisez tail -f. De la page d'informations pour la queue: "Boucle pour toujours en essayant de lire plus de caractères à la fin du fichier". Puisque exec ne se termine pas, send n'est jamais invoqué.

Vous avez probablement besoin de faire quelque chose comme ceci:

spawn whatever 
set whatever_id $spawn_id 

spawn sh -c {tail -f /var/opt/jboss/log/jbossall.log | grep -i "pattern"} 
set tail_id $spawn_id 

while {1} { 
    expect -i $tail_id "(.*)\n" 
    send -i $whatever_id $expect_out(1,string) 
} 
+0

Je propose deux détails d'implémentation que Glenn comprend parfaitement, mais qui pourraient être utiles à l'utilisateur451404 ou à d'autres lecteurs: 1. "... while 1 ..." dans Expect source est souvent plus exprimé idiomatiquement avec exp_continue; et, selon la nature de "quoi" en haut, il peut être préférable d'écrire ce script en termes de Tcl standard orienté sans attentes. –

+0

Merci Gleen, ça marche pour moi :-) @Cameron, merci pour votre contribution :-) – ErAB

+0

ah, désolé, merci Glenn :-) – ErAB

Questions connexes