Guest User

Untitled

a guest
Jan 3rd, 2019
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.41 KB | None | 0 0
  1. #!/usr/local/ruby-2.2.7/bin/ruby
  2.  
  3. require 'net/ssh'
  4.  
  5. class CheckMGsForHungCalls
  6.  
  7. ASTERISK_RX = '/usr/sbin/asterisk -rx '
  8.  
  9. def initialize(username="aguevara",password="LIMA peru 2",count=0)
  10.  
  11. @count = count
  12. @username = username
  13. @password = password
  14.  
  15. usage if ARGV[0].nil?
  16. $arg0 = ARGV[0]
  17.  
  18. case $arg0
  19. when "help", "--help", "-h"
  20. usage
  21. end
  22. end
  23.  
  24. def usage
  25. puts "\n\n Usage: drop_hung_call.rb <10 digit telephone number or extension>\n\n"
  26. puts " Only current supported option is help.\n"
  27. puts " Options:\n help, --help, -h, Display this help messgage.\n\n"
  28. exit
  29. end
  30.  
  31. def wait_for_user_input(prompt)
  32. print "#{prompt} "
  33. @ans = STDIN.gets.chomp
  34. #pass
  35. end
  36.  
  37. def hangup_channel(server, channel)
  38. if channel.to_s.match("SIP\/[0-9a-z]+-[0-9a-z]+")
  39. wait_for_user_input("Hangup channel -> [#{channel}](\"YES\")? ")
  40. if @ans.to_s.match("YES")
  41. tunnel(server, "soft hangup #{channel}")
  42. else
  43. puts "SIP channel [#{channel}] was not hung up. GOOD BYE!"
  44. end
  45. else
  46. puts "#{channel} is not a known SIP channel. GOOD BYE!"
  47. exit
  48. end
  49. end
  50.  
  51. @@channel = {}
  52. def tunnel(server, ast_command)
  53. begin
  54. Net::SSH.start(server, @username, :password => @password) do |ssh|
  55. #@showCalls = ssh.exec!("#{ASTERISK_RX}'#{ast_command}'")
  56. @@channel[server] = ssh.exec!("#{ASTERISK_RX}'#{ast_command}'")
  57. end
  58. rescue Exception => e
  59. puts "Exception e => #{e}"
  60. puts "Unable to connect to #{server} using #{@username}/#{@password}"
  61. end
  62. end
  63.  
  64. def asterisk_rx(number)
  65. #for server in ["mg0","mg1","mg2","mg3","mg4","mg5","mg6","pl-mg0","vhpbx0","vhpbx1","vhpbx2","vhpbx3","vhpbx4","pbx"] do
  66. for server in ["mg0","mg1","mg2","mg3","mg4","mg5","mg6","pl-mg0"] do
  67. tunnel(server, 'core show channels verbose')
  68. end
  69. @@channel.each do |server,channel|
  70. if channel =~ /^(PJSIP|SIP).*#{number}.*\b/
  71. @count = 0 # Re-initialize @count
  72. (print "\n(Server)[#{server}]\n"; puts channel.scan(/SIP.*#{number}.*/))
  73. else
  74. @count += 1
  75. end
  76. (puts "Telephone number #{number} not found!"; return) if @count == 8
  77. end
  78. wait_for_user_input("Enter a SIP channel to hangup: ")
  79. @@channel.each do |key,val|
  80. hangup_channel(key, @ans) if val =~ /#{@ans}/
  81. end
  82. end
  83.  
  84. end
  85.  
  86. mgCheck = CheckMGsForHungCalls.new
  87. mgCheck.asterisk_rx(ARGV[0])
Add Comment
Please, Sign In to add comment