zoukankan      html  css  js  c++  java
  • 使用whiptail开发linux环境交互式对话框

    #!/bin/bash
    
    oem=$(/bin/cat /opt/jdwa/etc/oem)
    systype=$(/bin/cat /opt/jdwa/etc/systype)
    export select_ethname
    echo "oem:"$oem
    echo "systype:"$systype
    CheckIPAddress()
    {
        echo $1 |grep "^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$" > /dev/null
        if [ $? = 1 ];  then
            return 1
        else
            a=`echo $1 | awk -F. '{print $1}'`
            b=`echo $1 | awk -F. '{print $2}'`
            c=`echo $1 | awk -F. '{print $3}'`
            d=`echo $1 | awk -F. '{print $4}'`
            for loop in $a $b $c $d
            do
                if [ $loop -gt 255 ] || [ $loop -lt 0 ]; then
                    return 2
                fi
            done
        fi  
    }
    
    while((1)) 
    do
      if [ "$oem"x = "QIANZHI"x ]; then
        if [ "$systype"x = "int"x ]; then
            whiptail --title "Config network" --cancel-button "Quit" --menu "Select Config Network Device " 0 0 2 "man" "" "tun" "" "peer_tun" "" 2> data
        exitstatus=$?
            if [ $exitstatus != 0 ]; then
                break
            fi
            select_ethname=$(/bin/cat data)
            echo "Select Config Network Device:"$select_ethname
        fi
        if [ "$systype"x = "ext"x ]; then
            whiptail --title "Config network" --cancel-button "Quit" --menu "Select Config Network Device " 0 0 2 "tun" "" "peer_tun" "" 2>data
            exitstatus=$?
            if [ $exitstatus != 0 ]; then
                break
            fi
            select_ethname=$(/bin/cat data)
            echo "Select Config Network Device:"$select_ethname
        fi
      fi
      if [ "$oem"x = "COMPONENT"x ]; then
        if [ "$systype"x = "int"x ]; then
            whiptail --title "Config network" --cancel-button "Quit" --menu "Select Config Network Device " 0 0 2 "man" "" 2> data
            exitstatus=$?
            if [ $exitstatus != 0 ]; then
                break
            fi
            select_ethname=$(/bin/cat data)
            echo "Select Config Network Device:"$select_ethname
        fi
        if [ "$systype"x = "ext"x ]; then
            break
        fi
      fi
    
      if [ "$select_ethname"x = "man"x ] || [ "$select_ethname"x = "tun"x ]; then
          if [ "$select_ethname"x = "man"x ]; then    
              netinfo=$(/bin/cat /opt/jdwa/etc/man)
          else
              netinfo=$(/bin/cat /opt/jdwa/etc/tun0)
          fi
          IFS='/' arr=($netinfo)
          IPaddr=$(whiptail --inputbox "Please input interface "$select_ethname" IpAddr :" 10 60 ${arr[0]}  --title "Config NetWork" 3>&1 1>&2 2>&3)
          exitstatus=$?
          if [ $exitstatus != 0 ]; then
              continue
          fi
          Maskaddr=$(whiptail --inputbox "Please input interface "$select_ethname" MaskAddr :" 10 60 ${arr[1]}  --title "Config NetWork" 3>&1 1>&2 2>&3)
          exitstatus=$?
          if [ $exitstatus != 0 ]; then
              continue
          fi
          GateWay=$(whiptail --inputbox "Please input interface "$select_ethname" GateWay" 10 60 ${arr[2]}  --title "Config NetWork" 3>&1 1>&2 2>&3)
          exitstatus=$?
          if [ $exitstatus != 0 ]; then
              continue
          fi
          if [ "$IPaddr"x = ""x ] || [ "$Maskaddr"x = ""x ]; then
              whiptail  --title "Message Box" --msgbox "Incomplete input information, configuration failed!" 0 0
              continue
          fi
          CheckIPAddress $IPaddr
          if [ $? != 0 ]; then
              whiptail  --title "Message Box" --msgbox "IPaddr Error, configuration failed!" 0 0
              continue
          fi
          CheckIPAddress $Maskaddr
          if [ $? != 0 ]; then
              whiptail  --title "Message Box" --msgbox "Maskaddr Error, configuration failed!" 0 0
              continue
          fi
          if [ "$GateWay"x != ""x ]; then
              CheckIPAddress $GateWay
              if [ $? !=  ]; then
                  whiptail  --title "Message Box" --msgbox "GateWay Error, configuration failed!" 0 0
                  continue
              fi
          fi 
          if (whiptail --title "Config NetWork" --yesno "Please make sure to save the configuration.
              Devname : "$select_ethname"
              IpAddr  : "$IPaddr"
              MaskAddr: "$Maskaddr"
              GateWay : "$GateWay 0 0) then
              if [ "$select_ethname"x = "man"x ]; then
                  echo $IPaddr"/"$Maskaddr"/"$GateWay> /opt/jdwa/etc/man
              else
                  echo $IPaddr"/"$Maskaddr"/"$GateWay> /opt/jdwa/etc/tun0
              fi     
          else
              exitstatus=$?
              if [ $exitstatus != 0 ]; then
                  continue
              fi
          fi
      fi
      if [ "$select_ethname"x = "peer_tun"x ]; then
          compaddr=$(/bin/cat /opt/jdwa/etc/peer_tun0)
          IPaddr=$(whiptail --inputbox "Please input interface "$select_ethname" IpAddr :" 10 60 $compaddr  --title "Config network" 3>&1 1>&2 2>&3)
          exitstatus=$?
          if [ $exitstatus != 0 ]; then
              continue
          fi
          if [ "$compaddr"x != ""x]; then
              CheckIPAddress $compaddr
              if [ $? != 0 ]; then
                  whiptail  --title "Message Box" --msgbox "IPaddr Error, configuration failed!" 0 0
                  continue
              fi
          fi
          if (whiptail --title "Config NetWork" --yesno "Please make sure to save the configuration.
              Devname : "$select_ethname"
              IpAddr  : "$IPaddr 0 0) then
              echo $IPaddr> /opt/jdwa/etc/peer_tun0
          else
              exitstatus=$?
              if [ $exitstatus != 0 ]; then
                  continue
              fi
          fi
    
      fi
    done
  • 相关阅读:
    软件需求分析
    行高line-height 和vertical-align
    python中的集合基础知识
    python中字典常用的函数和用法
    python中字符串常用的函数
    day-75CRM
    day-74CRM
    day73CRM
    day-72Django源码解析
    day-71Django补充
  • 原文地址:https://www.cnblogs.com/dpf-10/p/8716842.html
Copyright © 2011-2022 走看看