Estoy intentando escribir un script que verifique el uso del disco de clientes remotos. Hay un filtro en el script para obtener resultados significativos:
...
ssh server "sudo df -Ph 2>/dev/null \
| tail -n +2 \
| grep -v tmpfs \
| grep G| sed s/%//g \
| sed s/G//g \
| awk '{ if($5 < 20) print $0;}'" #to get only disks that the usage is under %20
...
Esta línea de comando se ejecuta correctamente en máquinas CentOS/RHEL pero hay un error sobre el comando awk en Ubuntu, como se muestra a continuación:
awk: cmd. line:1: { if( < 20) print bash;}
awk: cmd. line:1: ^ syntax error
¿Cómo puedo hacer una comparación en awk en Ubuntu? Operadores como "-gt, -ge..." tampoco funcionan.
Respuesta1
La comparación está bien, el problema es que te falta la variable con la que comparar. Debido a que toda su línea de comando SSH está entre comillas dobles, $5
su shell local la come incluso antes de que llegue a 'ssh'; debe escribirla para \$5
evitar eso. Lo mismo ocurre con este $0
último (observe cómo el mensaje de error dice "print bash;" en su lugar).