reboot.sh 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. #!/bin/bash
  2. login_user_id=$(grep '^\<UID_MIN\>' /etc/login.defs | awk '{print $2}')
  3. login_user_name=$(cat /etc/passwd | awk -v id="$login_user_id" -F: '{if ($3==id) print $1}')
  4. login_user_home=$(cat /etc/passwd | awk -v id="$login_user_id" -F: '{if ($3==id) print $6}')
  5. # echo $login_user_id
  6. # echo $login_user_name
  7. # echo $login_user_home
  8. MYDIR=$(dirname $(readlink -f "$0"))
  9. echo "dir: ${MYDIR}" >> /tmp/debug.log
  10. echo "${MYDIR}/times.left" >> /tmp/debug.log
  11. source "${MYDIR}/times.left"
  12. source "${MYDIR}/action.cfg"
  13. logFile=${MYDIR}/${LOG}
  14. ARCH=$(arch)
  15. # resultFile=$(dirname "${MYDIR}")/result/result.txt
  16. console=/dev/ttyS0
  17. if [ $ARCH = "aarch64" ]; then
  18. console=/dev/ttyAMA0
  19. fi
  20. s=$(printf "%-30s" "=")
  21. echo -e "${s// /=}\n" >> ${logFile}
  22. now=`date '+%s'`
  23. if [ $(($now - $TIMECTRL)) -ge 300 ]; then
  24. echo "[`date`] 警告:距离上次自动执行超5分钟" | tee -a ${logFile}
  25. # echo -e "检测到超时(5分钟)异常,测试终止!\n $now - $TIMECTRL -ge 300" >> /tmp/debug.log
  26. # rm -f $login_user_home/.config/autostart/reboot.desktop
  27. # chown $login_user_name:$login_user_name $MYDIR -R
  28. # exit 1
  29. fi
  30. # export PATH=$PATH:$MYDIR
  31. ec_wakeup()
  32. {
  33. echo "write EC[0x08] = 0x28" >> ${logFile}
  34. echo lc111111 | sudo -S ${MYDIR}/ec$ARCH -w 0x28 -a 0x08
  35. sleep 0.5
  36. echo -ne "read EC[0x08]:" >> ${logFile}
  37. echo lc111111 | sudo -S ${MYDIR}/ec$ARCH -r -a 0x08 >> ${logFile}
  38. }
  39. loongson_coldboot()
  40. {
  41. ec_wakeup
  42. }
  43. phytium_coldboot2()
  44. {
  45. ec_wakeup
  46. #ibf write 66 bit 1 = 0 read obf 66 bit 0 = 0
  47. echo lc111111 | sudo -S ${MYDIR}/mem write 1 0x20000066 0x81 > /dev/null
  48. sleep 0.1
  49. echo lc111111 | sudo -S ${MYDIR}/mem write 1 0x20000062 0xd > /dev/null
  50. sleep 0.1
  51. echo lc111111 | sudo -S ${MYDIR}/mem write 1 0x20000062 0x1 > /dev/null
  52. sleep 0.5
  53. echo lc111111 | sudo -S ${MYDIR}/mem write 1 0x20000066 0x81 > /dev/null
  54. sleep 0.1
  55. echo lc111111 | sudo -S ${MYDIR}/mem write 1 0x20000062 0xd > /dev/null
  56. sleep 0.1
  57. echo lc111111 | sudo -S ${MYDIR}/mem write 1 0x20000062 0x1 > /dev/null
  58. sleep 0.5
  59. echo lc111111 | sudo -S ${MYDIR}/mem write 1 0x20000066 0x81 > /dev/null
  60. sleep 0.1
  61. echo lc111111 | sudo -S ${MYDIR}/mem write 1 0x20000062 0xd > /dev/null
  62. sleep 0.1
  63. echo lc111111 | sudo -S ${MYDIR}/mem write 1 0x20000062 0x1 > /dev/null
  64. sleep 0.5
  65. }
  66. phytium_coldboot()
  67. {
  68. ec_wakeup
  69. echo "write EC[0x08] = 0x1E" >> ${logFile}
  70. echo lc111111 | sudo -S ${MYDIR}/ec$ARCH -w 0x1E -a 0x08
  71. sleep 0.5
  72. echo lc111111 | sudo -S ${MYDIR}/ec$ARCH -w 0x1E -a 0x08
  73. sleep 0.5
  74. echo lc111111 | sudo -S ${MYDIR}/ec$ARCH -w 0x1E -a 0x08
  75. sleep 0.5
  76. echo -ne "read EC[0x08]:" >> ${logFile}
  77. echo lc111111 | sudo -S ${MYDIR}/ec$ARCH -r -a 0x08 >> ${logFile}
  78. }
  79. case "$ARCH" in
  80. mips64)
  81. coldboot_action=loongson_coldboot
  82. ;;
  83. aarch64)
  84. coldboot_action=phytium_coldboot
  85. ;;
  86. *)
  87. #coldboot_action=ec_wakeup
  88. coldboot_action=phytium_coldboot
  89. # echo "未支持$ARCH架构,测试未进行!"
  90. # exit 1
  91. ;;
  92. esac
  93. info(){
  94. # 获取key所在的行
  95. info_line=`sed -n "/^$1=/p" $2`
  96. if [[ -z $info_line ]];then
  97. echo ""
  98. fi
  99. # 返回key对应的value值
  100. echo $info_line|awk -F '=' '{print $2}'
  101. }
  102. OS=`info ID /etc/os-release`
  103. if [ ${timesLeft} -gt '0' ];then
  104. echo "[`date "+%m-%d-%H:%M:%S"`] Do ${ACTION} remaining ${timesLeft} times" > $console
  105. echo "[`date`]还剩余${timesLeft}次${ACTION}。" | tee -a ${logFile}
  106. ############################################################
  107. if [ "$OS" == "uos" ];then
  108. if read -t 15 -p "按Enter键停止测试!" start; then
  109. rm -f $login_user_home/.config/autostart/reboot.desktop
  110. chown $login_user_name:$login_user_name $MYDIR -R
  111. echo "测试中止!"
  112. exit 1
  113. fi
  114. fi
  115. echo "timesLeft=$((timesLeft-1))" > ${MYDIR}/times.left
  116. now=`date '+%s'`
  117. sed -i "s#^TIMECTRL=.*#TIMECTRL=$now#" ${MYDIR}/action.cfg
  118. chown $login_user_name:$login_user_name $MYDIR -R
  119. case "${ACTION}" in
  120. warnboot)
  121. /sbin/reboot
  122. ;;
  123. coldboot)
  124. $coldboot_action
  125. /sbin/poweroff
  126. ;;
  127. esac
  128. echo "[`date "+%m-%d-%H:%M:%S"`] Do ${ACTION} finish!" > $console
  129. else
  130. echo "[`date "+%m-%d-%H:%M:%S"`] Do ${ACTION} all done!" > $console
  131. echo "[`date`] ${ACTION}测试完成" | tee -a ${logFile}
  132. rm -f $login_user_home/.config/autostart/reboot.desktop
  133. echo lc111111 | sudo -S sed -i '/.\/reboot.sh/d' /etc/crontab
  134. chown $login_user_name:$login_user_name $MYDIR -R
  135. read i
  136. fi