J'ai écrit un script pour vous connecter via ssh et exécuter des commandes. La moitié des appareils sur la liste de ma liste d'appareils ont une combinaison de nom d'utilisateur et de mot de passe acceptable différente.Parcourez plusieurs identifiants possibles TCL Expect
Je veux attendre à pouvoir interpréter l'échec de connexion, lancez une nouvelle tentative de connexion avec le même appareil, mais utilisent des identifiants de connexion à la deuxième tentative (il y a deux combinaisons nom d'utilisateur et mot de passe possibles)
Si n'importe qui peut me diriger dans la bonne direction, je l'apprécierais vraiment. C'est ma première fois en utilisant TCL ou attendre.
Une version condensée de ce que j'ai jusqu'ici est ci-dessous.
set username "someusername"
set password "somepassword"
set devices "X.X.X.X"
foreach device $devices {
puts "Processing device: $device";
spawn plink -ssh $devices
expect "Store key in cache"
send "y\r"
expect "login as:"
send "$username\r"
expect "password:"
send "$password\r"
expect "#"
send "conf t\r"
expect "(config)#"
send "some commands\r"
expect "(config)#"
send "end\r"
expect "#"
send "copy run startup-config\r"
expect "#"
Saviez-vous que 'foreach' peut itérer sur deux ou plusieurs listes à la fois? 'foreach device $ devices nom d'utilisateur $ noms d'utilisateur mot de passe $ mots de passe {...}'. Cela peut rendre ce genre de chose plus facile ... –
Je ne savais pas que Donal. Merci! Je pense que même si le foreach avait plus d'une liste, TCL quitterait après la première tentative ratée. De plus, les appareils Cisco auxquels je suis connecté ne ré-invitent pas le nom d'utilisateur après la saisie du mauvais mot de passe, donc je pense qu'en plus de pouvoir passer plus d'un ensemble de variables d'authentification, le script devrait pouvoir démarrer une nouvelle session utilisant le même $ device à partir de $ devices. Je ne suis pas sûr que ce soit le cas, à mon avis. Si non, je suis content d'être réglé. – helloworldhello