You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

158 lines
3.4 KiB

  1. #!/bin/bash
  2. function fixmac() {
  3. #!/bin/bash
  4. if [ $# -ne 1 ]; then
  5. echo "Usage: $0 netcardname"
  6. exit 1
  7. fi
  8. netcardname=$1
  9. linkfilename=/etc/systemd/network/20-fixedmac-${netcardname}.link
  10. mac=$(ifconfig ${netcardname} | grep ether | awk '{print $2}')
  11. echo "[Match]" >${linkfilename}
  12. echo "OriginalName=${netcardname}" >>${linkfilename}
  13. echo "" >>${linkfilename}
  14. echo "[Link]" >>${linkfilename}
  15. echo "MACAddress=${mac}" >>${linkfilename}
  16. echo "++++++++++ create ${linkfilename} ++++++++++"
  17. cat ${linkfilename}
  18. echo ""
  19. }
  20. function generate_device_info() {
  21. #
  22. # /etc/device_info.env
  23. # DEVICE_ID=IFLYTOP_UNINITIALIZED
  24. # FRP_SERVER_ADDR=127.0.0.1
  25. #
  26. # 判断DEVICE_ID和FRP_SERVER_ADDR是否为空
  27. if [ -z "$DEVICE_ID" ]; then
  28. echo "DEVICE_ID is empty"
  29. exit 1
  30. fi
  31. if [ -z "$FTP_SERVER_ADDR" ]; then
  32. echo "FTP_SERVER_ADDR is empty"
  33. exit 1
  34. fi
  35. echo "DEVICE_ID=${DEVICE_ID}" >/etc/device_info.env
  36. echo "FRP_SERVER_ADDR=${FTP_SERVER_ADDR}" >>/etc/device_info.env
  37. echo "+++++++++ create /etc/device_info.env +++++++++"
  38. cat /etc/device_info.env
  39. echo ""
  40. }
  41. function update_frpc_config() {
  42. #
  43. # 当前这版本的FRPC的配置文件有问题,重新生成配置文件
  44. #
  45. # [common]
  46. # server_addr = {{ .Envs.FRP_SERVER_ADDR }}
  47. # server_port = 7000
  48. # log_file = /var/log/frpc.log
  49. # log_level = debug
  50. # log_max_days = 3
  51. # login_fail_exit = false
  52. # user = {{ .Envs.DEVICE_ID }}
  53. #
  54. # [ssh]
  55. # type = tcp
  56. # local_ip = 127.0.0.1
  57. # local_port = 22
  58. # remote_port = 0
  59. echo "[common]" >/etc/frpc.ini
  60. echo "server_addr = ${FTP_SERVER_ADDR}" >>/etc/frpc.ini
  61. echo "server_port = 7000" >>/etc/frpc.ini
  62. echo "log_file = /var/log/frpc.log" >>/etc/frpc.ini
  63. echo "log_level = debug" >>/etc/frpc.ini
  64. echo "log_max_days = 3" >>/etc/frpc.ini
  65. echo "login_fail_exit = false" >>/etc/frpc.ini
  66. echo "user = ${DEVICE_ID}" >>/etc/frpc.ini
  67. echo "" >>/etc/frpc.ini
  68. echo "[ssh]" >>/etc/frpc.ini
  69. echo "type = tcp" >>/etc/frpc.ini
  70. echo "local_ip = 127.0.0.1" >>/etc/frpc.ini
  71. echo "local_port = 22" >>/etc/frpc.ini
  72. echo "remote_port = 0" >>/etc/frpc.ini
  73. echo "+++++++++ create /etc/frpc.ini +++++++++"
  74. cat /etc/frpc.ini
  75. echo ""
  76. systemctl enable frpc.service
  77. systemctl start frpc
  78. }
  79. set -e
  80. DEVICE_ID=""
  81. FTP_SERVER_ADDR=""
  82. FIX_MAC=""
  83. PARAMETERS=$@
  84. EXEC_IN_BOARD=false
  85. for i in "$@"; do
  86. case $i in
  87. --deviceId)
  88. shift
  89. DEVICE_ID=$1
  90. shift
  91. ;;
  92. --ftpserver)
  93. shift
  94. FTP_SERVER_ADDR=$1
  95. shift
  96. ;;
  97. --fixmac)
  98. shift
  99. FIX_MAC=$1
  100. shift
  101. ;;
  102. --exec_in_board)
  103. shift
  104. EXEC_IN_BOARD=$1
  105. shift
  106. ;;
  107. --ip)
  108. shift
  109. IP=$1
  110. shift
  111. ;;
  112. *)
  113. # unknown option
  114. ;;
  115. esac
  116. done
  117. ## 如果EXEC_IN_BOARD为空,则将自身拷贝到目标设备再次执行
  118. if [ "$EXEC_IN_BOARD" != "true" ]; then
  119. echo "scp ./sh/boardinit.sh root@$IP:/tmp"
  120. scp ./sh/boardinit.sh root@$IP:/tmp
  121. echo "ssh root@$IP \"/tmp/boardinit.sh $PARAMETERS --exec_in_board true\""
  122. echo ""
  123. ssh root@$IP "/tmp/boardinit.sh $PARAMETERS --exec_in_board true"
  124. exit 0
  125. fi
  126. ## 固化网卡
  127. if [ "$FIX_MAC" == "true" ]; then
  128. fixmac eth0
  129. fi
  130. generate_device_info
  131. # 翻转屏幕
  132. ff_rotate right
  133. update_frpc_config