0%

sshpass 中使用 awk 的坑

之前在使用ssh远程执行命令,当使用到awk的时候总是报错,而sed和grep都没有问题,以为awk不支持远程执行。最近经过测试找到了解决此问题的方法。

最近编写公司项目的自动化运维脚本的时候,想在 sshpass 中使用 awk,本机上直接执行无问题,但是在 sshpass 下却一直报语法错误,其原因并非两者不兼容,而是语法问题。

原语句:free -m | sed -n '2p' | awk '{print "Mem used is "$3/$2*100}'

想在 sshpass 中执行正确,就应该把 & 转义,在其前面加上 \ 即可,最终结果为:

1
sshpass -p Password ssh root@192.168.1.1 "free -m | sed -n '2p' | awk '{print "Mem used is "\$3/\$2*100}'" >>test.txt