簡體   English   中英

使用LINUX / EXPECT獲取主機的總內存

[英]Get Total Memory of a host with LINUX/EXPECT

我想通過使用“ .exp”腳本來獲取主機的總內存。

進入主機后,執行以下行:

"send "top -n 1 | grep Mem: | awk '{ print $(NF-7) }' | cut -d 'k' -f1\r""

執行腳本時,它返回以下錯誤:

 can't read "(NF-7)": no such variable

但是,如果手動進入主機並執行同一行(不包含“發送”部分),它將返回我預期的數字...

我做錯了什么? 任何想法? 有其他建議可以這樣做嗎?

最好的問候,並在此先感謝,

安東尼奧

top的輸出並不意味着以此方式進行解析。 您可以通過其他更簡單(更好!)的方式獲得內存量。

sed -n -e '/^MemTotal/s/^[^0-9]*//p' /proc/meminfo

或者,您可以解析free的輸出,該輸出也知道如何以方便的大小顯示:

# total memory in megabytes
free -m | sed  -n -e '/^Mem:/s/^[^0-9]*\([0-9]*\) .*/\1/p'

編輯:您總是必須問自己“誰擴展了什么?”

要發送帶有期望的命令,請嘗試

send "sed -n -e '/^MemTotal/s/^\[^0-9\]*//p' /proc/meminfo\n"

# also removes kb suffix
send "sed -n -e '/^MemTotal/{s/^\[^0-9\]*//;s/ .*//p}' /proc/meminfo\n"

# displays in megabytes
send "free -m | sed -n -e '/^Mem:/{s/^\[^0-9\]*//;s/ .*//p}'\n"

這避免了原本希望用於sed expect事項。

這是原始版本的(正確轉義)版本。

send "top -n 1 | grep Mem: | awk '{ print \$(NF-7) }' | cut -d 'k' -f1\n"

Expect是一個Tcl擴展。 Tcl將用雙引號字符串替換$variables (請參閱教程章節

您想使用花括號發送文字字符串:

send {top -n 1 | grep Mem: | awk '{ print $(NF-7) }' | cut -d 'k' -f1}
send "\r"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM