マシンのリストに SSH 接続して、すべてのシステム情報 (モデル、ハードウェア アドレスなど) を取得しています。
返された情報はきちんと整理されていて、awk を使用して必要な情報を簡単に取得できます。ただし、機能しないのは、特定の行を選択する FNR です。
entry=$(tssh -n 10 $host 'smbios-sys-info')
echo "$entry" | awk 'FNR == 2 {print $3 $4}'
FNR を削除すると、awk '{print $3 $4}' だけでも問題なく動作しますが、必要な 1 行ではなく、すべての行のフィールド 3 と 4 が得られます。
シェルのスクリプトの外でこれを行うと、これは機能します:
smbios-sys-info | awk 'FNR == 2 {print $3 $4}'
「$entry」はsmbios-sys-infoの形式を保持しますが、echo「$entry」(引用符で囲まれた変数)の使用に関して、特定の行を選択するawkの機能に何らかの影響を与える潜在的な影響があると思います。
参考までに、コマンド smbios-sys-info の出力は次のとおりです。
[root@host ~]# smbios-sys-info
Libsmbios version: 2.2.26
Product Name: OptiPlex 760
Vendor: Dell Inc.
BIOS Version: A02
System ID: 123456
Service Tag: ABCDEFG
Express Service Code: 11111111111
Asset Tag: N/A
Property Ownership Tag: N/A
EDIT 別の方法として、おそらく ssh コマンドで awk を使用して、すべてのフィールドではなく 1 つのフィールドを取得できることを認識しています。しかし、システム情報で複数のことを行う必要があるため、それは私の状況には適していません。そのため、すべてを一度に取得してローカルで作業する方が簡単です.