我想通过使用Expect脚本获取主机的总内存。感谢我在Get Total Memory of a host with LINUX/EXPECT收到的答案,我现在更接近最终解决方案了。 (感谢glenn jackman和Sorpigal)。
连接到主机后,执行以下行:
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
。任何提示或想法?
答案 0 :(得分: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