echo o diretório com as informações

2

O seguinte script está funcionando, eu gostaria de mais uma informação para o resultado. Além do serviço rtvscand status, eu também quero adicionar onde o arquivo reside. Gostar: o arquivo do symantec reside no diretório / app ou o arquivo do symantec reside no / 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"'
    
por tester787 09.10.2015 / 19:32

2 respostas

3

POR FAVOR, VEJA A MINHA OUTRA RESPOSTA (MELHOR) ABAIXO

Adicione uma variável loc à declaração if.

# 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"'

EDIT Alterou loc="string" para loc='string' e removeu aspas duplas em torno do echo para imprimir o local.

    
por 09.10.2015 / 19:56
0

OK, desde que, por algum motivo, usar uma variável para armazenar o local não está funcionando, acho que um método melhor geral seria usar find para localizar onde a Symantec existe e, em seguida, você pode cat no problema e ecoar todo o caminho.

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"'

Basicamente, $(command) executará o comando como se estivesse no shell e o substituirá pela saída, assim $(find / -maxdepth 2 -name Symantec) será visualizado, começando em / e entrando somente em 2 diretórios em profundidade, para qualquer coisa chamada Symantec e gera a saída. Esta saída é simplesmente usada no lugar de toda a instrução $ (comando).

A declaração $(find...) inteira no seu caso deve produzir algo como /app/Symantec ou /opt/Symantec

Isso também tem o benefício adicional de evitar uma longa declaração if e localizar a Symantec se ela estiver em outro lugar.

A única desvantagem é se, por algum motivo, você tiver mais de um diretório chamado Symantec no diretório raiz imediato e em qualquer diretório no nível acima de / . Isso causará problemas.

    
por 13.10.2015 / 21:54

Tags