.gnu/linux 서버를 통해 로그인하고 다음 명령의 출력을 수집해야 합니다 SSH
. 비밀번호 없는 인증을 해봤습니다 SSH
. bash 스크립트를 사용하여 이 작업을 수행하고 싶습니다.
df -lh | awk '{if ($5 >= 20) { print $6 " " $2 " " $3 " " $5 }}'
top -b -n1 | grep "Cpu(s)" | awk '{print 100 - $5}'
아래 명령을 시도했지만 "명령"을 인용하는 대신 df
단일 명령이 주어진 것처럼 작동하지만 다음과 같은 긴 명령을 제공합니다.
df -lh | awk '{if ($5 >= 20) { print $6 " " $2 " " $3 " " $5 }}'
top -b -n1 | grep "Cpu(s)" | awk '{print 100 - $5}'
작동하지 않습니다..
답변1
답변2
1단계: 스크립트 작성
cat script.sh
df -lh | awk '{if ($5 >= 20) { print $6 " " $2 " " $3 " " $5 }}'
top -b -n1 | grep "Cpu(s)" | awk '{print 100 - $5}'
2단계: scp
호스트에게 보냅니다. (scp는 안전한 복사본입니다.) 호스트는 다음 위치에 있습니다.$h
scp script.sh $h:/tmp
3단계: 실행
ssh $h bash /tmp/script.sh
출력을 리디렉션할 수도 있습니다.
ssh $h bash /tmp/script.sh > result-$h.txt
답변3
별도의 스크립트 파일을 작성하지 않고 이 줄을 실행하려면 명령을 큰따옴표로 묶고 충돌할 수 있는 문자를 모두 이스케이프해야 합니다. 예를 들어:
ssh your-host "
df -lh | awk '{if (\$5 >= 20) { print \$6 \" \" \$2 \" \" \$3 \" \" \$5 }}'
top -b -n1 | grep \"Cpu(s)\" | awk '{print 100 - \$5}'"
또는 작은따옴표를 사용하세요.
ssh your-host'
df -lh | awk '"'"'{if ($5 >= 20) { print $6 " " $2 " " $3 " " $5 }}'"'"'
top -b -n1 | grep "Cpu(s)" | awk '"'"'{print 100 - $5}'"'"
또는 여기 문서를 사용하세요.
ssh your-host "$(cat << 'END'
df -lh | awk '{if ($5 >= 20) { print $6 " " $2 " " $3 " " $5 }}'
top -b -n1 | grep "Cpu(s)" | awk '{print 100 - $5}'
END
)"
마지막 옵션은 더 많은 줄을 사용한다는 단점이 있지만 명령에서 아무것도 변경할 필요가 없습니다.