Bash - Показать диалоговое окно информации во время работы - PullRequest
0 голосов
/ 28 января 2019

Я пишу сценарий в bash впервые.Я создам меню с диалогом и добавлю некоторые функции.Мне нравится показывать --infobox во время выполнения операции, чтобы пользователь видел, что что-то происходит.

Цель состоит в том, чтобы во время выполнения сценария появилось диалоговое окно типа

dialog --infobox "Please wait" 10 30

пинг.Если проверка завершена, откроется диалоговое окно --msgbox.

test_rtt() {
ipSlave=$(awk '{ if($1~/'$SETSLAVE'/) print $2 }' $VARPATH/$VARCONFIGFILE)
    pingSlave=$(fping -c1 -t300 $ipSlave 2>/dev/null 1>/dev/null)
    if ! [ "$?" = 0 ]
    then
        result="Loopbox (Slave) not found on $ipSlave"
        dialog \
            --backtitle "$VARBACKTITLE" \
            --title "$1" \
            --no-collapse \
            --msgbox "$result" $VARMENUHEIGHT $VARMENUWIDTH
    fi
    nrtest=$(awk '{ if($1~/'$SETNRTEST'/) print $2 }' $VARPATH/$VARCONFIGFILE)
    intervl=$(awk '{ if($1~/'$SETINTERVL'/) print $2 }' $VARPATH/$VARCONFIGFILE)
    result=$(ping -c $nrtest -i $intervl -U 192.168.74.93 | tail -1) #(HERE I WANT THE INFOBOX)
    dialog \
        --backtitle "$VARBACKTITLE" \
        --title "$1" \
        --no-collapse \
        --msgbox "$result" $VARMENUHEIGHT $VARMENUWIDTH
    }

1 Ответ

0 голосов
/ 28 января 2019

Если я вас правильно понял, вы хотите дать пользователю сигнал, что «что-то происходит».Я сделал два решения.Вы можете играть с ними.

  1. Первый выводит информацию перед выполнением $(fping..
  2. Второй использует dialog --progressbox для создания окна прогресса, видимого для пользователя.

Я изменил ваш код, чтобы он пинговал 8.8.8.8 и проверял, доступен ли он.

#!/bin/bash
test_rtt() {
  dialog --infobox "Please wait" 10 30
  pingSlave=$(fping -c5 -t300 8.8.8.8 2>/dev/null 1>/dev/null)
  # What is reason for introducing pingSlave var :)?
  if [ "$?" = 0 ]
  then
    result="Ping succeed for 8.8.8.8"
    dialog \
      --backtitle "test1" \
      --title "test2" \
      --no-collapse \
      --msgbox "$result" 50 50 
  fi
}
test_rtt_2() {
  fping -c5 -t300 8.8.8.8  | dialog --progressbox 50 50
  if [ "$?" = 0 ]
  then
    result="Ping succeed for  8.8.8.8"
    dialog \
      --backtitle "test1" \
      --title "test2" \
      --no-collapse \
      --msgbox "$result" 50 50 
  fi
}
test_rtt
dialog --clear
test_rtt_2
dialog --clear

Я надеюсь, что это то, что вы ожидали:).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...