Salut tout le monde
J'ai actuellement une routine située dans un shell script et qui me permet de faire un upload du profil, d'un utilisateur donné, sur plusieurs serveurs.
Cette routine est assez simple et fonctionne bien
Le souci est le suivant :
- les serveurs gèrent l'authentification via VAS (un daemon qui assure le lien vers l'active directory)
- il arrive que ce lien vers l'AD soit coupé, rendant l'authentification impossible
- le comportement lors d'une tentative de connection est alors le suivant : on reçoit un password prompt indéfiniment
exemple :
Citation :
$> spawn scp -p -q -o StrictHostKeyChecking=no -o ConnectTimeout=7 .bash_profile .bashrc toto@server1:~/
Password:
Password:
Password:
Password:
...
|
A chaque fois, expect envoie le password mais retombe sur le même prompt.
Afin de traiter les cas où l'AD n'est pas joignable, je cherche la meilleure manière de mettre à jour le snipet expect.
Code :
- ...
- export exp_username='toto'
- export exp_pwd='*****'
- for line in ${hosts_table[@]}
- do
- export server_name=$(echo "$line" | awk '{print $2}');
- expect -c '
- eval spawn scp -p $env(ssh_flags) ".bash_profile .bashrc" $env(exp_username)@$env(server_name):~/
- match_max 1024000
- expect
- {
- eof { send_error "\n ERROR : SSH failure\n" ; exit 1 }
- -nocase "connection refused" { send_error "\n ERROR : Connection refused by remote host\n" ; exit 1 }
- -nocase "connection timed out" { send_error "\n ERROR : Connection timed out\n" ; exit 1 }
- -nocase "closed by" { send_error "\n ERROR : Connection closed by remote host\n" ; exit 1 }
- -nocase "no route" { send_error "\n ERROR : No route to host\n" ; exit 1 }
- -re ".*es.*o.*" { send "yes\r" ; exp_continue }
- -re ".*sword.*" { exp_send "$env(exp_pwd)\r" }
- -nocase "press enter to continue" { send "\r" ; exp_continue }
- }
- interact'
- done
- ...
|
Si quelqu'un a une idée je suis preneur 
Message édité par ANViL le 07-01-2013 à 13:40:46
---------------
Easy Ridin' ⎝⏠⏝⏠⎠