Quero pegar linhas relevantes de um registrador SNMP em tempo real e movê-las para o meu servidor de aplicativos para verificação. A segunda metade está bem, scp
está fazendo o truque. A primeira metade está me causando alguma dor.
O que eu quero fazer é verificar os três arquivos de log mais recentes para as mensagens relevantes. Então eu faria:
[user@SNMPServer]$ cd /var/opt/OV/log/nnm/; files=`ls -t | grep -m 3 trap.csv`; echo $files
trap.csv trap.csv.2019-05-31_07_00_01 trap.csv.2019-05-31_06_00_01
O que é ótimo, porque eu planejo:
[user@SNMPServer]$ grep $ipAddress $files
O que, novamente, funciona bem quando o executo no servidor SNMP.
Quando eu faço isso da minha VM No entanto,
admin@alarmux:~$sudo ssh [email protected] "cd /var/opt/OV/log/nnm/; files=`ls -t | grep -m 3 trap.csv`; echo $files"
Eu recebo esta saÃda:
assets
bash: testerlog: command not found
bash: count.txt: command not found
Estes são os ls -t
resultados do diretório inicial da minha VM, não do remoto. Estou faltando caracteres de escape em algum lugar?
Backquotes e
$( … )
interpolar dentro de aspas duplas. Use aspas simples e funcionará.Ou evite o subshell completamente com xargs:
Com o
zsh
shell, os três arquivos com o timestamp de modificação mais recente, com nomes de arquivos correspondentes*trap.cvs
no/var/opt/OV/log/nnm
diretório, seriam obtidos com o padrãoonde
(...)
modifica o comportamento do padrão anterior..
seleciona apenas arquivos regulares (não nomes de diretório etc.) eom
ordena diminuindo o carimbo de data/hora de modificação. O[1,3]
retorna apenas as três primeiras correspondências (ou menos, se houver menos correspondências).Portanto, se você tiver o
zsh
shell instalado na máquina remota, poderá fazerIsso seria iniciado
grep
para procurar o endereço IP mantido nos$ipAddress
três arquivos modificados mais recentemente no sistema remoto.Os sinalizadores usados ​​com
grep
faz com que ele use comparações de strings em vez de correspondências de expressões regulares (isto é-F
), e requer que a string correspondente seja uma palavra completa (isto é-w
; então123.123.123.123
não corresponde a23.123.123.1
).