Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Yeni versiyon #4

Open
wants to merge 54 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
69e82dc
devam edecek.
RecNes Apr 11, 2015
3287155
gereksiz print silindi
RecNes Apr 11, 2015
d5e9896
dosya adı değiştirildi
RecNes Apr 11, 2015
842a38e
Automatic update
RecNes Apr 11, 2015
5c7a850
Automatic update
RecNes Apr 11, 2015
76554a1
Automatic update
RecNes Apr 11, 2015
8724bbc
Automatic update
RecNes Apr 11, 2015
f874496
Automatic update
RecNes Apr 11, 2015
b7c0f7d
Automatic update
RecNes Apr 11, 2015
68d0cdb
script tamamlandı.
RecNes Apr 11, 2015
ae3ad13
gereksiz bash script silindi.
RecNes Apr 11, 2015
6ab9e54
Create README.md
RecNes Apr 11, 2015
b99799f
Readme eklendi.
RecNes Apr 11, 2015
ca7b016
Automatic update
RecNes Apr 11, 2015
d63158e
Readme geliştirildi.
RecNes Apr 11, 2015
45d3d4f
Readme geliştirildi.
RecNes Apr 11, 2015
17bdd03
Readme geliştirildi.
RecNes Apr 11, 2015
87f60c3
Readme geliştirildi.
RecNes Apr 11, 2015
2aed4bc
Readme geliştirildi.
RecNes Apr 11, 2015
fb415db
Readme geliştirildi. Eksikler giderildi.
RecNes Apr 12, 2015
47ced6e
Readme geliştirildi. Eksikler giderildi.
RecNes Apr 12, 2015
85e11fe
Readme geliştirildi. Eksikler giderildi.
RecNes Apr 12, 2015
76701de
Readme geliştirildi. Eksikler giderildi.
RecNes Apr 12, 2015
e75233e
Readme geliştirildi. Eksikler giderildi.
RecNes Apr 12, 2015
a755dcb
Automatic update
RecNes Apr 12, 2015
2671732
Automatic update
RecNes Apr 12, 2015
57208f0
Readme geliştirildi. Eksikler giderildi.
RecNes Apr 12, 2015
e46d320
Automatic update
RecNes Apr 12, 2015
c089750
Automatic update
RecNes Apr 12, 2015
7fa3f23
Automatic update
RecNes Apr 12, 2015
3c1278b
Automatic update
RecNes Apr 12, 2015
bc5eaba
Automatic update
RecNes Apr 12, 2015
19dad38
.
RecNes Apr 12, 2015
221e0d5
.
RecNes Apr 12, 2015
67c9c9e
Automatic update
RecNes Apr 12, 2015
98fa3f0
Automatic update
RecNes Apr 12, 2015
794bb0b
Git push için belirtilen depo isimlerindeki hata giderildi.
RecNes Apr 12, 2015
e599f7e
Automatic update
RecNes Apr 12, 2015
272626c
Delete index.html
RecNes Apr 12, 2015
d9f08c6
Delete index.html
RecNes Apr 12, 2015
42cbbf2
Automatic update
RecNes Apr 12, 2015
67539ed
.
RecNes Apr 12, 2015
dad131c
Merge branch 'master' of github.com:RecNes/wifisayar
RecNes Apr 12, 2015
7107b5e
Merge branch 'gh-pages' of github.com:RecNes/wifisayar
RecNes Apr 12, 2015
a157647
Automatic update
RecNes Apr 12, 2015
4eb11df
Oluşturulan index dosyasının otomatik olarak brancha eklenmesi sağlan…
RecNes Apr 12, 2015
df58af7
Oluşturulan index dosyasının otomatik olarak brancha eklenmesi sağlan…
RecNes Apr 12, 2015
69bf7be
Readme dosyasına gereksinimler eklendi.
RecNes Apr 12, 2015
de8f328
Açıklama eklendi.
RecNes Apr 12, 2015
9d514f0
docstring'deki crontab örneği düzeltildi.
RecNes Apr 13, 2015
d608181
docstring'deki crontab örneği düzeltildi.
RecNes Apr 13, 2015
b434320
arrow harici modülünden arındırıldı.
RecNes Apr 13, 2015
d1d2ff0
Merge remote-tracking branch 'origin/master'
RecNes Apr 13, 2015
145619d
gereksiz değişken oluşturumalardan kaçınıldı.
RecNes Apr 13, 2015
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 67 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# SAKKIBU
## Şu Anda Kaç Kişi Burada uygulaması
(İzmir Hackerspace Wifi Sayar uygulaması forkudur.)

## Gereksinimler

Aşağıdaki gereksinimler scriptin çalışacağı client'da kurulu olması gerekmektedir.

- Python3
- Python-nmap
- Nmap
- Git Client

## Hazırlık

- Github hesabınıza giriş yapın.
- Bu projeyi kendi hesabınıza klonlayın.
- Bu scriptin çalışacağı cihazda bir id_rsa.pub dosyası oluşturun ve GitHub hesabınıza ekleyin.
- https://pages.github.com/ adresine gidin ve aşağıdaki adımları takip edin:

- "Roll vanilla, or generate a site for your project" kısmından **"Project site"** seçin
- "Generate a site, or start from scratch?" kısmında **"Start from scratch"** seçin


- Projenin depo sayfasına geri dönün ve "gh-pages" adında bir "Branch" oluşturun.
- Son olarak SAKKIBU scriptini cihazınızda id_rsa.pub dosyası oluşturulmuş olan kullanıcı ile çalıştırın:


# python3 sakkibu.py -p

## Kullanım
Bu script nmap ile yerel ağa bağlı olan cihazların kaç tane olduğunu sayar ve
hariç tutulacak olanlar listesinde bulunanları toplamdan düşüp, görüntülenebilir
bir html dosyasına yazdıktan sonra dosyayı github_pages'de yayınlanması için
otomatik olarak github depsuna gönderir.

Bu işlemin çalışması için öncelikle bir github hesabınızın olması gerekmektedir.
Ve ayrıca github_pages oluşturmuş olmanız ve **GitHub().commit_and_tag()** metodunda
**self.system("git", "push", "origin", "gh-pages")** satırındaki parametreleri
değiştirerek hangi depoya gönderilmesi gerektiğini belirtmeniz gerekiyor.

Komutu konsoldan çalıştırmak için:

# python3 sakkibu.py -h|[-d,-a,-p]

-h | --help Bu yardım dokümanını gösterir.
-d | --dry-run Scriptin dosya oluşturmadan sadece işlem çıktısı vermesini sağlar.
(Sayımı yap ve ekrana istatistikleri bas.)
-a | --all Her türlü çıktıyı görüntüler. (Dikkat log dosyasını şişirebilir.)
-p | --push Scriptin hazırlanan HTML'i depoya göndermesini sağlar.


Scriptin otomatik olarak belirli aralıklar ile çalışmasını sağlamak için cronjob
oluşturabilirsiniz. Bunun için kullanıcının crontab listesine "crontab -e" komutu
ile erişi aşağıdaki 10'ar dakikalık zaman dilimlerinde yinelenmesi için ayarlanmş
görevi ekleyebilirsiniz:

*/10 * * * python3 sakkibu.py -p 2>&1

Şuy andan itibaren oluşturulup gönderilecek HTML'i github_pages'de görebilirsiniz.
Adres olarak github_pages'i oluştururken görmüşolduğunuz şablon kullanılır:


http://kullanici_adi.github.io/depo_adi/


Bu adresi \<iframe\> ile istediğiniz yerden çağırabilirsiniz.
1 change: 1 addition & 0 deletions index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Açık, 2 cihaz bağlı<br /><small>Son Kontrol: 12.04.2015 21:09</small>
51 changes: 0 additions & 51 deletions mekan1.py

This file was deleted.

4 changes: 0 additions & 4 deletions mountsshfs.sh

This file was deleted.

165 changes: 165 additions & 0 deletions sakkibu.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,165 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Şu anda kaç kişi burada uygulaması İzmir Hackerspace 12.2014

Geliştiriciler :
Ramazan Subaşı, Doğukan Güven, Sencer Hamarat

Son Güncelleme: 04.2015
"""
try:
import os, sys, datetime, nmap, getopt
except Exception as e:
print(e, u"\n Gerekli modül yüklenemedi.")
sys.exit(2)


class GitHub():
def __init__(self, filetopush):
self.filetopush = filetopush

@staticmethod
def shell_quote(arguments):
def quote(string):
return "\\'".join("'" + p + "'" for p in string.split("'"))
return " ".join(map(quote, arguments))

def system(self, *arguments):
return os.system(self.shell_quote(arguments))

def commit_and_tag(self):
self.system("git", "add", "-A") # Güvenlik zaafiyeti ihtimali yaratır. Kontrol altına almak gerek.
self.system("git", "commit", self.filetopush, "-m", "Automatic update")
self.system("git", "push", "origin", "master:gh-pages")


class SAKKIBU():
"""
Bu script nmap ile yerel ağa bağlı olan cihazların kaç tane olduğunu sayar ve
hariç tutulacak olanlar listesinde bulunanları toplamdan düşüp, görüntülenebilir
bir html dosyasına yazdıktan sonra dosyayı github_pages'de yayınlanması için
otomatik olarak github depsuna gönderir.

Bu işlemin çalışması için öncelikle bir github hesabınızın olması gerekmektedir.
Ve ayrıca github_pages oluşturmuş olmanız ve GitHub().commit_and_tag() metodunda
hangi depoya gönderilmesi gerektiğini belirtmeniz gerekiyor.

Komutu konsoldan çalıştırmak için:

# pytohn3 sakkibu.py -h|[-d,-a,-p]

-h | --help Bu yardım dokümanını gösterir.
-d | --dry-run Scriptin dosya oluşturmadan sadece işlem çıktısı vermesini sağlar.
(Sayımı yap ve ekrana istatistikleri bas.)
-a | --all Ağdaki bütün cihazları (hariç tutulanları da) sayıma ekler.
-p | --push Scriptin hazırlanan HTML'i depoya göndermesini sağlar.


Scriptin otomatik olarak belirli aralıklar ile çalışmasını sağlamak için cronjob
oluşturabilirsiniz. Bunun için kullanıcının crontab listesine "crontab -e" komutu
ile erişip aşağıdaki 10'ar dakikalık zaman dilimlerinde yinelenmesi için ayarlanmş
görevi ekleyebilirsiniz:

*/10 * * * python3 sakkibu.py -p 2>&1
"""
def __init__(self, argv):
self.argv = argv
self.message_text = str()
self.hosts_list = list()
self.display_all, self.dry_run, self.push = False, False, False
self.time_stamp = datetime.datetime.now().strftime("%d.%m.%Y %H:%M")
self.html_file = os.path.join(os.path.abspath('.'), 'index.html')
self.ip_block = '192.168.1.0/24'
self.exceptional_ips = [
# ip_address host_type reason
'192.168.1.1', # Router always on
'192.168.1.250', # Raspi1 it's me
]
self.nm_args = ' -n -sP -PE'
try: self.nm = nmap.PortScanner()
except nmap.PortScannerError: raise Exception('Nmap modülü bulunamadı')
except: raise Exception("Beklenmeyen hata oluştu:", sys.exc_info()[0])

def commit_and_push(self):
"""
Hazırlanan html dosyası github_pages'e yüklenir.
"""
if self.push:
if self.display_all: print(u"Dosya depoya gönderiliyor....")
GitHub(self.html_file).commit_and_tag()
if self.display_all: print(u"Dosya depoya gönderildi.")
else:
if self.display_all: print(u"Depoya herhangi bir dosya gönderilmedi.")

def create_html(self):
"""
github_pages'e yüklenecek html dosyanın içeriği hazırlanır ve dosyaya yazılır.
"""
if not self.dry_run:
try:
with open(self.html_file, 'w+') as html_file:
html_text = u''.join([self.message_text, "<br /><small>Son Kontrol: ", self.time_stamp, '</small>'])
html_file.write(html_text)
if self.display_all: print(html_text)
if self.display_all: print(u"HTML dosyası oluşturuldu.")
except OSError as e:
raise Exception(u"{}\n{} dosyası işlenirken hata oluştu.".format(e, self.html_file))
else:
if self.display_all: print(u"HTML dosyası oluşturulmadı.")

def print_stats(self, istisna=False):
"""
İstatistiki bilgileri ekrana basar, Aynı zamanda oluşturulacak hmtl'in içeriğinin bir kısmı burada hazırlanır
"""
diff = len(self.hosts_list) - len(self.exceptional_ips)
if diff < 1:
self.message_text = u"Şu anda kimse yok."
else:
for host in self.hosts_list:
if self.display_all: print(host)
if not istisna:
self.message_text = u"Açık, {} cihaz bağlı".format(diff)
else:
self.message_text = u"İstisnalar ({}) dahil {} cihaz bağlı".format(len(self.exceptional_ips),
len(self.hosts_list))
print(self.message_text)

def scan_area(self):
"""
Yerel ağdaki cihazları tarar ve IP adreslerini liste olarak döndürür
"""
self.nm.scan(hosts=self.ip_block, arguments=self.nm_args)
self.hosts_list = [x for x in self.nm.all_hosts()]

def get_args(self):
"""
Konsoldan verilen argümanlar alınır.
"""
if not len(self.argv) > 1: raise Exception("Lütfen anahtar belirtin. Yardım için -h")
try: opts, args = getopt.getopt(self.argv[1:], "hdap", ["help", "dry-run", "all", "push"])
except getopt.GetoptError: raise Exception('Anahtarlar hatalı.')
for opt, arg in opts:
if opt in ('-h', '--help'): raise Exception(self.__doc__)
if opt in ('-a', '--all'): self.display_all = True
if opt in ('-d', '--dry-run'): self.dry_run = True
if opt in ('-p', '--push'): self.push = True

def run(self):
self.get_args()
self.scan_area()
self.print_stats(istisna=self.display_all)
self.create_html()
self.commit_and_push()

if __name__ == '__main__':
print(u"\nŞu anda kaç kişi burada uygulaması İzmir Hackerspace (2015)")
print("-" * 80)
try:
SAKKIBU(sys.argv).run()
print("-" * 80)
sys.exit(0)
except Exception as e:
print(e)
print("-" * 80)
sys.exit(2)