Bonjour,
J'aimerais connaitre mes équipements qui serait configurés avec le protocole telnet.
Pour cela j'ai conçu un script qui va se connecter sur tous mes équipements et qui va passer une commande.
Le script fonctionne parfaitement, mais je rencontre un soucis avec les équipements qui justement ne sont pas configurés avec le protocole telnet ; sinon ssh.
J'aimerais insérer une condition à savoir si la connexion telnet n'est pas établit alors on passe à l'équipement suivant.
Je pense que cela peut-etre fait avec un if, mais je ne sais pas comment le mettre en place.
Voici pour ce qui est du script :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| #!/usr/bin/expect -f
#Option session
set force_conservative 1 ;
match_max 1000000000
set timeout 5
#Edit for User
set user admin
#Edit for Password
set password XXXXXXXXX
#Edit for prompt
set prompt "#"
#Get IP List from hosts.txt
set f [open "/tmp/hosts.txt"]
set data [read $f]
close $f
foreach line [split $data \n] {
if {$line eq {}} continue
spawn telnet $line
sleep 2
expect "Username:"
send "$user\r"
expect "assword:"
send "$password\r"
expect "$prompt"
send "terminal length 0\r"
expect "$prompt"
set timeout 120;
send "show run | i ssh\r"
expect "$prompt"
set output $expect_out(buffer)
if {[regexp { } $output matched sub1 sub2]} {
set SSH [open /tmp/confirm.list a+]
puts $SSH "$line : Connexion Telnet:"
close $SSH
} else {
set SSH [open /tmp/confirm.list a+]
puts $SSH "$line : OK"
close $SSH
}
send "exit\r"
continue
} |
Sachant qu'une connexion telnet est repérée par :
1 2 3
| Trying X.X.X.X...
Connected to X.X.X.X.
Escape character is '^]'. |
et le refus est repéré par :
telnet: connect to address X.X.X.X: Connection refused
Partager