SSH awkリモート値を取得する方法

SSH awkリモート値を取得する方法

このスクリプトを使用しています

[test@sys-master ~]$ parallel -k -j 100 sshpass -p test1213'!' ssh -oStrictHostKeyChecking=no -oCheckHostIP=no -q [email protected].{}  "cat /proc/loadavg | awk -F \" \"  '{ print   a,\$1,b }' a="'"$(hostname)"'" b=\$(nproc)" ::: {41..46}.{1..100}

ローカル値を返すのはなぜですか?リモート(ノード)値が必要です

 sys-master 9.87 24
    sys-master 9.99 24
    sys-master 11.85 24
    sys-master 11.67 24
    sys-master 10.75 24
    sys-master 8.00 24
    sys-master 10.27 24
    sys-master 11.94 24
    sys-master 10.28 24
    sys-master 10.94 24
    sys-master 12.02 24
    sys-master 9.55 24
    sys-master 11.43 2

ベストアンサー1

これは引用符によるものです。

GNU Parallelはシェルの一部ではないため、シェルで解釈するには各入力を引用符で囲む必要があります。シェル(入力の解釈)でGNU Parallelを呼び出し、GNU Parallelがシェル(入力の解釈)を開始するため、使用しない限り2回引用する必要があります。これは、-qコンテンツ全体が必要な場合にのみ使用できます。ライン。参照されます(つまり、結合されたコマンドはありません)。

ご存知のように、非常に迅速に混乱する可能性があります。 :)

したがって、一般的なアドバイスは、bash関数を定義して呼び出すことです。

myloadavg() {
  sshpass -p test1213'!' ssh -oStrictHostKeyChecking=no -oCheckHostIP=no -q [email protected].$1  "cat /proc/loadavg | awk -F \" \"  '{ print   a,\$1,b }' a="'"\$(hostname)"'" b=\$(nproc)"
}
export -f myloadavg
parallel myloadavg ::: {41..46}.{1..100}

おすすめ記事