0

多数のサーバー (10 など) でスクリプトを実行してアプリをインストールしています。最後に、secript が単一のファイルで実行するサーバーのリストを取得する必要があります。元:

Server-1
Server-2
Server-3.....Server-10

これを試してみましたが、そのホスト名のみでローカルボックスにagent_name_list.txtを作成しています。

エージェントがスクリプトによって 1 か所にインストールされたサーバーの統合リストを取得するにはどうすればよいですか?

agent_name='hostname'
nslookup $agent_name | grep Name | awk '{print $2}' >  /var/tmp/$agent_name_list.txt 
4

1 に答える 1

0

あなたが達成しようとしている正確な出力は明確ではありませんが、コードを修正する必要があることが 2 つあります。

agent_name=$(hostname)
nslookup $agent_name | grep Name | awk '{print $2}' >  /var/tmp/${agent_name}_list.txt 

これはさらに減らすことができます

agent_name=$(hostname)
nslookup $agent_name | awk '/Name/{print $2}' >  /var/tmp/${agent_name}_list.txt 

awk の多くの機能の 1 つは、パターンを照合し、そのアクションを一致した行だけに制限することです。


コメント

agent_name='hostname'

ここでは、agent_name の値を文字列値 "hostname" に設定しているだけです。上記の方法に注意してください。コマンドの現在の値を取得するために、シェル コマンド置換機能を使用していますhostname

nslookup $agent_name | grep Name | awk '{print $2}' >  /var/tmp/$agent_name_list.txt 

ここでは、変数「wrappers」を使用{}して、シェルが $agent_name_list を変数として評価しないようにする必要があります。agent_name に値を割り当てたので、agent_name_list の値はありません。先行する '$' 文字を想定して、{}ラッパーはシェルに「これは変数名です。値は何ですか?」と伝えます。..

上記の修正された例で問題が完全に解決されない場合は、メッセージを編集して、サンプル入力データ、サンプル データに基づく必要な出力、現在のコード、およびその現在のコードからの出力を含めることを検討してください。

IHTH

于 2012-12-06T23:53:07.663 に答える