원격 클라이언트의 디스크 사용량을 확인하는 스크립트를 작성하려고 합니다. 의미 있는 출력을 위해 스크립트에 필터가 있습니다.
...
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
...
이 명령줄은 CentOS/RHEL 시스템에서 성공적으로 실행되지만 Ubuntu에서는 아래와 같이 awk 명령에 대한 오류가 있습니다.
awk: cmd. line:1: { if( < 20) print bash;}
awk: cmd. line:1: ^ syntax error
우분투에서 awk로 어떻게 비교할 수 있나요? "-gt, -ge..."와 같은 연산자도 작동하지 않습니다.
답변1
비교는 괜찮습니다. 문제는 비교할 변수가 없다는 것입니다. 전체 SSH 명령줄이 큰따옴표 안에 있기 때문에 $5
'ssh'에 도달하기 전에 로컬 셸에서 이를 먹습니다. \$5
이를 방지하려면 로 입력해야 합니다. 나중에 도 마찬가지입니다 $0
(오류 메시지가 그 자리에 어떻게 "print bash;"로 표시되는지 확인하세요).