如何解决Ruby Net / Telnet使用boolean来切换日志记录
| 我试图设置一个布尔变量来切换Net :: Telnet模块中的日志记录路径,即:telnetdebug = false
telnetlog = false
telnetlogfile = \'/var/log/mcacheMonitor.telnet.log\'
xmr = Net::Telnet.new(\"Host\" => host,\"Timeout\" => 10,\"Prompt\" => /[#]\\z/n,\'Waittime\' => 0,\'Dump_log\' => telnetdebug ? \"mcmsDebug.log\" : nil,\'Output_log\' => telnetlog ? telnetlogfile : nil)
删除此代码会产生以下错误:
C:/Ruby192/lib/ruby/1.9.1/net/telnet.rb:300:in `initialize\': can\'t convert nil into String (TypeError)
from C:/Ruby192/lib/ruby/1.9.1/net/telnet.rb:300:in `open\'
from C:/Ruby192/lib/ruby/1.9.1/net/telnet.rb:300:in `initialize\'
from mcw.rb:26:in `new\'
from mcw.rb:26:in `<main>\'
解决方法
telnet文档正在作弊。它说默认值是nil,但实际上不是。检查参数的哈希是否具有键\'Dump_log \'。如果是这样,则将该值用作文件名。所以这应该工作:
telnet_arguments={\"Host\" => host,\"Timeout\" => 10,\"Prompt\" => /[#]\\z/n,\'Waittime\' => 0}
telnet_arguments[\'Dump_log\'] = \"mcmsDebug.log\" if telnetdebug
telnet_arguments[\'Output_log\'] = telnetlogfile if telnetlog
xmr = Net::Telnet.new( telnet_arguments )
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。