서버에 ssh로 접속하는 스크립트를 작성하고 로그 파일을 잘라야 합니다.
내 스크립트는 다음과 같습니다
#!/bin/bash
for server in $(cat c10_servers.txt); do
ssh $server "ls /var/log/hello grep -i hello.log. | echo "" | xargs echo "" | sudo tee"
done
이것은 단지 파일 이름만 표시할 뿐이고 이것이 작동하지 않기 때문에 내가 무슨 실수를 하고 있는지 궁금합니다.
답변1
바꾸다:
ls /var/log/hello grep -i hello.log. | echo "" | xargs echo "" | sudo tee
노력하다:
for f in /var/log/hello/*hello.log.*; do sudo truncate --size 0 "$f"; done
SSH를 통해 이를 보내려면 다음 위치에 입력하세요.아포스트로피, 큰따옴표가 아님:
for server in $(cat c10_servers.txt); do
ssh "$server" 'for f in /var/log/hello/*hello.log.*; do sudo truncate --size 0 "$f"; done'
done
command 를 사용하지 않고도 이 작업을 수행할 수 있지만 truncate
따옴표가 더 보기 흉해집니다.
for server in $(cat c10_servers.txt); do
ssh "$server" 'sudo sh -c '\''for f; do : > "$f"; done'\'' sudo-sh /var/log/hello/*hello.log.*'
done
루트로 직접 SSH를 수행할 수 있으면 명령이 더 간단합니다.
for server in $(cat c10_servers.txt); do
ssh -l root "$server" 'for f in /var/log/hello/*hello.log.*; do : > "$f"; done'
done