Twitter Üzerinden Server Kontrolü

Twitter'ın sms ile iletim ozelliğini kullanarak serverımla ilgili bilgileri almak uzun suredir duşunduğum birşeydi.Onu bugun gerçekleştirdim.Artık serverımda olup bitenleri belirli aralıklarla cep telefonuma alıyorum.Bu gelen mesajlarda serverdaki toplam bağlantı,syn paketleri,ram ve cpu kullanımı gibi bilgiler içeriyor.Boylelikle herhangi bir olağandışı durumda hemen mudahale etme şansım oldu.Bu sistemi biraz daha geliştirip Twitter uzerinden sistemde komut çalıştırma hatta SmsBlog uygulaması yapacağım.Bunlarla ilgili çalışmalara da çok yakında başlamayı duşunuyorum.

Bu sistem için tweepy kullandım.Bunu kurmak için oncelikle aşağıdaki komutu girmeniz lazım.

easy_install tweepy

Veya

pip install tweepy

Daha sonra buradaki linkle girip gerekli yerleri dolduruyoruz.Daha sonra Create Your Twitter App dedikten sonra uygulamamız karşımıza gelecek.Burada Settings sekmesinden Access bolumune geçip Read, Write and Access direct messages'ı seçiyoruz.OAuth tool sekmesinden bulunan Consumer key: ile Consumer secret: lerimizi bir kenara kaydediyoruz.

ACCESS_KEY ve ACCESS_SECRET imizi oğrenmek için bir ufak bir kod yazmamız lazım.

#!/usr/bin/env python
import tweepy
CONSUMER_KEY = 'consumer_key buraya yazin'
CONSUMER_SECRET = 'consumer_secret buraya yazin'
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth_url = auth.get_authorization_url()
print 'Onaylama: ' + auth_url
verifier = raw_input('PIN: ').strip()
auth.get_access_token(verifier)
print "ACCESS_KEY = '%s'" % auth.access_token.key
print "ACCESS_SECRET = '%s'" % auth.access_token.secret

Yukarıdaki kodumuzu python ile çalıştırdıktan sonra onumuze bir link çıkacak.O linke giriş yaptığımızda pin kodu ekrana gelecek.O pin kodunu konsolda bekleyen satıra yazıyoruz.Boylelikle bize ACCESS_KEY ile ACCESS_SECRET kodumuzu geri dondurecek.

Şimdi de deneme tweetimizi atalım.Aşağıdaki kod ile serverınızla ilgili bazı bilgileri alabilirsiniz.

#!/usr/bin/env python
import tweepy
import os
import commands
consumer_anahtari = 'consumer_key yaziniz'
consumer_gizli = 'consumer_secret yaziniz'
giris_anahtari = 'access_key yaziniz'
giris_gizli = 'access_secret yaziniz'
baglanti = commands.getoutput('echo `netstat -an|wc -l`')
load = commands.getoutput("""uptime | awk -F "load average: " '{ print $2 }' | cut -d, -f1 | cut -d. -f1""")
syn = commands.getoutput('netstat -n | grep SYN | wc -l')
memory = commands.getoutput("""free -t -m | grep "Total" | awk '{ print "Kullanilan : "$3" MB Bosta : "$4" MB";}'""")
auth = tweepy.OAuthHandler(consumer_anahtari, consumer_gizli)
auth.set_access_token(giris_anahtari, giris_gizli)
api = tweepy.API(auth)

api.update_status("Toplam " + baglanti + " baglanti var.Sistem load su anda " + load + " .Toplam " + syn + " syn paketi bulundu. " + memory + " ." )

Örnek twitter gonderisi aşağıdaki gibi oluyor.Sizde yukarıdaki kodda değişiklikler yapıp istediğiniz herhangi bir komutu çalıştırıp twittera bildirebilirsiniz.Yukarıda yer alan commands.getoutput(' ') içine istediğiniz bir komutu çalıştırabilirsiniz.Örneğin nginx'e restart attırabilir,cacheleri boşaltabilir,sql yedeğinizi alabilirsiniz.Bundan sonrası sizin hayal gucunuze kalıyor.

HDBlog Twitter

Ve cep telefonuma gelen sms orneği.

HDBlog Sms Status Sender

Yukarıdaki dosyayı python dosyası olarak kaydedip cronjob eklerseniz belirli aralıklarla twitter'a gonderebilirsiniz.Bunun için crontab -e komutu ile cron listenizi açın ve aşağıdaki satırı ekleyin.(Aşağıdaki satır ile dosyayı 4 saatte bir çalıştırabilirsiniz.Eğer başka zamanlarda çalıştırmak isterseniz google'da crontab kullanımı diye aratabilirsiniz.)

0 */4 * * * /usr/bin/python /root/hdblogstatus.py

Twitter Python

Artık 4 saatte bir server durumunu tweet olarak atıyoruz.Sıra bu bilgileri telefonumuza almakta.Bunun için twitterımıza giriş yapıp buradaki bolume geçiyoruz.Burada yer alan Cep telefonu bildirimlerini etkinleştirdiğin kişilerden gelen tweetler sekmesini işaretliyoruz.Daha sonrada bilgilerimizi paylaştığımız twitter hesabına girip mobil bildirimleri açıyoruz.

Butun bunları yaptığınızda 4 saatte bir 2444'ten server bilgilerinizi içeren bir sms almanız lazım.Şimdilik bu kadarı benim işimi goruyor.Siz kodu geliştirip ihtiyaçlarınız doğrultusunda geliştirebilirsiniz.

Önemli Not: Bilgilerinizi paylaştığınız twitter hesabının tweetlerini koruma altına almaya unutmayınız.Ve tanımadığınız kişilerin bu bilgilere erişmemesini sağlayınız.

Yukarıdaki python kodunu buradanda indirebilirsiniz.

comments powered by Disqus