我正在尝试以百分比形式捕获远程机器上的总使用内存,如下所示
sshpass -p pasa123 ssh root@server01 " /usr/bin/free | awk '/Mem/{printf("RAM Usage: %.2f%\n"), $3/$2*100}' "
awk: cmd. line:1: /Mem/{printf(RAM Usage: %.2f%n), /*100}
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1: /Mem/{printf(RAM Usage: %.2f%n), /*100}
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1: /Mem/{printf(RAM Usage: %.2f%n), /*100}
awk: cmd. line:1: ^ unterminated regexp
awk: cmd. line:1: /Mem/{printf(RAM Usage: %.2f%n), /*100}
awk: cmd. line:1: ^ unexpected newline or end of string
所以我们在“$”之前添加反斜杠
sshpass -p pasa123 ssh root@server01 " /usr/bin/free | awk '/Mem/{printf("RAM Usage: %.2f%\n"), \$3/\$2*100}' "
但仍然出现相同的错误
有什么建议可以解决这个语法问题吗?
答案 0 :(得分:3)
您还必须转义双引号 "
:
sshpass -p pasa123 ssh root@server01 "/usr/bin/free | awk '/Mem/{printf(\"RAM Usage: %.2f%\n\"), \$3/\$2*100}' "
答案 1 :(得分:0)
最简单的方法是在本地机器上处理它。要求 ssh 为您提供 /usr/bin/free
的输出并在本地使用 awk
:
sshpass -p pasa123 ssh root@server01 /usr/bin/free | awk '/Mem/{printf("RAM Usage: %.2f%\n"), $3/$2*100}'
这里有三个评论:
sshpass -p
。sshpass -p
结合使用 ssh,真的不要!通过在适当的时间发出简单的 df
,任何用户都可以即时读取您的 root 密码。
我强烈建议您开始使用公钥身份验证并放弃使用 sshpass -p
!