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.

166 lines
3.6 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 "AIUI_AUTH_ID=${AIUI_AUTH_ID}" >>/etc/device_info.env
  38. echo "+++++++++ create /etc/device_info.env +++++++++"
  39. cat /etc/device_info.env
  40. echo ""
  41. }
  42. function update_frpc_config() {
  43. #
  44. # 当前这版本的FRPC的配置文件有问题,重新生成配置文件
  45. #
  46. # [common]
  47. # server_addr = {{ .Envs.FRP_SERVER_ADDR }}
  48. # server_port = 7000
  49. # log_file = /var/log/frpc.log
  50. # log_level = debug
  51. # log_max_days = 3
  52. # login_fail_exit = false
  53. # user = {{ .Envs.DEVICE_ID }}
  54. #
  55. # [ssh]
  56. # type = tcp
  57. # local_ip = 127.0.0.1
  58. # local_port = 22
  59. # remote_port = 0
  60. echo "[common]" >/etc/frpc.ini
  61. echo "server_addr = ${FTP_SERVER_ADDR}" >>/etc/frpc.ini
  62. echo "server_port = 7000" >>/etc/frpc.ini
  63. echo "log_file = /var/log/frpc.log" >>/etc/frpc.ini
  64. echo "log_level = debug" >>/etc/frpc.ini
  65. echo "log_max_days = 3" >>/etc/frpc.ini
  66. echo "login_fail_exit = false" >>/etc/frpc.ini
  67. echo "user = ${DEVICE_ID}" >>/etc/frpc.ini
  68. echo "" >>/etc/frpc.ini
  69. echo "[ssh]" >>/etc/frpc.ini
  70. echo "type = tcp" >>/etc/frpc.ini
  71. echo "local_ip = 127.0.0.1" >>/etc/frpc.ini
  72. echo "local_port = 22" >>/etc/frpc.ini
  73. echo "remote_port = 0" >>/etc/frpc.ini
  74. echo "+++++++++ create /etc/frpc.ini +++++++++"
  75. cat /etc/frpc.ini
  76. echo ""
  77. systemctl enable frpc.service
  78. systemctl start frpc
  79. }
  80. set -e
  81. DEVICE_ID=""
  82. FTP_SERVER_ADDR=""
  83. AIUI_AUTH_ID=""
  84. FIX_MAC=""
  85. PARAMETERS=$@
  86. EXEC_IN_BOARD=false
  87. for i in "$@"; do
  88. case $i in
  89. --deviceId)
  90. shift
  91. DEVICE_ID=$1
  92. shift
  93. ;;
  94. --ftpserver)
  95. shift
  96. FTP_SERVER_ADDR=$1
  97. shift
  98. ;;
  99. --fixmac)
  100. shift
  101. FIX_MAC=$1
  102. shift
  103. ;;
  104. --aiui_auth_id)
  105. shift
  106. AIUI_AUTH_ID=$1
  107. shift
  108. ;;
  109. --exec_in_board)
  110. shift
  111. EXEC_IN_BOARD=$1
  112. shift
  113. ;;
  114. --ip)
  115. shift
  116. IP=$1
  117. shift
  118. ;;
  119. *)
  120. # unknown option
  121. ;;
  122. esac
  123. done
  124. ## 如果EXEC_IN_BOARD为空,则将自身拷贝到目标设备再次执行
  125. if [ "$EXEC_IN_BOARD" != "true" ]; then
  126. echo "scp ./sh/boardinit.sh root@$IP:/tmp"
  127. scp ./sh/boardinit.sh root@$IP:/tmp
  128. echo "ssh root@$IP \"/tmp/boardinit.sh $PARAMETERS --exec_in_board true\""
  129. echo ""
  130. ssh root@$IP "/tmp/boardinit.sh $PARAMETERS --exec_in_board true"
  131. exit 0
  132. fi
  133. ## 固化网卡
  134. if [ "$FIX_MAC" == "true" ]; then
  135. fixmac eth0
  136. fi
  137. generate_device_info
  138. # 翻转屏幕
  139. ff_rotate right
  140. update_frpc_config