plantegg 发表于 2018-8-27 08:45:22

初见shell,设置网卡参数

  初见shell,写一个设置网卡参数的脚本试一下。效率很低,但是凑合用了。
  ===================
  #!/bin/bash
  LANG=zh_CN.UTF-8
  clear #Select the network card
  echo "`date`"
  echo -e "\033[34m Select Network card(Enter to continue)\033[0m"
  ceshi=$(find /etc/sysconfig/network-scripts/ -name '*ifcfg*')
  #Segmentation variables data
  OLD_IFS="$IFS"
  IFS=" "
  arr=($ceshi)
  IFS="$OLD_IFS"
  i=0#Definitions and variables
  for s in ${arr[@]}   #for
  do
  #    echo "$s"
  #    echo "--"
  conid=$s
  echo "No." $i "Network card:" $s
  ((i++))
  done
  # echo ${conid}
  # echo ${conid}
  #echo ${#conid
[*]}#pinrt conid
[*]
  #检测用户选择网卡
  echo -e "\033[34m Select Network card No.: \033[0m"
  read conidNum   #user in
  #echo $conidNum
  clear #onboot
  echo -e "\033} \033[0m"
  echo "You want to boot with this card(ONBOOT):"
  echo -e "1.ONBOOT=\033[33m YES \033[0m"
  echo -e "2.ONBOOT=\033[33m NO \033[0m"
  echo "Enter 1 or 2 :"
  read onboot
  case $onboot in
  1)
  onboottxt="YES"
  ;;
  2)
  onboottxt="NO"
  ;;
  esac
  clear #Bootproto
  echo -e "\033} \033[0m"
  echo -e "\033[34m Boot with this card $onboottxt 。(ONBOOT=${onboottxt}) \033[0m"
  echo "Select network mode (BOOTPROTO):"
  echo -e "1.BOOTPROTO=\033[33m STATIC \033[0m"
  echo -e "2.BOOTPROTO=\033[33m DHCP \033[0m"
  echo "Enter 1 or 2 :"
  read bproto
  case $bproto in
  1)
  bprototxt="STATIC"
  ;;
  2)
  bprototxt="DHCP"
  echo "Any key to Finish,Ctrl+c to Exit 。"
  read -n 1
  sed -i '/ONBOOT/d' ${conid[$conidNum]}
  sed -i '/BOOTPROTO/d' ${conid[$conidNum]}
  echo "ONBOOT="$onboottxt >>${conid[$conidNum]}
  echo "BOOTPROTO="$bprototxt >>${conid[$conidNum]}
  #del old config
  sed -i '/IPADDR/d' ${conid[$conidNum]}
  sed -i '/NETMASK/d' ${conid[$conidNum]}
  sed -i '/GATEWAY/d' ${conid[$conidNum]}
  sed -i '/DNS1/d' ${conid[$conidNum]}
  sed -i '/DNS2/d' ${conid[$conidNum]}
  echo "Modifications are complete!!!service reatst。。"
  service network restart
  #service network restart
  echo "-------Print ifconfig-------"
  ifconfig
  echo "-------Print ifconfig-------"
  #echo ${conid[$conidNum]}
  echo "Any key to Exit。"
  read -n 1
  exit
  ;;
  esac
  clear #IPADDR
  echo -e "\033} \033[0m"
  echo -e "\033[34m Boot with this card $onboottxt 。(ONBOOT=${onboottxt}) \033[0m"
  echo -e "\033[34m The network mode$bprototxt。(BOOTPROTO=${bprototxt}) \033[0m"
  echo "Plase enter IP Address:"
  read ipaddr
  echo "Plase enter NetMask:"
  read netmask
  echo "Plase enter GateWay:"
  read gateway
  echo "Plase enter NDS Main:"
  read dns1

  echo "Plase enter NDS>  read dns2
  echo "Plase check the configuration,Enter to Finish or Ctrl+c to Exit。"
  #echo ${conid[$conidNum]}
  #del old config
  sed -i '/ONBOOT/d' ${conid[$conidNum]}
  sed -i '/BOOTPROTO/d' ${conid[$conidNum]}
  sed -i '/IPADDR/d' ${conid[$conidNum]}
  sed -i '/NETMASK/d' ${conid[$conidNum]}
  sed -i '/GATEWAY/d' ${conid[$conidNum]}
  sed -i '/DNS1/d' ${conid[$conidNum]}
  sed -i '/DNS2/d' ${conid[$conidNum]}
  #add new config
  echo "ONBOOT="$onboottxt >>${conid[$conidNum]}
  echo "BOOTPROTO="$bprototxt >>${conid[$conidNum]}
  echo "IPADDR="$ipaddr >>${conid[$conidNum]}
  echo "NETMASK="$netmask >>${conid[$conidNum]}
  echo "GATEWAY="$gateway >>${conid[$conidNum]}
  echo "DNS1="$dns1 >>${conid[$conidNum]}
  if test -z "$dns2"
  then
  $dns2="Null"
  else
  echo "DNS2="$dns2 >>${conid[$conidNum]}
  fi
  #echo "已完成修改!!!正在重启服务。。"
  echo "Modifications are complete!!!service reatst。。"
  #service network restart
  service network restart
  echo "-------Print ifconfig-------"
  ifconfig
  echo "-------Print ifconfig-------"
  #echo "任意键退出。"
  echo "Any key to Exit。"
  read -n 1
  exit
  ===============================================================
  后记:能够3行解决的问题写了好多好多的行。在centos6.5上跑了一下,能够满足需求。第一次写shell脚本,才发现原来英文信息才是“最简单的”。

页: [1]
查看完整版本: 初见shell,设置网卡参数