shell_action.sh 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440
  1. #!/bin/bash
  2. SYSCONFCMD="/usr/bin/sysconf"
  3. SYSCONF="/etc/speaker.conf"
  4. VOLCONF="/oem/etc/volctrl.conf"
  5. action="$1"
  6. [ -z "${action}" ] && exit 0
  7. case ${action} in
  8. set_cronreboot)
  9. CRON_DIR="/oem/etc/cron/crontabs"
  10. CRON_CONF="${CRON_DIR}/root"
  11. if [ ! -f "${CRON_CONF}" ];then
  12. if [ ! -d "${CRON_DIR}" ];then
  13. mkdir -p ${CRON_DIR}
  14. fi
  15. touch ${CRON_CONF}
  16. chmod 0600 ${CRON_CONF}
  17. fi
  18. CRON_STAT="`ps|grep crond|grep -v grep`"
  19. if [ -z "${CRON_STAT}" ];then
  20. /usr/sbin/crond -c ${CRON_DIR}
  21. sed -i '/check_log_size/d' ${CRON_CONF}
  22. echo "0 2 * * * /etc/scripts/shell_action.sh check_log_size" > ${CRON_CONF}
  23. fi
  24. enable="`${SYSCONFCMD} ${SYSCONF} get restart-timer enable`"
  25. if [ "foo${enable}" == "foono" ];then
  26. sed -i '/reboot/d' ${CRON_CONF}
  27. exit 0
  28. fi
  29. month="*"
  30. week="`${SYSCONFCMD} ${SYSCONF} get restart-timer week`"
  31. day="`${SYSCONFCMD} ${SYSCONF} get restart-timer day`"
  32. hour="`${SYSCONFCMD} ${SYSCONF} get restart-timer hour`"
  33. minutes="`${SYSCONFCMD} ${SYSCONF} get restart-timer minutes`"
  34. sed -i '/reboot/d' ${CRON_CONF}
  35. echo "${minutes} ${hour} ${day} ${month} ${week} /sbin/reboot" >> ${CRON_CONF}
  36. exit 0
  37. ;;
  38. getdeviceInfo)
  39. if /sbin/ifconfig br0 > /dev/null 2>&1;then
  40. dev="br0"
  41. else
  42. dev="eth0"
  43. fi
  44. model="`${SYSCONFCMD} ${SYSCONF} get system model`"
  45. hardVersion="`${SYSCONFCMD} ${SYSCONF} get system hard_version`"
  46. ip="`/sbin/ifconfig ${dev} | grep 'inet addr' | awk '{print $2}' | cut -d ':' -f2 | tr -d ' '`"
  47. ipMode="`${SYSCONFCMD} ${SYSCONF} get system ip_assign`"
  48. mac="`/sbin/ifconfig ${dev} | grep 'HWaddr' | awk '{print $5}' | tr -d ' '`"
  49. softwareVersion="`${SYSCONFCMD} ${SYSCONF} get system firmware`"
  50. submask="`/sbin/ifconfig ${dev} | grep 'inet addr' | awk '{print $4}' | cut -d ':' -f2 | tr -d ' '`"
  51. onvif_enable="`${SYSCONFCMD} ${SYSCONF} get onvif enable`"
  52. account_port1="`${SYSCONFCMD} ${SYSCONF} get account_info_1 port`"
  53. account_port2="`${SYSCONFCMD} ${SYSCONF} get account_info_2 port`"
  54. remark="`${SYSCONFCMD} ${SYSCONF} get system location`"
  55. multicast="`${SYSCONFCMD} ${SYSCONF} get multicast_player enable`"
  56. echo -n "${hardVersion}|${ip}|${ipMode}|${mac}|${softwareVersion}|${model}|${submask}|${onvif_enable}|${account_port1}|${account_port2}|${remark}|${multicast}"
  57. ;;
  58. getconfigInfo)
  59. model="`${SYSCONFCMD} ${SYSCONF} get system model`"
  60. masterExten="`${SYSCONFCMD} ${SYSCONF} get account_info_1 username`"
  61. masterActivate="`${SYSCONFCMD} ${SYSCONF} get account_info_1 enable`"
  62. masterServer="`${SYSCONFCMD} ${SYSCONF} get account_info_1 server`"
  63. masterDomain="`${SYSCONFCMD} ${SYSCONF} get account_info_1 domain`"
  64. [ -z "${masterDomain}" ] && masterDomain=${masterServer}
  65. micVolume="`${SYSCONFCMD} ${VOLCONF} get volume volume_in`"
  66. speakerVolume="`${SYSCONFCMD} ${VOLCONF} get volume volume_out`"
  67. if [ "foo${masterActivate}" = "fooyes" ];then
  68. search_str="baresip-reg-status-${masterExten}-${masterDomain}"
  69. masterRegisterStatus="`/usr/sbin/redis-cli get ${search_str} | cut -d ',' -f2 | cut -d ':' -f2 | tr -d '}' | tr -d '\"'`"
  70. else
  71. masterRegisterStatus="unregister"
  72. fi
  73. echo -n "${masterExten}|${masterServer}|${masterRegisterStatus}|${speakerVolume}|${micVolume}"
  74. ;;
  75. getStatus)
  76. STATUSDIR="/oem/.onvif_upgrade"
  77. STATUSPATH="${STATUSDIR}/status"
  78. [ ! -d "${STATUSDIR}" ] && mkdir -p ${STATUSDIR} && echo -n "UpgradePre" > ${STATUSPATH}
  79. cat ${STATUSPATH}
  80. exit 0
  81. ;;
  82. addRoute)
  83. dstIp="$2"
  84. [ -z "${dstIp}" ] && exit 0
  85. if /sbin/ifconfig br0 > /dev/null 2>&1;then
  86. dev="br0"
  87. else
  88. dev="eth0"
  89. fi
  90. if ! /sbin/route -n | grep "${dstIp}" > /dev/null;then
  91. /sbin/route add -net ${dstIp} netmask 255.255.255.255 dev ${dev}
  92. fi
  93. exit 0
  94. ;;
  95. delRoute)
  96. dstIp="$2"
  97. [ -z "${dstIp}" ] && exit 0
  98. if /sbin/ifconfig br0 > /dev/null 2>&1;then
  99. dev="br0"
  100. else
  101. dev="eth0"
  102. fi
  103. if /sbin/route -n | grep "${dstIp}" > /dev/null;then
  104. /sbin/route del -net ${dstIp} netmask 255.255.255.255 dev ${dev}
  105. fi
  106. exit 0
  107. ;;
  108. rebootIpc)
  109. /usr/bin/curl --connect-timeout 1 -X GET "http://10.231.132.139/cgi-bin/web.cgi?action=reboot&cmd=system&username=admin&password=33e97a6101dce4c3ad589754e79b14adacc52d45"
  110. exit 0
  111. ;;
  112. rebootIpcAndReboot)
  113. $0 showReboot
  114. $0 rebootIpc
  115. sleep 1
  116. /sbin/reboot
  117. exit 0
  118. ;;
  119. setOnvifVol)
  120. volume=${2}
  121. /usr/sbin/redis-cli PUBLISH volume-value-channel "{\"onvif_volume\": ${volume}}"
  122. ${SYSCONFCMD} ${VOLCONF} set volume onvif_volume ${volume}
  123. ;;
  124. startSyncTimeToIPAC)
  125. $0 stopSyncTime
  126. if [ ! -z "$2" ];then
  127. delay=$2
  128. else
  129. delay=""
  130. fi
  131. server="`${SYSCONFCMD} ${SYSCONF} get account_info_1 server`"
  132. model="`${SYSCONFCMD} ${SYSCONF} get system model`"
  133. if [ "foo${model}" = "fooX10" ];then
  134. interface="br0"
  135. else
  136. interface="eth0"
  137. fi
  138. if [ ! -z ${delay} ];then
  139. /usr/sbin/ptpd2 -i ${interface} -s -U -g --ptpengine:log_delayreq_interval=1 --delay-override ${delay} -u ${server}
  140. else
  141. /usr/sbin/ptpd2 -i ${interface} -s -U -g --ptpengine:log_delayreq_interval=1 -u ${server}
  142. fi
  143. exit 0
  144. ;;
  145. startSyncTimeToPtpServer)
  146. $0 stopSyncTime
  147. enable="`${SYSCONFCMD} ${SYSCONF} get ptp enable`"
  148. if [ "foo${enable}" = "fooyes" ];then
  149. if [ ! -z "$2" ];then
  150. delay=$2
  151. else
  152. delay=""
  153. fi
  154. server="`${SYSCONFCMD} ${SYSCONF} get ptp server`"
  155. model="`${SYSCONFCMD} ${SYSCONF} get system model`"
  156. if [ "foo${model}" = "fooX10" ];then
  157. interface="br0"
  158. else
  159. interface="eth0"
  160. fi
  161. if [ ! -z ${delay} ];then
  162. /usr/sbin/ptpd2 -i ${interface} -s -U -g --ptpengine:log_delayreq_interval=1 --delay-override ${delay} -u ${server}
  163. else
  164. /usr/sbin/ptpd2 -i ${interface} -s -U -g --ptpengine:log_delayreq_interval=1 -u ${server}
  165. fi
  166. fi
  167. exit 0
  168. ;;
  169. stopSyncTime)
  170. pid="`cat /var/run/ptpd2.lock | tr -d ' '`"
  171. if [ ! -z "${pid}" ];then
  172. /bin/kill -9 ${pid} > /dev/null 2>&1
  173. fi
  174. exit 0
  175. ;;
  176. set_sshd)
  177. /etc/init.d/S50sshd restart
  178. ;;
  179. ai)
  180. case $2 in
  181. start)
  182. enAIAgent="`${SYSCONFCMD} ${SYSCONF} get ai_settings enable`"
  183. if [ "${enAIAgent}" = "yes" ];then
  184. tmp_hard_verssion="`/usr/bin/vendor_storage -r VENDOR_WIFI_MAC_ID | awk -F" " '{print $2}'`"
  185. hard_version=${tmp_hard_verssion: -2}
  186. if [ "${hard_version}" = "32" ];then
  187. echo 1 > /sys/class/gpio/gpio143/value
  188. else
  189. echo 1 > /sys/class/gpio/gpio134/value
  190. fi
  191. /etc/scripts/serial_ctrl &
  192. fi
  193. ;;
  194. stop)
  195. killall serial_ctrl > /dev/null 2>&1
  196. tmp_hard_verssion="`/usr/bin/vendor_storage -r VENDOR_WIFI_MAC_ID | awk -F" " '{print $2}'`"
  197. hard_version=${tmp_hard_verssion: -2}
  198. if [ "${hard_version}" = "32" ];then
  199. echo 0 > /sys/class/gpio/gpio143/value
  200. else
  201. echo 0 > /sys/class/gpio/gpio134/value
  202. fi
  203. ;;
  204. restart)
  205. $0 ai stop
  206. $0 ai start
  207. ;;
  208. esac
  209. ;;
  210. set_onvif)
  211. generate_config() {
  212. if /sbin/ifconfig br0 > /dev/null 2>&1;then
  213. dev="br0"
  214. else
  215. dev="eth0"
  216. fi
  217. model="`${SYSCONFCMD} ${SYSCONF} get system model`"
  218. hardVersion="`${SYSCONFCMD} ${SYSCONF} get system hard_version`"
  219. ip="`/sbin/ifconfig ${dev} | grep 'inet addr' | awk '{print $2}' | cut -d ':' -f2 | tr -d ' '`"
  220. mac="`/sbin/ifconfig ${dev} | grep HWaddr | awk '{printf $5}' | sed 's/:/-/g'`"
  221. softwareVersion="`${SYSCONFCMD} ${SYSCONF} get system firmware`"
  222. Manufacturer="ZYCOO"
  223. username="`${SYSCONFCMD} ${SYSCONF} get onvif username`"
  224. password="`${SYSCONFCMD} ${SYSCONF} get onvif password`"
  225. enMIC="`${SYSCONFCMD} ${SYSCONF} get onvif enable_mic`"
  226. mode="`${SYSCONFCMD} ${SYSCONF} get onvif mode`"
  227. SerialNumber="`/usr/bin/vendor_storage -r VENDOR_SN_ID | cut -d ":" -f2 | tr -d "\n" | tr -d " "`"
  228. uuid="`cat /tmp/uuid`"
  229. Mode="`${SYSCONFCMD} ${SYSCONF} get onvif relay_mode`"
  230. DelayTime="`${SYSCONFCMD} ${SYSCONF} get onvif relay_delaytime`"
  231. Type="`${SYSCONFCMD} ${SYSCONF} get onvif relay_type`"
  232. case ${mode} in
  233. 1)
  234. quality=4
  235. fps=15
  236. bitrate=96
  237. auth=1
  238. ;;
  239. 2|8)
  240. quality=5
  241. fps=30
  242. bitrate=160
  243. auth=1
  244. ;;
  245. 10)
  246. quality=3
  247. fps=5
  248. bitrate=64
  249. auth=2
  250. ;;
  251. *)
  252. quality=3
  253. fps=5
  254. bitrate=64
  255. auth=1
  256. ;;
  257. esac
  258. config="/oem/etc/config.xml"
  259. [ ! -f ${config} ] && touch ${config}
  260. cat << END > ${config}
  261. <?xml version="1.0" encoding="utf-8"?>
  262. <config>
  263. <server_ip>${ip}</server_ip>
  264. <server_port>8000</server_port>
  265. <need_auth>${auth}</need_auth>
  266. <auth_user>${username}</auth_user>
  267. <auth_pass>${password}</auth_pass>
  268. <discoverable>1</discoverable>
  269. <merge_source>1</merge_source>
  270. <information>
  271. <Manufacturer>${Manufacturer}</Manufacturer>
  272. <Model>${model}</Model>
  273. <FirmwareVersion>${softwareVersion}</FirmwareVersion>
  274. <SerialNumber>${SerialNumber}</SerialNumber>
  275. <HardwareId>${hardVersion}</HardwareId>
  276. <UUId>${uuid}</UUId>
  277. </information>
  278. <video_source_config>
  279. <x min="0" max="100" />
  280. <y min="0" max="100" />
  281. <width min="320" max="1280" />
  282. <height min="240" max="720" />
  283. </video_source_config>
  284. <profile>
  285. <video_source>
  286. <width>640</width>
  287. <height>480</height>
  288. </video_source>
  289. <video_encoder>
  290. <width>640</width>
  291. <height>480</height>
  292. <quality>${quality}</quality>
  293. <session_timeout>10</session_timeout>
  294. <framerate>${fps}</framerate>
  295. <encoding_interval>1</encoding_interval>
  296. <bitrate_limit>${bitrate}</bitrate_limit>
  297. <encoding>H264</encoding>
  298. <h264>
  299. <gov_length>20</gov_length>
  300. <h264_profile>Main</h264_profile>
  301. </h264>
  302. </video_encoder>
  303. <audio_output></audio_output>
  304. <audio_decoder>
  305. <sample_rate>8</sample_rate>
  306. <decoding>PCMU</decoding>
  307. </audio_decoder>
  308. END
  309. if [ "foo${enMIC}" = "fooyes" ];then
  310. cat << END >> ${config}
  311. <audio_source></audio_source>
  312. <audio_encoder>
  313. <session_timeout>10</session_timeout>
  314. <sample_rate>8</sample_rate>
  315. <bitrate>64</bitrate>
  316. <encoding>PCMU</encoding>
  317. </audio_encoder>
  318. END
  319. fi
  320. cat << END >> ${config}
  321. <relay_output>
  322. <mode>${Mode}</mode>
  323. <delaytime>${DelayTime}</delaytime>
  324. <idlestate>closed</idlestate>
  325. <tpye>${Type}</tpye>
  326. </relay_output>
  327. <stream_uri>rtsp://${ip}:554/MainStream</stream_uri>
  328. </profile>
  329. <scope_fixed>onvif://www.onvif.org/Profile/Streaming</scope_fixed>
  330. <scope_fixed>onvif://www.onvif.org/location/country/china</scope_fixed>
  331. <scope_fixed>onvif://www.onvif.org/type/video_encoder</scope_fixed>
  332. <scope_fixed>onvif://www.onvif.org/name/ZYCOO-IP-SPEAKER</scope_fixed>
  333. <scope_fixed>onvif://www.onvif.org/hardware/${model}</scope_fixed>
  334. <scope_config>onvif://www.onvif.org/acc/uuid/${uuid}</scope_config>
  335. <scope_config>onvif://www.onvif.org/acc/mac/${mac}</scope_config>
  336. <event>
  337. <renew_interval>60</renew_interval>
  338. <simulate_enable>0</simulate_enable>
  339. <simulate_interval>10</simulate_interval>
  340. </event>
  341. </config>
  342. END
  343. sync
  344. }
  345. #生成配置文件
  346. generate_config
  347. enable="`${SYSCONFCMD} ${SYSCONF} get onvif enable`"
  348. if [ "foo${enable}" = "fooyes" ];then
  349. killall onvifserver > /dev/null 2>&1
  350. killall rtspserver > /dev/null 2>&1
  351. /etc/scripts/rtspserver > /dev/null 2>&1 &
  352. sleep 1
  353. /etc/scripts/onvifserver > /dev/null 2>&1 &
  354. else
  355. killall onvifserver > /dev/null 2>&1
  356. killall rtspserver > /dev/null 2>&1
  357. fi
  358. exit 0
  359. ;;
  360. check_log_size)
  361. cdr_log_file="/userdata/cdr.csv"
  362. operation_log_file="/userdata/system.csv"
  363. max_line=20000
  364. remain_line=10000
  365. total_lines=$(wc -l < "$cdr_log_file")
  366. end_delelte_line=$((total_lines - remain_line))
  367. if ((total_lines > max_line)); then
  368. sed -i '1,'"$end_delelte_line"'d' "$cdr_log_file"
  369. fi
  370. total_lines=$(wc -l < "$operation_log_file")
  371. end_delelte_line=$((total_lines - remain_line))
  372. if ((total_lines > max_line)); then
  373. redis-cli LPUSH writelog-channel "log_clean"
  374. sed -i '1,'"$end_delelte_line"'d' "$operation_log_file"
  375. fi
  376. ;;
  377. set_python_priority)
  378. sleep 3
  379. pid="`ps | grep ispeaker | grep -v grep | awk -F' ' '{print $1}'`"
  380. if [ "foo${pid}" != "foo" ];then
  381. loop=5
  382. while [ $loop -gt 0 ]
  383. do
  384. echo "-1000" > /proc/${pid}/oom_score_adj
  385. loop="`expr $loop - 1`"
  386. usleep 200000
  387. done
  388. fi
  389. exit 0
  390. ;;
  391. showReboot)
  392. /usr/bin/curl --connect-timeout 2 http://127.0.0.1/api/show-start > /dev/null 2>&1 &
  393. exit 0
  394. ;;
  395. *)
  396. exit 0
  397. ;;
  398. esac