From b77098654bf7db7aef8682876ede5893f37ff2b8 Mon Sep 17 00:00:00 2001 From: moita69 Date: Wed, 13 Jul 2016 12:15:17 -0300 Subject: [PATCH 1/6] Update speedcomplainer.py Fix from Api to api into line 138 file speedcomplainer.py --- speedcomplainer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/speedcomplainer.py b/speedcomplainer.py index e861e6b..54e232b 100755 --- a/speedcomplainer.py +++ b/speedcomplainer.py @@ -135,7 +135,7 @@ def tweetResults(self, speedTestResults): message = messages[random.randint(0, len(messages) - 1)].replace('{tweetTo}', self.config['tweetTo']).replace('{internetSpeed}', self.config['internetSpeed']).replace('{downloadResult}', str(speedTestResults['downloadResult'])) if message: - api = twitter.Api(consumer_key=self.config['twitter']['twitterConsumerKey'], + api = twitter.api(consumer_key=self.config['twitter']['twitterConsumerKey'], consumer_secret=self.config['twitter']['twitterConsumerSecret'], access_token_key=self.config['twitter']['twitterToken'], access_token_secret=self.config['twitter']['twitterTokenSecret']) From 17b0316e79b4cf113664718455484f280651fb5b Mon Sep 17 00:00:00 2001 From: moita69 Date: Sun, 17 Jul 2016 18:08:43 -0300 Subject: [PATCH 2/6] speedcomplainer works --- speedcomplainer.py | 82 +++++++++++++++++++++++++++++++++++++--------- 1 file changed, 66 insertions(+), 16 deletions(-) diff --git a/speedcomplainer.py b/speedcomplainer.py index 54e232b..7ee0e0e 100755 --- a/speedcomplainer.py +++ b/speedcomplainer.py @@ -9,7 +9,8 @@ import json import random from logger import Logger - +import oauth as OAuth +from twython import Twython shutdownFlag = False def main(filename, argv): @@ -25,20 +26,23 @@ def main(filename, argv): while not shutdownFlag: try: - + print("runing monitor time: "+str(datetime.now())) monitor.run() - - for i in range(0, 5): + #print("runed monitor time: ",datetime.now()) + for i in range(0, 6): if shutdownFlag: break - time.sleep(1) + time.sleep(10) + #print("click sleep time: ",datetime.now()) except Exception as e: - print 'Error: %s' % e + print 'Error01: %s' % e sys.exit(1) sys.exit() + + def shutdownHandler(signo, stack_frame): global shutdownFlag print 'Got shutdown signal (%s: %s).' % (signo, stack_frame) @@ -48,15 +52,36 @@ class Monitor(): def __init__(self): self.lastPingCheck = None self.lastSpeedTest = None + #testing twitter connection purpose + #self.twitterAuth() + def twitterAuth(self): + + print ("twitter api initialization") + self.config = json.load(open('./config.json')) + TOKEN=self.config['twitter']['twitterTokenSecret'] + CON_SEC_KEY=self.config['twitter']['twitterConsumerKey'] + CON_SEC=self.config['twitter']['twitterConsumerSecret'] + TOKEN_KEY=self.config['twitter']['twitterToken'] + twitter = Twython(CON_SEC_KEY, CON_SEC,TOKEN_KEY, TOKEN) + twitter.update_status(status='See how easy using Twython is!') + #my_auth = twitter.OAuth(TOKEN,TOKEN_KEY,CON_SEC,CON_SEC_KEY) + #twit = twitter.Twitter(auth=my_auth) + #twit.statuses.update(status="I'm tweeting from Python!") + #api = twitter.api.Twitter(auth=OAuth(consumer_key=tck,consumer_secret=tcs,access_token_key=ttk,access_token_secret=tts)) + print ("twitter api initialized") + def run(self): if not self.lastPingCheck or (datetime.now() - self.lastPingCheck).total_seconds() >= 60: self.runPingTest() self.lastPingCheck = datetime.now() + print("ping test executed") - if not self.lastSpeedTest or (datetime.now() - self.lastSpeedTest).total_seconds() >= 3600: + #if not self.lastSpeedTest or (datetime.now() - self.lastSpeedTest).total_seconds() >= 3600: + if not self.lastSpeedTest or (datetime.now() - self.lastSpeedTest).total_seconds() >= 300: self.runSpeedTest() self.lastSpeedTest = datetime.now() + print("Speed test executed") def runPingTest(self): pingThread = PingTest() @@ -84,6 +109,7 @@ def doPingTest(self): success = 0 if response == 0: success = 1 + print("success:"+str(success)) return { 'date': datetime.now(), 'success': success } def logPingResults(self, pingResults): @@ -101,16 +127,18 @@ def run(self): self.tweetResults(speedTestResults) def doSpeedTest(self): + print "Starting speedtest" # run a speed test result = os.popen("/usr/local/bin/speedtest-cli --simple").read() if 'Cannot' in result: return { 'date': datetime.now(), 'uploadResult': 0, 'downloadResult': 0, 'ping': 0 } - + print "result: "+str(result) # Result: # Ping: 529.084 ms # Download: 0.52 Mbit/s # Upload: 1.79 Mbit/s - + #import pdb; pdb.set_trace() + resultSet = result.split('\n') pingResult = resultSet[0] downloadResult = resultSet[1] @@ -120,10 +148,12 @@ def doSpeedTest(self): downloadResult = float(downloadResult.replace('Download: ', '').replace(' Mbit/s', '')) uploadResult = float(uploadResult.replace('Upload: ', '').replace(' Mbit/s', '')) + print ("Done speedtest") return { 'date': datetime.now(), 'uploadResult': uploadResult, 'downloadResult': downloadResult, 'ping': pingResult } def logSpeedTestResults(self, speedTestResults): self.logger.log([ speedTestResults['date'].strftime('%Y-%m-%d %H:%M:%S'), str(speedTestResults['uploadResult']), str(speedTestResults['downloadResult']), str(speedTestResults['ping']) ]) + print("Done log") def tweetResults(self, speedTestResults): @@ -132,15 +162,35 @@ def tweetResults(self, speedTestResults): for (threshold, messages) in thresholdMessages.items(): threshold = float(threshold) if speedTestResults['downloadResult'] < threshold: - message = messages[random.randint(0, len(messages) - 1)].replace('{tweetTo}', self.config['tweetTo']).replace('{internetSpeed}', self.config['internetSpeed']).replace('{downloadResult}', str(speedTestResults['downloadResult'])) - + #message = messages[random.randint(0, len(messages) - 1)].replace('{tweetTo}', self.config['tweetTo']).replace('{internetSpeed}', self.config['internetSpeed']).replace('{downloadResult}', str(speedTestResults['downloadResult'])) + message = messages[0].replace('{tweetTo}', self.config['tweetTo']).replace('{internetSpeed}', self.config['internetSpeed']).replace('{downloadResult}', str(speedTestResults['downloadResult'])) + print ("message:",message) if message: - api = twitter.api(consumer_key=self.config['twitter']['twitterConsumerKey'], - consumer_secret=self.config['twitter']['twitterConsumerSecret'], - access_token_key=self.config['twitter']['twitterToken'], - access_token_secret=self.config['twitter']['twitterTokenSecret']) + #api = twitter.api(consumer_key=self.config['twitter']['twitterConsumerKey'], + # consumer_secret=self.config['twitter']['twitterConsumerSecret'], + # access_token_key=self.config['twitter']['twitterToken'], + # access_token_secret=self.config['twitter']['twitterTokenSecret']) + #TOKEN_KEY=self.config['twitter']['twitterTokenSecret'] + #CON_SEC_KEY=self.config['twitter']['twitterConsumerKey'] + #CON_SEC=self.config['twitter']['twitterConsumerSecret'] + #TOKEN=self.config['twitter']['twitterToken'] + #my_auth = twitter.OAuth(TOKEN,TOKEN_KEY,CON_SEC,CON_SEC_KEY) + #twit = twitter.Twitter(auth=my_auth) + TOKEN=self.config['twitter']['twitterTokenSecret'] + CON_SEC_KEY=self.config['twitter']['twitterConsumerKey'] + CON_SEC=self.config['twitter']['twitterConsumerSecret'] + TOKEN_KEY=self.config['twitter']['twitterToken'] + api = Twython(CON_SEC_KEY, CON_SEC,TOKEN_KEY, TOKEN) + if api: - status = api.PostUpdate(message) + #status = api.PostUpdate(message) + #twit.statuses.update(status=message) + api.update_status(status=message) + else: + print ("No API") + else: + print ("No message") + print("Done tweetResult") class DaemonApp(): def __init__(self, pidFilePath, stdout_path='/dev/null', stderr_path='/dev/null'): From ef1e6502e8641dbe5c58b46d8fc96d4540ef24e8 Mon Sep 17 00:00:00 2001 From: moita69 Date: Sun, 17 Jul 2016 18:10:10 -0300 Subject: [PATCH 3/6] installation file --- installation | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 installation diff --git a/installation b/installation new file mode 100644 index 0000000..4915c88 --- /dev/null +++ b/installation @@ -0,0 +1,5 @@ +sudo pip install daemon +sudo pip install twitter +sudo apt-get install speedtest-cli +sudo ln -s /usr/bin/speedtest-cli /usr/local/bin/speedtest-cli + From 5c1b870a431a53701cfab1ebda3a4671783545d9 Mon Sep 17 00:00:00 2001 From: moita69 Date: Thu, 21 Jul 2016 12:59:26 -0300 Subject: [PATCH 4/6] Added windows suport, testing needed --- installation | 7 ++--- speedcomplainer.py | 67 +++++++++++++++++++++++++++++++--------------- 2 files changed, 49 insertions(+), 25 deletions(-) diff --git a/installation b/installation index 4915c88..f2ca1b1 100644 --- a/installation +++ b/installation @@ -1,5 +1,6 @@ sudo pip install daemon -sudo pip install twitter -sudo apt-get install speedtest-cli -sudo ln -s /usr/bin/speedtest-cli /usr/local/bin/speedtest-cli + +sudo pip install twython +sudo pip install speedtest-cli +sudo pip install oauth \ No newline at end of file diff --git a/speedcomplainer.py b/speedcomplainer.py index 7ee0e0e..7898122 100755 --- a/speedcomplainer.py +++ b/speedcomplainer.py @@ -5,7 +5,6 @@ import daemon import signal import threading -import twitter import json import random from logger import Logger @@ -23,9 +22,10 @@ def main(filename, argv): signal.signal(signal.SIGINT, shutdownHandler) monitor = Monitor() - + time.sleep(10) while not shutdownFlag: try: + print ("*********************##**************************") print("runing monitor time: "+str(datetime.now())) monitor.run() #print("runed monitor time: ",datetime.now()) @@ -34,7 +34,7 @@ def main(filename, argv): break time.sleep(10) #print("click sleep time: ",datetime.now()) - + print ("####################**#######################") except Exception as e: print 'Error01: %s' % e sys.exit(1) @@ -65,6 +65,7 @@ def twitterAuth(self): TOKEN_KEY=self.config['twitter']['twitterToken'] twitter = Twython(CON_SEC_KEY, CON_SEC,TOKEN_KEY, TOKEN) twitter.update_status(status='See how easy using Twython is!') + #import twitter #my_auth = twitter.OAuth(TOKEN,TOKEN_KEY,CON_SEC,CON_SEC_KEY) #twit = twitter.Twitter(auth=my_auth) #twit.statuses.update(status="I'm tweeting from Python!") @@ -75,13 +76,13 @@ def run(self): if not self.lastPingCheck or (datetime.now() - self.lastPingCheck).total_seconds() >= 60: self.runPingTest() self.lastPingCheck = datetime.now() - print("ping test executed") + print("ping test started") #if not self.lastSpeedTest or (datetime.now() - self.lastSpeedTest).total_seconds() >= 3600: if not self.lastSpeedTest or (datetime.now() - self.lastSpeedTest).total_seconds() >= 300: self.runSpeedTest() self.lastSpeedTest = datetime.now() - print("Speed test executed") + print("Speed test started\n") def runPingTest(self): pingThread = PingTest() @@ -105,11 +106,23 @@ def run(self): self.logPingResults(pingResults) def doPingTest(self): - response = os.system("ping -c %s -W %s -w %s 8.8.8.8 > /dev/null 2>&1" % (self.numPings, (self.pingTimeout * 1000), self.maxWaitTime)) + print ("["+str(self.ident)+"] executando ping \n") + #import pdb; pdb.set_trace() + if "win" in sys.platform: + #Windows response + response = os.system("ping -n %s -w %s www.google.com " % (self.numPings, self.maxWaitTime)) + elif "linux" in sys.platform: + #linux response + response = os.system("ping -c %s -W %s -w %s 8.8.8.8 > /dev/null 2>&1" % (self.numPings, (self.pingTimeout * 1000), self.maxWaitTime)) + else: + print("["+str(self.ident)+"] Sistema nao suportado") + response=1 + + print ("["+(str(self.ident)+"] Response:"+str(response)+"\n")) success = 0 if response == 0: success = 1 - print("success:"+str(success)) + print("["+str(self.ident)+"] success:"+str(success)+"\n") return { 'date': datetime.now(), 'success': success } def logPingResults(self, pingResults): @@ -127,9 +140,9 @@ def run(self): self.tweetResults(speedTestResults) def doSpeedTest(self): - print "Starting speedtest" + print ("["+str(self.ident)+"] Starting speedtest \n") # run a speed test - result = os.popen("/usr/local/bin/speedtest-cli --simple").read() + result = os.popen("speedtest-cli --simple").read() if 'Cannot' in result: return { 'date': datetime.now(), 'uploadResult': 0, 'downloadResult': 0, 'ping': 0 } print "result: "+str(result) @@ -140,20 +153,26 @@ def doSpeedTest(self): #import pdb; pdb.set_trace() resultSet = result.split('\n') - pingResult = resultSet[0] - downloadResult = resultSet[1] - uploadResult = resultSet[2] - + try: + pingResult = resultSet[0] + downloadResult = resultSet[1] + uploadResult = resultSet[2] + except Exception as e: + pingResult = "Ping: 0.0 ms" + downloadResult = "Download: 0.0 Mbit/s" + uploadResult = "Upload: 0.0 Mbit/s" + print "["+str(self.ident)+"] ErrorISP Tratado: %s" % e + pingResult = float(pingResult.replace('Ping: ', '').replace(' ms', '')) downloadResult = float(downloadResult.replace('Download: ', '').replace(' Mbit/s', '')) uploadResult = float(uploadResult.replace('Upload: ', '').replace(' Mbit/s', '')) - print ("Done speedtest") + print ("["+str(self.ident)+"] Done speedtest") return { 'date': datetime.now(), 'uploadResult': uploadResult, 'downloadResult': downloadResult, 'ping': pingResult } def logSpeedTestResults(self, speedTestResults): self.logger.log([ speedTestResults['date'].strftime('%Y-%m-%d %H:%M:%S'), str(speedTestResults['uploadResult']), str(speedTestResults['downloadResult']), str(speedTestResults['ping']) ]) - print("Done log") + print("["+str(self.ident)+"] Done log") def tweetResults(self, speedTestResults): @@ -161,11 +180,12 @@ def tweetResults(self, speedTestResults): message = None for (threshold, messages) in thresholdMessages.items(): threshold = float(threshold) - if speedTestResults['downloadResult'] < threshold: - #message = messages[random.randint(0, len(messages) - 1)].replace('{tweetTo}', self.config['tweetTo']).replace('{internetSpeed}', self.config['internetSpeed']).replace('{downloadResult}', str(speedTestResults['downloadResult'])) - message = messages[0].replace('{tweetTo}', self.config['tweetTo']).replace('{internetSpeed}', self.config['internetSpeed']).replace('{downloadResult}', str(speedTestResults['downloadResult'])) - print ("message:",message) + if speedTestResults['downloadResult'] < threshold and speedTestResults['downloadResult'] != 0.0: + message = messages[random.randint(0, len(messages) - 1)].replace('{tweetTo}', self.config['tweetTo']).replace('{internetSpeed}', self.config['internetSpeed']).replace('{downloadResult}', str(speedTestResults['downloadResult'])) + print ("["+str(self.ident)+"] message:",message) if message: + + #import twitter #api = twitter.api(consumer_key=self.config['twitter']['twitterConsumerKey'], # consumer_secret=self.config['twitter']['twitterConsumerSecret'], # access_token_key=self.config['twitter']['twitterToken'], @@ -187,10 +207,13 @@ def tweetResults(self, speedTestResults): #twit.statuses.update(status=message) api.update_status(status=message) else: - print ("No API") + print ("["+str(self.ident)+"] No API") else: - print ("No message") - print("Done tweetResult") + if speedTestResults['downloadResult'] == 0.0: + print("["+str(self.ident)+"] speedtest-cli: Mensasen nao enviada do por fala de conectividade ou plataforma nao suportada") + else: + print ("["+str(self.ident)+"] Internet dentro dos padroes estabelecidos") + print("["+str(self.ident)+"] Done tweetResult") class DaemonApp(): def __init__(self, pidFilePath, stdout_path='/dev/null', stderr_path='/dev/null'): From 68ae3916cdd73a225dc3f5050d43d5b2675edc98 Mon Sep 17 00:00:00 2001 From: moita69 Date: Thu, 21 Jul 2016 13:03:35 -0300 Subject: [PATCH 5/6] Add files via upload --- speedcomplainer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/speedcomplainer.py b/speedcomplainer.py index 7898122..2c6bb3e 100755 --- a/speedcomplainer.py +++ b/speedcomplainer.py @@ -8,7 +8,7 @@ import json import random from logger import Logger -import oauth as OAuth +#import oauth as OAuth from twython import Twython shutdownFlag = False From c5acf8716efb150ca443cacb64dbcda0eb995df5 Mon Sep 17 00:00:00 2001 From: moita69 Date: Thu, 21 Jul 2016 14:55:52 -0300 Subject: [PATCH 6/6] Add files via upload --- speedcomplainer.py | 1 + 1 file changed, 1 insertion(+) diff --git a/speedcomplainer.py b/speedcomplainer.py index 2c6bb3e..2176623 100755 --- a/speedcomplainer.py +++ b/speedcomplainer.py @@ -116,6 +116,7 @@ def doPingTest(self): response = os.system("ping -c %s -W %s -w %s 8.8.8.8 > /dev/null 2>&1" % (self.numPings, (self.pingTimeout * 1000), self.maxWaitTime)) else: print("["+str(self.ident)+"] Sistema nao suportado") + print("["+str(self.ident)+"] "+str(sys.platform)) response=1 print ("["+(str(self.ident)+"] Response:"+str(response)+"\n"))