shell_action.sh 14 KB

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