Estou tentando escrever um script que verifique o uso do disco de clientes remotos. Há um filtro no script para saída significativa:
...
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 linha de comando é executada com sucesso em máquinas CentOS/RHEL, mas há um erro sobre o comando awk no Ubuntu, como abaixo:
awk: cmd. line:1: { if( < 20) print bash;}
awk: cmd. line:1: ^ syntax error
Como posso fazer comparação no awk no Ubuntu? Operadores como "-gt, -ge..." também não funcionam.
Responder1
A comparação está correta, o problema é que está faltando a variável para comparar. Como toda a sua linha de comando SSH está entre aspas duplas, o $5
é comido pelo seu shell local antes mesmo de chegar a 'ssh' - você deve digitá-lo para \$5
evitar isso. O mesmo vale para o $0
último (observe como a mensagem de erro diz "print bash;" em seu lugar).