自动检测网络接口卡、网络init.d

自动检测网络接口卡、网络init.d

我已经构建了基于此的 LFS linux,它工作正常并且网络接口卡正在工作。即使它使用dhcpcd服务自动配置IP。

根据该书的第9章,有一个文件名为

/etc/sysconfig/ifconfig.eth0 问题是,如果我正在使用wlan0,我是否需要修改配置文件或将 eth0 重命名为 wlan0 每次更改网络接口卡手动,我希望它会自动检测到

/etc/init.d/network这里初始化由 LFS 书籍生成的网络脚本/etc/sysconfig/ifconfig.*

### BEGIN INIT INFO
# Provides:            $network
# Required-Start:      $local_fs localnet swap
# Should-Start:        $syslog firewalld iptables nftables
# Required-Stop:       $local_fs localnet swap
# Should-Stop:         $syslog firewalld iptables nftables
# Default-Start:       3 4 5
# Default-Stop:        0 1 2 6
# Short-Description:   Starts and configures network interfaces.
# Description:         Starts and configures network interfaces.
# X-LFS-Provided-By:   LFS
### END INIT INFO

case "${1}" in
   start)
      # Start all network interfaces
      for file in /etc/sysconfig/ifconfig.*
      do
         interface=${file##*/ifconfig.}

         # Skip if $file is * (because nothing was found)
         if [ "${interface}" = "*" ]; then continue; fi

         /sbin/ifup ${interface}
      done
      ;;

   stop)
      # Unmount any network mounted file systems
       umount --all --force --types nfs,cifs,nfs4

      # Reverse list
      net_files=""
      for file in  /etc/sysconfig/ifconfig.*
      do
         net_files="${file} ${net_files}"
      done

      # Stop all network interfaces
      for file in ${net_files}
      do
         interface=${file##*/ifconfig.}

         # Skip if $file is * (because nothing was found)
         if [ "${interface}" = "*" ]; then continue; fi

         # See if interface exists
         if [ ! -e /sys/class/net/$interface ]; then continue; fi

         # Is interface UP?
         ip link show $interface 2>/dev/null | grep -q "state UP"
         if [ $? -ne 0 ];  then continue; fi

         /sbin/ifdown ${interface}
      done
      ;;

   restart)
      ${0} stop
      sleep 1
      ${0} start
      ;;

   *)
      echo "Usage: ${0} {start|stop|restart}"
      exit 1
      ;;
esac

exit 0

# End network

答案1

通过阅读脚本,很明显它将处理所有/etc/sysconfig/ifconfig.*文件:

   start)
      # Start all network interfaces
      for file in /etc/sysconfig/ifconfig.*
      do
         interface=${file##*/ifconfig.}

该脚本将从文件名中选择要配置的接口名称,因此您只需将所需的设置eth0分别/etc/sysconfig/ifconfig.eth0写入wlan0/etc/sysconfig/ifconfig.wlan0

另请注意,对于无线网络接口(如wlan0),您很可能还需要安装并配置wpa_supplicant,处理现代形式的无线网络安全。

对于 Linux 系统管理员来说,能够读取其他人编写的 shell 脚本是一项宝贵的技能。有时您可能需要阅读脚本来验证它是否确实按照其声称的方式进行操作;有时您可能需要弄清楚脚本实际上做了什么才能解决某些问题,或者因为可用的文档不够详细。

相关内容