shell_action.sh 14 KB

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