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