我遇到预期脚本中的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号线)
我猜想这是因为期望‘分析器’ 。但我真的不知道。 对不起,我英文很差。
好像火箭筒杀死苍蝇=) –