![]() |
Поиск по тексту в txt с "если"
Добрый день!
Есть текстовый файл со следующим содержанием, в котором состояние логического диска рейда. Скрытый текст
Код:
CLI Version: 4.1.10.16 RaidAPI Version: 5.0.0.1061 Выделенная строчка "BGA progress: rebuilding is 23% done" появляется только тогда, когда рейд восстанавливается. Помогите пожалуйста составить батник со следующей логикой: 1. Если в тексте есть слово degraded, но нет rebuilding, выводить "0" (во всех вариантах вывод без кавычек) 2. Если есть rebuilding, выводить цифры без % из этой строки, в данном тексте вывод должен быть "23" 3. Если нет ни degraded, ни rebuilding, выводить "1" |
Цитата:
|
Чёрт, а ведь вы правы.
Тогда лучше сделать возврат "2" во втором пункте, независимо от числа в строке. Т.е. если rebuilding есть - 2. |
Цитата:
|
zegordo, а что Вам та же wmic.exe/WMI CIM Studio говорит в этот момент насчёт состояния массива (подходящие классы Вам самому поискать придётся)?
Цитата:
|
Цитата:
Цитата:
Скрытый текст
![]() Текст в первом посте выдаётся командой "info -o -vd" Ну а т.к. это cli, простой батник требует файла команд, результат которых и скидывает в .txt рядом т.е. примерно так Код:
c:\mvsetup.exe < c:\failcomand.txt > c:\resultat.txt Цитата:
|
так хватит?
Код:
@echo off |
Цитата:
Код:
echo info -0 -vd | c:\mvsetup.exe | find.exe /i /v "" Общий вид предполагаю примерно таким: Код:
@echo off |
Цитата:
Код:
@echo off |
Цитата:
Цитата:
важно отметить, это hyper-v server 2016, возможно не хватает каких-то компонентов. Соответственно ваш код даёт следующий результат: Код:
CLI Version: 4.1.10.16 RaidAPI Version: 5.0.0.1061 Казбек, ваш вариант рабочий, только если есть и degraded и rebuilding выводит 2, потом 0 за одно исполнение |
|
Цитата:
теперь говорит Код:
CLI Version: 4.1.10.16 RaidAPI Version: 5.0.0.1061 |
zegordo, а если так, напрямую:
Код:
@echo off Цитата:
Цитата:
|
то выглядит так
Скрытый текст
![]() и в конце ещё status: successful если не зажимать мышкой |
Цитата:
Код:
@echo off |
Цитата:
2. А какой на самом деле сейчас статус? |
Цитата:
Цитата:
Цитата:
Вообще CLI этот схож с телнетом, если запускать его из командной строки - т.е. после команды telnet в батнике, команды что были после не сработают. Но думаю, вы это и так поняли уже |
Цитата:
Цитата:
Цитата:
Тогда пробуем вернуться именно к варианту с echo, только добавив в него ещё и exit, наподобие: Код:
@echo off |
Iska, выглядит так, что ничего не изменилось
https://drive.google.com/open?id=1HF...Jevi7OcUWQWY-d - инсталлятор, при установке надо галкой отметить CLI чтобы поставил, https://support.hpe.com/hpsc/doc/pub...a00022850en_us - гайдик не знаю, поставится ли если контроллера нет. апдейт https://drive.google.com/open?id=1ZS...Brf4E_EZne0A1L вот сама утилита с библиотеками на другом компе выдаёт по команде info -o -vd "Unable to get info of vd (error 13: Invalid adapter id)" что, в принципе, тот же текст. |
Цитата:
1. Если нет ни rebuilding ни degraded, выводить 0 (это нормальное рабочее состояние системы, не нуль = уровень ошибки) 2. Если в тексте есть слово degraded и нет rebuilding, выводить "-1" (именно с минусом) 3. Если есть rebuilding и нет degraded выводить "-10" 4. Если есть rebuilding и degraded выводить "-11" 5. Если есть degraded с процентами, выводить проценты (в данном тексте 23 - тут бы я, вообще-то выводил бы 123, так как есть вероятность индикации 0% -легко подкорректировать) Наверное, пункт 4 не реализуется никогда, так как его "перебьет" пункт 5. Вот решение для текстового файла - проверял на Ваших текстах
Код:
@Echo Off Вот попытка решения без текстового файла. Проверялось частично: c:\mvsetup.exe моделировал More.com c файлом, так как иначе протестировать не на чем
Код:
@Echo Off |
Цитата:
Цитата:
Цитата:
Я попробовал и вариант с echo и с командной строкой, и тот, и тот, как и ожидалось, работают. При использовании echo потребно использование exit для выхода из утилиты, при использовании командной строки, понятное дело, сие не требуется. Вариант с echo
Код:
@echo off Вариант с командной строкой
Код:
@echo off P.S. И всё же утилита не совсем CLI, поскольку ошибки пишет не как положено — в stderr, а, похоже, напрямую в консоль :). |
megaloman, я добавил в посте над вами утилиту, можно на ней и потестировать. Минусы же совсем не годятся, т.к. забирать вывод будет zabbix, на минусовом будут проблемы.
Но спасибо за потраченное время. Iska, выводит не только описанный вами статус, но и дважды само слово, т.е. вывод выглядит так: status: degraded status: degraded (и после небольшой паузы уже ваш текст) Status: Degraded p.s. вариант с echo тот что нужен, т.к. запускаться будет именно сам батник. p.p.s. статус выше выдаёт для массива когда там только состояние degraded, если в тексте есть и degraded и rebuilding будет вывод выглядеть так: status: degraded BGA progress: rebuilding is 0% done Status: Degraded and rebuilding |
Цитата:
Попробуйте так: Вариант с echo
Код:
@echo off Вариант с командной строкой
Код:
@echo off Цитата:
|
zegordo,
Если Минусы же совсем не годятся, то вот по Вашей постановке (еще проще)
Вариант с текстовым файлом
Код:
@Echo Off Set PRG="c:\mvsetup.exe" тра ля ля ) Код:
@Echo Off |
Извиняюсь за поздний ответ, на выходных не было возможности проверить.
Большое спасибо всем кто откликнулся и, особенно Iska: ваш вариант пойдёт в бой |
Время: 06:32. |
Время: 06:32.
© OSzone.net 2001-