Linux scriptsammlung für E2 Boxen

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Linux scriptsammlung für E2 Boxen

      Hallo

      Mich würde mal interessieren, was Ihr so an scripten auf Linuxbasis geschrieben habt, um gewisse Dinge zu automatisieren.
      Wenn es solch einen Thread schon gibt, dann bitte dorthin verschieben.

      Ich würde mal starten wollen mit dem, was ich aktuell im Einsatz habe:

      1.) Mute-Schaltung über Linux mit Überprüfung, ob Mute schon aktiv ist. Aufruf über ./muteTV.sh <ip-adresse-der Box> (Bei mir im dialplan der Asterisk beim Anruf auf meine Nummern)

      Shell-Script

      1. [root@VoIPServer ~]# cat muteTV.sh
      2. #!/bin/sh
      3. Datum=$(date)
      4. user=meinuser
      5. pass=meinpass
      6. ip=$1
      7. waittime=1
      8. tmpfile=/tmp/mute.$ip.status
      9. rm $tmpfile
      10. wget --output-document=$tmpfile http://$user:$pass@$ip/web/vol
      11. muteTVstatus=$(cat $tmpfile | grep e2ismuted | cut -b 13-16)
      12. echo $muteTVstatus
      13. if [[ $muteTVstatus = Fals ]]
      14. then
      15. echo "let's turn on mute for $ip"
      16. wget "http://$user:$pass@$ip/web/remotecontrol?command=113"&
      17. else
      18. echo "$ip is already muted, just exiting."
      19. fi
      20. rm -f remotecontrol*
      Alles anzeigen

      2.) Lautstärküberwachung während der Ruhezeiten mit automatischer Lautstärkereduzierung. Aufruf über crontab alle Minute

      Shell-Script

      1. root@UbuntuServer:/usr/script# cat CheckVolume.100.sh
      2. #!/bin/sh
      3. Datum=$(date)
      4. user=meinuser
      5. pass=meinpass
      6. ip=192.168.1.100
      7. waittime=0.05
      8. filename=/usr/script/vol.100
      9. Ruhe=$(date +"%H")
      10. if [ $Ruhe -ge 8 -a $Ruhe -le 11 ]
      11. then
      12. exit 0
      13. fi
      14. if [ $Ruhe -ge 15 -a $Ruhe -le 19 ]
      15. then
      16. exit 0
      17. fi
      18. echo "Es herrscht Ruhezeit!!! Script greift ein!"
      19. rm -f $filename
      20. wget --output-document=$filename http://$user:$pass@$ip/web/vol
      21. volume=$(cat $filename | grep e2current | cut -b 5-15 |sed s/[^0-9]//g)
      22. echo $volume
      23. if [ $volume -gt 80 ]
      24. then
      25. wget "http://$user:$pass@$ip/web/message?text=Hier spricht der 'Volume-Watchdog!!!'%0A%0AGanz schön laut eingestellt... :-(%0AIch regele mal von $volume% runter auf 60%...&type=1&timeout=30"
      26. wget "http://$user:$pass@$ip/web/vol?set=set60"
      27. echo "$Datum: Volume exeeded! IP: $ip, Volume set to: $volume%." >> /var/log/volumewatchdog.log
      28. # else
      29. # wget "http://$user:$pass@$ip/web/message?text=Nothing to do for me...&type=1&timeout=10"
      30. fi
      31. rm -f /usr/script/vol\?set\=set60
      32. rm -f /usr/script/message*
      Alles anzeigen

      3.) Anrufanzeige auf der Box inklusive Rückwärtssuche bei dasoertliche (Kombination aus Asterisk dialplan und Linux script:
      3.1) Aufruf des Scriptes aus dem Dialplan der Asterisk (extensions.conf) an geeigneter Stelle:

      Quellcode

      1. [macro-CLILookup]
      2. exten => s,1,NoOp
      3. exten => s,n,Set(clitolookup=${CALLERID(num)})
      4. exten => s,n,System(/etc/asterisk/dasoertliche.sh ${clitolookup})

      3.2) Linux script:

      Shell-Script

      1. [root@VoIPServer]# cat dasoertliche.sh
      2. #!/bin/sh
      3. rm /tmp/name.log
      4. echo "searching for CLI: "$1 >> /var/log/asterisk/das_oertliche_lookup.log
      5. wget -q -O /tmp/step1 "http://www1.dasoertliche.de/?form_name=search_inv&ph="$1
      6. cat /tmp/step1 | grep na: >> /tmp/step2
      7. name_work=$(cat /tmp/step2 | sed 's|["]||g')
      8. name=${name_work#* }
      9. echo $name
      10. if [ -z $name ]
      11. then
      12. echo "Kein Eintrag gefunden"
      13. name="Unbekannt"
      14. else
      15. echo "Eintrag gefunden"
      16. fi
      17. echo $name > /tmp/name.log
      18. rm /tmp/step1
      19. rm /tmp/step2
      Alles anzeigen
      3.3) Weiter verwenden des aufgelösten Namens in der extensions.conf:

      Quellcode

      1. exten => s,n,Set(CALLERID(name)=${FILE(/tmp/name.log)})

      4.) Umschalten einer beliebigen, per http erreichbaren Box per Anruf einer Rufnummer in der Asterisk:
      4.1) Extensions.conf in der Asterisk:


      Quellcode

      1. [macro-choice7]
      2. exten => s,1,NoOp
      3. exten => s,n,Flite(Please enter your choice)
      4. exten => s,n,Flite(1 is Box1)
      5. exten => s,n,Flite(2 is Box2)
      6. exten => s,n,Flite(3 is Box3)
      7. exten => s,n,Flite(4 is Box4)
      8. exten => s,n,Flite(5 is Box5)
      9. exten => s,n,Read(choice,,1,3)
      10. exten => s,n,Flite(Thank you)
      11. exten => s,n,Flite(Now please enter the channel number)
      12. exten => s,n,Read(channel,,4,3)
      13. exten => s,n,Flite(Thank you)
      14. exten => s,n,Flite(Going to change channel now)
      15. exten => s,n,Gotoif($[ ${choice} = 1 ]?101:)
      16. exten => s,n,Gotoif($[ ${choice} = 2 ]?201:)
      17. exten => s,n,Gotoif($[ ${choice} = 3 ]?301:)
      18. exten => s,n,Gotoif($[ ${choice} = 4 ]?401:)
      19. exten => s,n,Gotoif($[ ${choice} = 5 ]?501:)
      20. exten => s,101,NoOp
      21. exten => s,n,System(/etc/asterisk/zap.sh 192.168.1.100 ${channel})
      22. exten => s,n,Flite(Good bye)
      23. exten => s,n,Hangup()
      24. exten => s,201,NoOp
      25. exten => s,n,System(/etc/asterisk/zap.sh 192.168.1.101 ${channel})
      26. exten => s,n,Flite(Good bye)
      27. exten => s,n,Hangup()
      28. exten => s,301,NoOp
      29. exten => s,n,System(/etc/asterisk/zap.sh 192.168.1.102 ${channel})
      30. exten => s,n,Flite(Good bye)
      31. exten => s,n,Hangup()
      32. exten => s,401,NoOp
      33. exten => s,n,System(/etc/asterisk/zap.sh 192.168.1.104 ${channel})
      34. exten => s,n,Flite(Good bye)
      35. exten => s,n,Hangup()
      36. exten => s,501,NoOp
      37. exten => s,n,System(/etc/asterisk/zap.sh 192.168.17.83 ${channel})
      38. exten => s,n,Flite(Good bye)
      39. exten => s,n,Hangup()
      Alles anzeigen

      4.2) Linux script auf der Asterisk zum Umschalten: (Leider habe ich hier noch keinen eleganteren Weg gefunden, die möglichen 4 Ziffern des Kanals umzuschreiben, deswegen die lange if / fi Kette....)

      Shell-Script

      1. [root@VoIPServer asterisk]# cat zap.sh
      2. #!/bin/sh
      3. Datum=$(date)
      4. user=meinuser
      5. pass=meinpass
      6. ip=$1
      7. waittime=0.05
      8. channel=$2
      9. tmpfile=/tmp/channel.zap
      10. rm $tmpfile
      11. echo $2 >> $tmpfile
      12. dig1=$(cat $tmpfile | cut -b 1-1 )
      13. dig2=$(cat $tmpfile | cut -b 2-2 )
      14. dig3=$(cat $tmpfile | cut -b 3-3 )
      15. dig4=$(cat $tmpfile | cut -b 4-4 )
      16. if [ $dig1 = 1 ]
      17. then
      18. com1="2"
      19. fi
      20. if [ $dig1 = 2 ]
      21. then
      22. com1="3"
      23. fi
      24. if [ $dig1 = 3 ]
      25. then
      26. com1="4"
      27. fi
      28. if [ $dig1 = 4 ]
      29. then
      30. com1="5"
      31. fi
      32. if [ $dig1 = 5 ]
      33. then
      34. com1="6"
      35. fi
      36. if [ $dig1 = 6 ]
      37. then
      38. com1="7"
      39. fi
      40. if [ $dig1 = 7 ]
      41. then
      42. com1="8"
      43. fi
      44. if [ $dig1 = 8 ]
      45. then
      46. com1="9"
      47. fi
      48. if [ $dig1 = 9 ]
      49. then
      50. com1="10"
      51. fi
      52. if [ $dig1 = 0 ]
      53. then
      54. com1="11"
      55. fi
      56. if [ $dig2 = 1 ]
      57. then
      58. com2="2"
      59. fi
      60. if [ $dig2 = 2 ]
      61. then
      62. com2="3"
      63. fi
      64. if [ $dig2 = 3 ]
      65. then
      66. com2="4"
      67. fi
      68. if [ $dig2 = 4 ]
      69. then
      70. com2="5"
      71. fi
      72. if [ $dig2 = 5 ]
      73. then
      74. com2="6"
      75. fi
      76. if [ $dig2 = 6 ]
      77. then
      78. com2="7"
      79. fi
      80. if [ $dig2 = 7 ]
      81. then
      82. com2="8"
      83. fi
      84. if [ $dig2 = 8 ]
      85. then
      86. com2="9"
      87. fi
      88. if [ $dig2 = 9 ]
      89. then
      90. com2="10"
      91. fi
      92. if [ $dig2 = 0 ]
      93. then
      94. com2="11"
      95. fi
      96. if [ $dig3 = 1 ]
      97. then
      98. com3="2"
      99. fi
      100. if [ $dig3 = 2 ]
      101. then
      102. com3="3"
      103. fi
      104. if [ $dig3 = 3 ]
      105. then
      106. com3="4"
      107. fi
      108. if [ $dig3 = 4 ]
      109. then
      110. com3="5"
      111. fi
      112. if [ $dig3 = 5 ]
      113. then
      114. com3="6"
      115. fi
      116. if [ $dig3 = 6 ]
      117. then
      118. com3="7"
      119. fi
      120. if [ $dig3 = 7 ]
      121. then
      122. com3="8"
      123. fi
      124. if [ $dig3 = 8 ]
      125. then
      126. com3="9"
      127. fi
      128. if [ $dig3 = 9 ]
      129. then
      130. com3="10"
      131. fi
      132. if [ $dig3 = 0 ]
      133. then
      134. com3="11"
      135. fi
      136. if [ $dig4 = 1 ]
      137. then
      138. com4="2"
      139. fi
      140. if [ $dig4 = 2 ]
      141. then
      142. com4="3"
      143. fi
      144. if [ $dig4 = 3 ]
      145. then
      146. com4="4"
      147. fi
      148. if [ $dig4 = 4 ]
      149. then
      150. com4="5"
      151. fi
      152. if [ $dig4 = 5 ]
      153. then
      154. com4="6"
      155. fi
      156. if [ $dig4 = 6 ]
      157. then
      158. com4="7"
      159. fi
      160. if [ $dig4 = 7 ]
      161. then
      162. com4="8"
      163. fi
      164. if [ $dig4 = 8 ]
      165. then
      166. com4="9"
      167. fi
      168. if [ $dig4 = 9 ]
      169. then
      170. com4="10"
      171. fi
      172. if [ $dig4 = 0 ]
      173. then
      174. com4="11"
      175. fi
      176. echo $ip, $channel, $dig1, $dig2, $dig3, $dig4, $com1, $com2, $com3, $com4
      177. wget -q --spider http://$user:$pass@$ip/web/remotecontrol?command=$com1
      178. sleep $waittime
      179. wget -q --spider http://$user:$pass@$ip/web/remotecontrol?command=$com2
      180. sleep $waittime
      181. wget -q --spider http://$user:$pass@$ip/web/remotecontrol?command=$com3
      182. sleep $waittime
      183. wget -q --spider http://$user:$pass@$ip/web/remotecontrol?command=$com4
      184. sleep $waittime
      185. wget -q --spider http://$user:$pass@$ip/web/remotecontrol?command=352
      Alles anzeigen

      So. Ich bin nun gespannt wie der Thread ankommt, und ob Ihr auch schreibt was Ihr schon so verbrochen habt ;)

      Freue mich auf viele Antworten mit Anregungen für weitere Automatisierung :)
      LG skamm71

      "Alle sagten: Das geht nicht. Dann kam einer, der wusste das nicht und hat's gemacht."