我遇到預期腳本中的send命令問題。 我從來沒有使用過期望,所以有這麼多的特性,我不知道,主要是關於語法。使用期望發送此命令的終端命令時遇到問題
其實它捕捉cpu使用順便說一句。
top -n 10 -d 0.01 | awk'BEGIN {FS =「[,%]」; printf「(」}/^ Cpu/{[^ 0-9。,] + /,「」,$ 7); gsub(/^3949 /,「」,$ 7); printf $ 7「+」} END {print 0「)/ 10」}'| bc
我想要做的是:期待,使用send命令。我想通過腳本傳遞該字符串。
我想在這條路上:
#!/bin/expect
set timeout 20
set user [lindex $argv 0]
set password [lindex $argv 1]
set host [lindex $argv 2]
set prompt "$ "
;
proc gestat { } {
;
send -- "echo -n 'MEMORY_FREE: ' && free -t | grep 'buffers/cache' | awk '{print \$4/(\$3+\$4) * 100}'\r"
send -- "top -n 10 -d 0.01 | awk \'BEGIN{FS='[,%]'; printf '(' }/^Cpu/{ gsub(/[^0-9.,]+/,'',\$7); gsub(/^3949/,'',\$7); printf \$7' + '} END{print 0')/10'}\' | bc\r"
return
}
;
spawn ssh [email protected]$host
while (1) {
expect {
"(yes/no)? " {
send -- "yes\r"
}
"password: " {
send -- "$password\r"
}
"$prompt" {
gestat
break
}
}
}
expect "$prompt"
send -- "exit\r"
expect eof
但發送不起作用。錯誤是:
無效的命令名稱「%」 在執行「%」 (程序‘gestat’4號線)
我猜想這是因爲期望‘分析器’ 。但我真的不知道。 對不起,我英文很差。
好像火箭筒殺死蒼蠅=) –