ローカル/リモートls

ローカル/リモートls

リアルタイムでSNMPロガーから関連ラインを取得し、チェックのために私のアプリケーションサーバーに移動したいと思います。後半は大丈夫でscp効果がありました。前半戦はちょっと残念でした。

私がやりたいことは、3つの最新のログファイルで関連メッセージを確認することです。だから私はそうします: [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

次の計画は次のとおりです。

[user@SNMPServer]$ grep $ipAddress $files

SNMPサーバーで実行すると、再び正常に動作します。

仮想マシンでこれを行うと
admin@alarmux:~$sudo ssh [email protected] "cd /var/opt/OV/log/nnm/; files=`ls -t | grep -m 3 trap.csv`; echo $files"

私は次のような結果を得ます。
assets bash: testerlog: command not found bash: count.txt: command not found

これはls -tリモートではなく、私の仮想マシンのホームディレクトリの結果です。どこかにエスケープ文字がありませんか?

ベストアンサー1

バックティックを使用して$( … )二重引用符内に挿入します。一重引用符のみを使用してください。

sudo ssh [email protected] 'cd /var/opt/OV/log/nnm/; files=`ls -t | grep -m 3 trap.csv`; echo $files'

または、サブシェルを完全に使用したくない場合は、xargs を使用します。

sudo ssh [email protected] 'ls -td /var/opt/OV/log/nnm/* | grep -m 3 trap.csv | xargs grep '$ipAddress

おすすめ記事