2016-09-01 7 views
0

私はRubyが新しく、zabbixモニタなどにいくつかのサーバを追加するスクリプトを再構築しようとしています。私が直面している問題は以下の通りです。スクリプト内でローカル変数またはメソッドを定義する

zbx = ZabbixApi.connect(
    :url => 'http://zabbixserver.net/zabbix/api_jsonrpc.php', 
    :user => 'admin', 
    :password => 'admin' 
) 

def createtemplate 
    zbx.templates.create(
    :host => "RealDoc MS Template", 
    :groups => [:groupid => zbx.hostgroups.get_id(:name => "RealDoc")] 
    ) ..../will create Items, graphs etc... 
end 

if templateid.empty? 
    createtemplate 
else 
    puts "Template Exists" 
end 

それは次のエラースローだcreatetemplateメソッドにアクセスしている:それはないとして、

+0

「@ zbx」で試してください –

答えて

3

ウェルzbxが範囲内にないオブジェクト(NameError):未定義のローカル変数またはメソッド `ZBX」主のためにグローバル。あなたはカップルのオプションがあります。

のいずれかの方法

def createtemplate(zbx) 
    zbx.templates.create(
    :host => "RealDoc MS Template", 
    :groups => [:groupid => zbx.hostgroups.get_id(:name => "RealDoc")] 
    ) ..../will create Items, graphs etc... 
end 

if templateid.empty? 
    createtemplate zbx 
else 
    puts "Template Exists" 
en 

またはあなたが$と、それはグローバル作ることができるにそれを渡します。

$zbx = ZabbixApi.connect(
    :url => 'http://zabbixserver.net/zabbix/api_jsonrpc.php', 
    :user => 'admin', 
    :password => 'admin' 
) 

def createtemplate 
    $zbx.templates.create(
    :host => "RealDoc MS Template", 
    :groups => [:groupid => zbx.hostgroups.get_id(:name => "RealDoc")] 
    ) ..../will create Items, graphs etc... 
end 

if templateid.empty? 
    createtemplate 
else 
    puts "Template Exists" 
end 

グローバル変数は慎重に使用する必要がありますように私は、最初のオプションをするだろうが、そのような短いスクリプトでは、それはおそらくそれほど重要ではありません。..

0

それは私たちのに変数を追加して働いていますメソッドdef createtemplate(zbx) と同じことをmethoodを呼び出すときにzbx変数で呼び出すことになります。

関連する問題