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.

162 lines
3.6 KiB

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