コマンドを実行し、コマンド出力を変数に保存します

user3331975

このスクリプトは、hosts.txtからシステムIPを読み取り、システムにログインし、OSタイプを確認し、一連のコマンドを実行して、出力を出力します。

ssh部分は正常に機能しますが、「ls」の出力を表示した後、エラー(そのようなファイルまたはディレクトリはありません)が表示されます。

コマンド/opt/hyperic/agent-current/bin/hq-agent.shがリモートホストで実行されていないようです。目的は、コマンド 'cd / opt; lsを実行し、host.txtに記載されている各リモートシステムでコマンド出力をSTATUSにキャプチャすることです。

リモートシステムでコマンドを手動で実行すると、以下の出力が返されます。ここで何が間違っている可能性があるかについての助けはありますか?

  ~]# /opt/hyperic/agent-current/bin/hq-agent.sh status | awk 'NR==1{print $3 $4}'

が走っています

スクリプトは以下のとおりです

#!/bin/bash
 while read host; do
 if ssh -o StrictHostKeyChecking=no -n root@$host '[ "$(awk "/CentOS/{print}" /etc/*release)" ] '
   then
    echo "(centos)"
    ssh -o StrictHostKeyChecking=no -n root@$host 'cd /opt;ls'
    STATUS=`/opt/hyperic/agent-current/bin/hq-agent.sh status | awk 'NR==1{print $3 $4}'`
   if [ "$STATUS" == "isrunning" ]
   then
      echo "$HOST == PASS"
   else
      echo "$HOST == FAIL"
  fi
  else
    echo "(generic)"
  fi
  done < hosts.txt

スクリプトの出力-

 [email protected]'s password:
   firstboot
  puppet
  ./hq-enhanced.sh: line 14: /opt/hyperic/agent-current/bin/hq-agent.sh: No such file or   directory
  == FAIL
ジェフウィリアムズ

ああ...何が起こっているのかわかります:

質問の鍵は次のとおりです。

ssh -o StrictHostKeyChecking=no -n root@$host 'cd /opt;ls'
STATUS=`/opt/hyperic/agent-current/bin/hq-agent.sh status | awk 'NR==1{print $3 $4}'`

sshコマンドはすぐに実行され、スクリプトに制御を戻します。この時点で、ssh経由でログインしなくなり、STATUSで始まる行は、スクリプトの実行元で実行されます。

sshコマンドの出力をキャプチャするには、次のようなものが必要です。

STATUS=`ssh root@foobar -c 'cd /foo/bar && /opt/hyperic/agent-current/bin/hq-agent.sh ...'`

HTH

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

バッチ-コマンド出力を変数に保存します(複数行)

分類Dev

BATCH —コマンド出力を変数に保存します

分類Dev

ftpコマンドの出力を変数に保存します

分類Dev

コマンドの出力を変数に保存します

分類Dev

fdiskbashコマンドを複数行変数に出力します

分類Dev

出力を変数に保存し、コマンドで変数を使用します

分類Dev

コマンドを変数に保存し、bash-xなしで実行する前に翻訳されたコマンドを出力する方法

分類Dev

Awkはコマンド出力を変数に挿入します

分類Dev

awkコマンドの結果を変数に出力します

分類Dev

コマンドの出力を変数に設定します

分類Dev

変数内でコマンドを実行します

分類Dev

MySQLのPython変数はコマンドを実行します

分類Dev

コマンド出力を変数に保存し、標準出力に出力しない

分類Dev

AzureCLIコマンドの出力を変数として保存する

分類Dev

コマンドを変数に保存しますか?

分類Dev

コマンド文字列をbash変数に保存します

分類Dev

コマンド「adbdevices」の結果を変数に保存します

分類Dev

非コマンドワードを含むコマンドの出力に等しい変数を設定します

分類Dev

Jupyterは出力を出力せずにBashコマンドを実行します

分類Dev

さまざまなファイルに対してコマンドを実行し、出力結果を保存する

分類Dev

Bazel:出力なしでコマンドを実行します

分類Dev

外部コマンドからの出力を出力し、perlの変数に保存します

分類Dev

変数に応じてsedコマンドを実行します

分類Dev

変数に格納しながらコマンド出力を出力します

分類Dev

アドホックコマンドからコマンドラインにAnsible変数を出力します

分類Dev

環境変数と関数をbashの実行可能コマンドとして出力します

分類Dev

コマンドの特定の出力に対してコマンドを実行します

分類Dev

環境を変更するコマンドの出力を変数に保存します

分類Dev

変数置換を使用して、別のコマンドの出力を実行します

Related 関連記事

  1. 1

    バッチ-コマンド出力を変数に保存します(複数行)

  2. 2

    BATCH —コマンド出力を変数に保存します

  3. 3

    ftpコマンドの出力を変数に保存します

  4. 4

    コマンドの出力を変数に保存します

  5. 5

    fdiskbashコマンドを複数行変数に出力します

  6. 6

    出力を変数に保存し、コマンドで変数を使用します

  7. 7

    コマンドを変数に保存し、bash-xなしで実行する前に翻訳されたコマンドを出力する方法

  8. 8

    Awkはコマンド出力を変数に挿入します

  9. 9

    awkコマンドの結果を変数に出力します

  10. 10

    コマンドの出力を変数に設定します

  11. 11

    変数内でコマンドを実行します

  12. 12

    MySQLのPython変数はコマンドを実行します

  13. 13

    コマンド出力を変数に保存し、標準出力に出力しない

  14. 14

    AzureCLIコマンドの出力を変数として保存する

  15. 15

    コマンドを変数に保存しますか?

  16. 16

    コマンド文字列をbash変数に保存します

  17. 17

    コマンド「adbdevices」の結果を変数に保存します

  18. 18

    非コマンドワードを含むコマンドの出力に等しい変数を設定します

  19. 19

    Jupyterは出力を出力せずにBashコマンドを実行します

  20. 20

    さまざまなファイルに対してコマンドを実行し、出力結果を保存する

  21. 21

    Bazel:出力なしでコマンドを実行します

  22. 22

    外部コマンドからの出力を出力し、perlの変数に保存します

  23. 23

    変数に応じてsedコマンドを実行します

  24. 24

    変数に格納しながらコマンド出力を出力します

  25. 25

    アドホックコマンドからコマンドラインにAnsible変数を出力します

  26. 26

    環境変数と関数をbashの実行可能コマンドとして出力します

  27. 27

    コマンドの特定の出力に対してコマンドを実行します

  28. 28

    環境を変更するコマンドの出力を変数に保存します

  29. 29

    変数置換を使用して、別のコマンドの出力を実行します

ホットタグ

アーカイブ