2016-04-07 10 views
0

Dies ist mein Code in der Shell erwarten.Ich möchte Ausgabe von Befehl zu Variable in der Shell erhalten

#!/usr/bin/expect -f 
array set routers { 0 "192.168.1.1" 1 "127.0.0.1"} 
array set password { 0 "56343451" 1 "123456789" } 
set size 2 
set COUNT 10 
for {set i 0} {$i < $size} {incr i 1} { 
    set count "[ping -c $COUNT $routers($i) | grep 'received' | awk -F',' '{ print \$2 }' | awk '{ print \$1 }']" 
    if { $count <= 3 } { 
    spawn ssh [email protected]$routers($i) 
    expect { "no)?" { send "yes\r"; exp_continue } 
    password: { send $password($i)"\r"; exp_continue} 
    interact 
    } 
    } 
} 

Ich möchte Ausgabe empfangen von Ping zu $ ​​zählen. Wenn ich versuche, dies zu laufen kommt "‚: keine solche Datei oder das Verzeichnis‘

Antwort

1

Sie haben die awk Ausdrücke verspannen

% set COUNT 3 
3 
% set router 135.xxx.xx.xxx 
% exec /bin/ping -c $COUNT $router | grep "received" | awk -F "," {{print $2}} | awk {{print $1}} 
3 
%  
.