2017-07-25 1 views
0

J'ai actuellement un script TCL expect qui se connecte à plusieurs périphériques via SSH. Ivee a utilisé une boucle for pour réitérer à travers les dispositifs.TCL EXPECT - Entrez le mot de passe avec l'impression sur stdout et attribuez-le à une variable

Mon problème est que le mot de passe actuel est défini comme une variable dans le script en texte brut. Mon mot de passe pour tous les appareils est le même puisque nous utilisons TACACS. Ce que je veux arriver, c'est que quand je tape mon mot de passe, il n'y a pas de STDOUT et quand j'appuie sur ENTER, je l'attribue à une variable que mon script peut utiliser.

Voici un exemple de mon script:

set userName "me" 
set host "192.168.1.1" 

puts "Enter password: " 
gets stdin passWord 
spawn ssh $userName\@$host 
expect "*word: " 
send "$passWord\r" 
expect "#" 
send "term len 0\r" 
expect "#" 
send "show ip int br\r" 
expect "#" 

Merci!

+0

Quelle est votre question? – pynexj

+1

Je veux taper mon mot de passe dans le terminal mais il ne devrait pas le montrer dans stdout. –

Répondre

1

Vous pouvez utiliser la commande stty:

stty -echo 
# there is no echo in terminal 
# 

stty echo 
# return echo back 
+0

fonctionne pour mon cas. Merci! –