【问题标题】:AS400 Nagios Plugin java.lang.NumberFormatException: For input string: "01 % S"AS400 Nagios 插件 java.lang.NumberFormatException:对于输入字符串:“01 % S”
【发布时间】:2015-12-16 13:10:13
【问题描述】:

我正在使用 AS400 Nagios 插件来管理 AS400 服务器。对于一台服务器,我得到以下返回(异常):

java.lang.NumberFormatException: For input string: "01      % S"

全额回报:

Exception in thread "main" java.lang.NumberFormatException: For input string: "01      % S"
        at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
        at java.lang.Integer.parseInt(Integer.java:492)
        at java.lang.Integer.<init>(Integer.java:677)
        at check_as400.parseWrkSysSts(check_as400.java:1048)
        at check_as400.parse(check_as400.java:626)
        at check_as400.main(check_as400.java:470)

命令:

./check_as400 -H xxx.xxx.xxx.xxx -v JOBS -w 21000 -c 23000

我已经在 Nagios 交流论坛中找到了类似的问题和解决方案,但没有访问权限或了解有关 AS400 的信息,我不知道该怎么做:

https://exchange.nagios.org/directory/Plugins/Hardware/Server-Hardware/IBM/Check_as400/details(见业主回复)。

知道如何解决这个问题吗?

提前谢谢你

编辑:使用 -d 选项的附加输出

Establishing connection to server...done.
Logging in...
  waiting for screen...
    waiting for token IBM CORP...
    token received.
  sending login information for QPGMR...
  waiting for login to process...
    waiting for token ===>...
      responding to allocated to another job message...
    token received.
Login completed.
Sending command (0)...
    waiting for token ===>...
    token received.
Command sent.
Parsing results...
Exception in thread "main" java.lang.NumberFormatException: For input st                                                                                                                                                                     ring: "01      % S"
        at java.lang.NumberFormatException.forInputString(NumberFormatEx                                                                                                                                                                     ception.java:65)
        at java.lang.Integer.parseInt(Integer.java:492)
        at java.lang.Integer.<init>(Integer.java:677)
        at check_as400.parseWrkSysSts(check_as400.java:1048)
        at check_as400.parse(check_as400.java:626)
        at check_as400.main(check_as400.java:470)

【问题讨论】:

  • 你能把你的命令编辑成 ./check_as400 -d -H xxx.xxx.xxx.xxx -v JOBS -w 21000 -c 23000 (注意 -d,这会输出到底发生了什么您的连接)
  • 你可以使用大写的 D 吗?这将提供完整的输出,包括 check_as400 执行的屏幕抓取。可能也值得管道输出: ./check_as400 -H xxx.xxx.xxx.xxx -D -v JOBS -w 21000 -c 23000 > as400.log
  • 并且显然掩盖了日志中的任何个人内容:)
  • 我通过“D”选项发现了错误 - 脚本 greps 屏幕输出并对其进行解析,并尝试使用 grep 为一定数量的“:”-signs 查找值(请参阅 findToken功能)。问题是旧版本有附加的“:”所以结果是另一个位置,然后是预期的位置。客户尝试更新系统 (
  • 你可以修改它正在计数的“:”的数量,在文件 check_as400.java 的第 811 行你会看到“start=findToken(buffer,":",11)+1 ;" - 将 11 更改为您需要的值并重新编译 java 代码(我认为使用 javac)它会正确 grep。

标签: java exception ibm-midrange nagios network-monitoring


【解决方案1】:

感谢@WillRyan:问题是导致异常的服务器具有旧版本的 AS400 (

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-05
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    • 2017-09-18
    相关资源
    最近更新 更多