config-ip.sh 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #!/bin/bash
  2. set -e
  3. function usage() {
  4. echo -e "USAGE:
  5. $(basename $0) --help # 使用帮助
  6. $(basename $0) work # 联想工作机IP
  7. $(basename $0) pxe # pxe IP
  8. $(basename $0) dhcp # 自动分配"
  9. exit 1
  10. }
  11. # 判断参数个数
  12. if [ $# -eq 0 ]; then
  13. usage
  14. exit 1
  15. fi
  16. # 设置ip
  17. function set_ip() {
  18. IPADDR=$1
  19. GATEWAY=$2
  20. DNS1=$3
  21. DNS2=$4
  22. echo "IPADDR=${IPADDR}, GATEWAY=${GATEWAY}, DNS1=${DNS1}, DNS2=${DNS2}"
  23. sudo tee ${CONFIG_FILE} <<EOF
  24. # Let NetworkManager manage all devices on this system
  25. network:
  26. version: 2
  27. renderer: NetworkManager
  28. ethernets:
  29. ${IFACE_LAN}:
  30. dhcp4: false
  31. gateway4: ${GATEWAY}
  32. addresses: [${IPADDR}/24]
  33. nameservers:
  34. addresses: [${DNS1}, ${DNS2}]
  35. EOF
  36. }
  37. # 获取有线网卡(如:enp0s25,enp4s0),目前以 en开头作为判断条件,需要再找找更精准的方法,或者做成选择项
  38. IFACE_LAN=$(LANG=en ip link | awk -F '[ :]' '{print $3}' | grep "^en")
  39. echo "IFACE_LAN=${IFACE_LAN}"
  40. # 配置文件路径
  41. CONFIG_FILE=/etc/netplan/01-network-manager-all.yaml
  42. if [ ! -f ${CONFIG_FILE}.bak ]; then
  43. sudo cp -v ${CONFIG_FILE}{,.bak}
  44. fi
  45. if [ "$1" == "work" ]; then
  46. IPADDR=172.29.157.20
  47. GATEWAY=172.29.221.254
  48. DNS1=114.114.114.114
  49. DNS2=172.20.191.2
  50. set_ip ${IPADDR} ${GATEWAY} ${DNS1} ${DNS2}
  51. elif [ "$1" == "pxe" ]; then
  52. IPADDR=10.0.0.10
  53. GATEWAY=10.0.0.1
  54. DNS1=10.0.0.10
  55. DNS2=114.114.114.114
  56. set_ip ${IPADDR} ${GATEWAY} ${DNS1} ${DNS2}
  57. elif [ "$1" == "dhcp" ]; then
  58. sudo tee ${CONFIG_FILE} <<EOF
  59. # Let NetworkManager manage all devices on this system
  60. network:
  61. version: 2
  62. renderer: NetworkManager
  63. ethernets:
  64. ${IFACE_LAN}:
  65. dhcp4: true
  66. EOF
  67. fi
  68. # sudo netplan --debug apply
  69. sudo netplan apply