정보를 사용하여 디렉터리를 에코합니다.

정보를 사용하여 디렉터리를 에코합니다.

다음 스크립트가 실행 중인데 결과에 대해 자세히 알고 싶습니다. 서비스 상태 외에 rtvscand파일이 있는 위치도 추가하고 싶습니다. 예를 들어, Symantec 파일은 /app 디렉토리에 있거나, Symantec 파일은 /opt 디렉토리에 있습니다.

# cat /app/scripts/symantec_scripts/symantec.sh
for i in `cat /app/scripts/symantec_scripts/list`
do ssh root@$i "uname -n
if [ -s /app/Symantec/virusdefs/definfo.dat ]; then
  cat /app/Symantec/virusdefs/definfo.dat
else
  cat /opt/Symantec/virusdefs/definfo.dat
fi
echo `service rtvscand status`
echo ....................................................................." ; done | tee /tmp/symantec_info.`date +"%m%d%y"`

답변1

아래의 다른 (더 나은) 답변을 참조하십시오

locif 문에 변수를 추가합니다.

# cat /app/scripts/symantec_scripts/symantec.sh
for i in `cat /app/scripts/symantec_scripts/list`
do ssh root@$i "uname -n
  if [ -s /app/Symantec/virusdefs/definfo.dat ]; then
    loc='/app'
    cat /app/Symantec/virusdefs/definfo.dat
  else
    loc='/opt'
    cat /opt/Symantec/virusdefs/definfo.dat
  fi
echo `service rtvscand status`
echo Location is $loc/Symantec/virusdefs/definfo.dat
echo ....................................................................." ; done | tee /tmp/symantec_info.`date +"%m%d%y"`

편집 내용은 인쇄 위치 주위의 큰따옴표 loc="string"로 변경되고 제거되었습니다 .loc='string'echo

답변2

좋아, 어떤 이유로 변수를 사용하여 위치를 저장하는 것이 작동하지 않습니다. 전반적으로 더 나은 접근 방식은 find단순히 시만텍이 있는 위치를 찾은 다음 cat문제 없이 전체 경로를 에코하는 것입니다.

for i in `cat /app/scripts/symantec_scripts/list`
do ssh root@$i "uname -n
cat $(find / -maxdepth 2 -name Symantec)/virusdefs/definfo.dat
echo Location is $(find / -maxdepth 2 -name Symantec)/virusdefs/definfo.dat
echo ....................................................................."
done | tee /tmp/symantec_info.`date +"%m%d%y"`

기본적으로 $(command)명령은 셸에서와 같이 실행되고 출력으로 대체되므로 $(find / -maxdepth 2 -name Symantec)검색으로 시작하여 /2개의 디렉터리만 깊이 이동하여 Symantec이라는 이름을 찾아 출력합니다. 이 출력은 전체 $(command) 문 대신 사용됩니다.

귀하의 경우 전체 명령문은 $(find...)다음과 같은 결과를 출력해야 합니다 /app/Symantec./opt/Symantec

if이렇게 하면 긴 설명을 피하고 다른 곳에 있는 경우 시만텍을 찾을 수 있다는 추가 이점이 있습니다 .

유일한 단점은 어떤 이유로든 바로 루트 디렉터리와 그 위 디렉터리에 Symantec이라는 디렉터리가 여러 개 있는 경우입니다 /. 이로 인해 문제가 발생할 수 있습니다.

관련 정보