リモートでrpmを照会することはできません。

リモートでrpmを照会することはできません。

--qfフラグを使用してrpmデータベースを照会しています。

rpm -q --qf '<prm><N>%{N}</N></rpm>' --all

これはローカルでうまく機能し、今ssh試してみると

 ssh -l root ${host} rpm -q --qf '<prm><N>%{N}</N></rpm>' --all

わかりました。

bash: -c: line 0: syntax error near unexpected token '<' 
bash: -c: line 0: `rpm -q --qf <prm><N>%{N}</N></rpm> --all'

気づく

  • 2行目にはバックティックとフロントティックがあります。
  • 二重引用符を使用すると、同じエラーが発生します。
  • 実際の使用%{N}、、%{V}...%{INSTALLTIME:date}

私は明らかなものを見逃しています。しかし、何ですか?

答え1

追加の参照レベルを追加する必要があります。

ssh -l root ${host} "rpm -q --qf '<prm><N>%{N}</N></rpm>' --all"

追加の二重引用符がない場合、リモートシェルのコマンドは次のようになります。

rpm -q --qf <prm><N>%{N}</N></rpm> --all

そしてシェルの説明<などがあります。

エラーメッセージのバックティックと一重引用符は、コマンドを引用するために使用される実際の引用符です。これはシェルに与えられたコマンドの一部ではありません。

関連情報