[英]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.