reboot.sh 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  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. #ibf write 66 bit 1 = 0 read obf 66 bit 0 = 0
  46. echo lc111111 | sudo -S ${MYDIR}/mem write 1 0x20000066 0x81 > /dev/null
  47. sleep 0.1
  48. echo lc111111 | sudo -S ${MYDIR}/mem write 1 0x20000062 0xd > /dev/null
  49. sleep 0.1
  50. echo lc111111 | sudo -S ${MYDIR}/mem write 1 0x20000062 0x1 > /dev/null
  51. sleep 0.5
  52. echo lc111111 | sudo -S ${MYDIR}/mem write 1 0x20000066 0x81 > /dev/null
  53. sleep 0.1
  54. echo lc111111 | sudo -S ${MYDIR}/mem write 1 0x20000062 0xd > /dev/null
  55. sleep 0.1
  56. echo lc111111 | sudo -S ${MYDIR}/mem write 1 0x20000062 0x1 > /dev/null
  57. sleep 0.5
  58. echo lc111111 | sudo -S ${MYDIR}/mem write 1 0x20000066 0x81 > /dev/null
  59. sleep 0.1
  60. echo lc111111 | sudo -S ${MYDIR}/mem write 1 0x20000062 0xd > /dev/null
  61. sleep 0.1
  62. echo lc111111 | sudo -S ${MYDIR}/mem write 1 0x20000062 0x1 > /dev/null
  63. sleep 0.5
  64. }
  65. phytium_coldboot()
  66. {
  67. echo "write EC[0x08] = 0x1E" >> ${logFile}
  68. echo lc111111 | sudo -S ${MYDIR}/ec$ARCH -w 0x1E -a 0x08
  69. sleep 0.5
  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 -ne "read EC[0x0D]:" >> ${logFile}
  75. echo lc111111 | sudo -S ${MYDIR}/ec$ARCH -r -a 0x08 >> ${logFile}
  76. }
  77. case "$ARCH" in
  78. mips64)
  79. coldboot_action=loongson_coldboot
  80. ;;
  81. aarch64)
  82. coldboot_action=phytium_coldboot
  83. ;;
  84. *)
  85. coldboot_action=ec_wakeup
  86. # echo "未支持$ARCH架构,测试未进行!"
  87. # exit 1
  88. ;;
  89. esac
  90. info(){
  91. # 获取key所在的行
  92. info_line=`sed -n "/^$1=/p" $2`
  93. if [[ -z $info_line ]];then
  94. echo ""
  95. fi
  96. # 返回key对应的value值
  97. echo $info_line|awk -F '=' '{print $2}'
  98. }
  99. OS=`info ID /etc/os-release`
  100. if [ ${timesLeft} -gt '0' ];then
  101. echo "[`date "+%m-%d-%H:%M:%S"`] Do ${ACTION} remaining ${timesLeft} times" > $console
  102. echo "[`date`]还剩余${timesLeft}次${ACTION}。" | tee -a ${logFile}
  103. ############################################################
  104. if [ "$OS" == "uos" ];then
  105. if read -t 15 -p "按Enter键停止测试!" start; then
  106. rm -f $login_user_home/.config/autostart/reboot.desktop
  107. chown $login_user_name:$login_user_name $MYDIR -R
  108. echo "测试中止!"
  109. exit 1
  110. fi
  111. fi
  112. echo "timesLeft=$((timesLeft-1))" > ${MYDIR}/times.left
  113. now=`date '+%s'`
  114. sed -i "s#^TIMECTRL=.*#TIMECTRL=$now#" ${MYDIR}/action.cfg
  115. chown $login_user_name:$login_user_name $MYDIR -R
  116. case "${ACTION}" in
  117. warnboot)
  118. /sbin/reboot
  119. ;;
  120. coldboot)
  121. $coldboot_action
  122. /sbin/poweroff
  123. ;;
  124. esac
  125. echo "[`date "+%m-%d-%H:%M:%S"`] Do ${ACTION} finish!" > $console
  126. else
  127. echo "[`date "+%m-%d-%H:%M:%S"`] Do ${ACTION} all done!" > $console
  128. echo "[`date`] ${ACTION}测试完成" | tee -a ${logFile}
  129. rm -f $login_user_home/.config/autostart/reboot.desktop
  130. echo lc111111 | sudo -S sed -i '/.\/reboot.sh/d' /etc/crontab
  131. chown $login_user_name:$login_user_name $MYDIR -R
  132. read i
  133. fi