configure_ip.sh 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. #!/bin/bash
  2. # 设置静态IP的函数
  3. set_static_ip() {
  4. # 默认值
  5. default_ip="192.168.1.100"
  6. default_subnet_mask="255.255.255.0"
  7. default_gateway="192.168.1.1"
  8. default_dns="8.8.8.8"
  9. # 提示输入IP地址,默认值为$default_ip
  10. read -p "请输入静态IP地址(默认:$default_ip):" ip_address
  11. ip_address=${ip_address:-$default_ip}
  12. # 提示输入子网掩码,默认值为$default_subnet_mask
  13. read -p "请输入子网掩码(默认:$default_subnet_mask):" subnet_mask
  14. subnet_mask=${subnet_mask:-$default_subnet_mask}
  15. # 提示输入网关,默认值为$default_gateway
  16. read -p "请输入网关(默认:$default_gateway):" gateway
  17. gateway=${gateway:-$default_gateway}
  18. # 提示输入DNS,默认值为$default_dns
  19. read -p "请输入DNS服务器(默认:$default_dns):" dns
  20. dns=${dns:-$default_dns}
  21. # 列出网络接口并提示输入接口名称
  22. echo "可用的网络接口如下:"
  23. ip link show | awk -F: '$1 !~ "lo|vir|br|wl|^[^0-9]"{print $2}'
  24. # 提示输入网络接口名称
  25. read -p "请输入网络接口名称:" interface_name
  26. # 备份当前网络配置文件
  27. cp /etc/sysconfig/network-scripts/ifcfg-$interface_name /etc/sysconfig/network-scripts/ifcfg-$interface_name.bak
  28. # 写入新的配置
  29. cat > /etc/sysconfig/network-scripts/ifcfg-$interface_name <<EOL
  30. DEVICE=$interface_name
  31. BOOTPROTO=none
  32. ONBOOT=yes
  33. IPADDR=$ip_address
  34. NETMASK=$subnet_mask
  35. GATEWAY=$gateway
  36. DNS1=$dns
  37. EOL
  38. # 重启网络服务以应用更改
  39. if systemctl status NetworkManager &>/dev/null; then
  40. systemctl restart NetworkManager
  41. else
  42. systemctl restart network
  43. fi
  44. echo "静态IP配置已成功应用。"
  45. }
  46. # 设置动态IP(DHCP)的函数
  47. set_dynamic_ip() {
  48. # 列出网络接口并提示输入接口名称
  49. echo "可用的网络接口如下:"
  50. ip link show | awk -F: '$1 !~ "lo|vir|br|wl|^[^0-9]"{print $2}'
  51. # 提示输入网络接口名称
  52. read -p "请输入网络接口名称:" interface_name
  53. # 备份当前网络配置文件
  54. cp /etc/sysconfig/network-scripts/ifcfg-$interface_name /etc/sysconfig/network-scripts/ifcfg-$interface_name.bak
  55. # 写入新的DHCP配置
  56. cat > /etc/sysconfig/network-scripts/ifcfg-$interface_name <<EOL
  57. DEVICE=$interface_name
  58. BOOTPROTO=dhcp
  59. ONBOOT=yes
  60. EOL
  61. # 重启网络服务以应用更改
  62. if systemctl status NetworkManager &>/dev/null; then
  63. systemctl restart NetworkManager
  64. else
  65. systemctl restart network
  66. fi
  67. echo "动态IP配置已成功应用。"
  68. }
  69. # 主脚本逻辑
  70. read -p "是否设置静态IP?(yes/no): " choice
  71. if [ "$choice" == "yes" ]; then
  72. set_static_ip
  73. else
  74. set_dynamic_ip
  75. fi