1

我想通过使用 Expect 脚本来获取主机的总内存。感谢我在使用 LINUX/EXPECT 获取主机的总内存中收到的答案,我现在离最终解决方案更近了。(感谢glenn jackmanSorpigal)。

连接到主机后,我执行以下行:

send "cat /proc/meminfo | grep MemTotal | awk '{print \$2}'\r"

它返回我想要的值,但是当我得到 中包含的值时$expect_out(buffer),它包含的信息比我需要的多得多,包括发送语句和前后命令提示符标志。我完全得到以下,使用exp_internal 1

expect: set expect_out(buffer) "17# cat /proc/meminfo | grep MemTotal | awk '{print $2}'\r\n34150400\r\nCBA"

我只想提取接近末尾的数字,34150400. 任何提示或想法?

4

1 回答 1

2
regexp "\n(\[0-9]+)" $expect_out(buffer) - num
puts $num   ;# => 34150400

顺便说一句,您可以在不发送 shell 命令的情况下执行此操作:

set fid [open /proc/meminfo]
while {[gets $fid line] != -1} {
    if {[regexp {^MemTotal: *(\d+)} $line - memtotal]} {
        break
    }
}
close $fid
puts $memtotal
于 2012-04-24T15:30:18.907 回答