Плагин AS400 Nagios java.lang.NumberFormatException: для входной строки: 01 % S

Я использую подключаемый модуль 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 Exchange, но без доступа или знаний об AS400 я понятия не имею, что делать:

https://exchange.nagios.org/directory/Plugins/Hardware/Server-Hardware/IBM/Check_as400/details (см. ответ владельца).

Любая идея, как решить эту проблему?

заранее спасибо

EDIT: Дополнительный вывод с параметром -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)

person Atreides78    schedule 16.12.2015    source источник
comment
Можете ли вы изменить свою команду на ./check_as400 -d -H xxx.xxx.xxx.xxx -v JOBS -w 21000 -c 23000 (обратите внимание на -d, это выводит именно то, что происходит в вашем соединении)   -  person Will Ryan    schedule 18.12.2015
comment
Можете ли вы использовать заглавную букву D? Это даст полный вывод, включая снимки экрана, выполненные check_as400. Вероятно, стоит передать и вывод: ./check_as400 -H xxx.xxx.xxx.xxx -D -v JOBS -w 21000 -c 23000 › as400.log   -  person Will Ryan    schedule 12.01.2016
comment
и явно скрывать что-то личное в логе :)   -  person Will Ryan    schedule 12.01.2016
comment
Я обнаружил ошибку с помощью D-опции - скрипт выполняет поиск вывода на экран, анализирует его и пытается найти значение с помощью grep для определенного количества :-знаков (см. функцию findToken). Проблема в том, что в более старой версии есть дополнения: поэтому в результате получается другая позиция, чем ожидаемая. Клиент пытается обновить систему (‹ V6R1).   -  person Atreides78    schedule 13.01.2016
comment
Вы можете изменить количество : которое он считает, в строке 811 файла check_as400.java вы увидите start=findToken(buffer,:,11)+1; - Измените 11 на требуемое значение и перекомпилируйте код Java (я думаю, используя javac), и он будет правильно работать.   -  person Will Ryan    schedule 13.01.2016
comment
Благодаря @WillRyan:   -  person Atreides78    schedule 14.01.2016


Ответы (1)


Благодаря @WillRyan: проблема в том, что сервер, который вызывает исключения, имел более старую версию AS400 (‹ V6R1). Поэтому знаки ":", которые ищет нужную информацию, не совпадали корректно.

person Atreides78    schedule 14.01.2016