[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [linux-team] redirection des messages dans le crontab



> Bonjour,
> 
> J'ai un probleme qui me turlupine depuis quelques temps.
> Lorsque je fais des dumps (avec rdump) de filesystems en mode 
> interactif et qu'une fin de bande est detectee, je recois un gentil
> message me demandant si le volume suivant est pret et j'ai le temps de
> changer la bande avant de repondre.
> 
> Lorsque je mets le scripts dans le crontab, j'ai un message suivant :

...
> 
> Comme je fais ces backups sur une armoire a bandes, je voudrais trouver un
> moyen d'intercepter la demande "bande OK ?", pour pouvoir faire changer la
> bande avant de continuer.

En plus des autres suggestion, il me semble que EXPECT (un dérivé de TCL)
ferait très bien l'affaire, car il a été écrit pour résoudre ce type de
situation : convertir un programme interactif en batch intelligent (par
exemple possibilité de tenir compte de différentes situations, au lieu
d'un 'chat' rigide.

Par exemple je l'utilise pour réaliser une connection telnet, lancer une
application, répondre aux situations prévisibles, et enfin laisser
l'utilisateur en mode interactif (MAIS tout en gardant le monitoring de ce
qui se passe, par exemple prohiber certaines manoeuvres ou
créer des macros non prévues par le programme original par interception
d'une séquence convenue).

===============================================================
Pour des applications simples, c'est très simple à utiliser.
===============================================================

Exemple déjà nettement plus compliqué (pour illustrer différents aspects) 
qu'une simple suite de couples 'expect/send' souvent suffisante pour
régler un problème :

Lancement d'une session telnet et démarrage de vubis (gestion
bibliographique)

REM: 

'expect' et 'interact' peuvent comporter plusieurs cas de figure
(patterns) et provoquer des actions différenciées (voir la section
interact, qui traîte des idiosyncrasies nécessaires à sortir de
l'application)

voir aussi le 'spawn telnet' qui permet garder le contrôle du STDIN etc.
pour le reste des interactions STDIN/STDOUT
  
---------------------------------------------------------------------------
#!/usr/bin/expect

# -------------------------------------------------------
     set APP VUBIS
     set verbose 0
# -------------------------------------------------------

proc getpasswd
{ app prompt } {
  send "\n\n--------------------------------------------( $app )\n"
  send "Enter your $prompt password : "
  system stty -echo
  gets stdin PASS
  system stty echo
  return $PASS
}

set HOME  [ lindex [ array get env HOME ] 1 ]

# Lecture d'un fichier de préférences personnelles (langue,
# bibliothèque ....
set LOGIN [ lindex [ split [ exec grep $APP $HOME/.userdef ] "=" ] 1 ]

set ULOGIN     [ lindex [ split $LOGIN "," ] 0 ]
set ALOGIN     [ lindex [ split $LOGIN "," ] 1 ]
set PARAM0     [ lindex [ split $LOGIN "," ] 2 ]
set PARAM1     [ lindex [ split $LOGIN "," ] 3 ]

(...)


if { $AppPASSW == "*" }  {
  set AppPASSW [ getpasswd $APP APPLICATION ]
}

# ----------------------------------- Début de la connection
spawn telnet DROSERA
expect "ogin:"
 send  "$UnixLOGIN\r"
expect "word:"

 send "$UnixPASSW\r"
expect "> "
 send "ksh\r"
expect ">>"
 send "cd /u/msm;./msm\r"
expect "keuze : "
 send "$PARAM0\r"
expect "word : "
 send "$AppLOGIN\r"
expect "Wahl : "
 send "$PARAM1\r"
set STATE MUMPS
# --------------------------- interaction
interact {
  "\004" {
     if { $STATE == "MUMPS" }  {
       if { $AppLOGIN == "pub" }  {      
        send "expub\r"
        send "expub\r"
        set STATE UNIX
       }
       if { $AppLOGIN != "pub" }  {      
        send "\033\033\r"
        send "S\r"
        set STATE UNIX
       }
     }  
     if { $STATE == "UNIX" }  {
       send "exit\nexit\nmsg \"VUBIS is done !\"\n"
     }
  }
}
# ----------------------------------------------------------------
  
	Alain

---------
This message was sent by Majordomo 1.94.3. Please report problems to
manu@rtfm.be. If you want to be deleted from the list, send a mail to
majordomo@rtfm.be with "unsubscribe linux-team" in the body.