Skip to content

browsepy

web tabanlı sunucunuzda güvenlik amacı ile indexlemeyi devre dışı bıraktıysanız ve aktif bir dosya yöneticiside kullanmıyorsanız browsepy anlık çözümler için size yardımcı olacaktır. browsepy python ve flask tabalı. çok gelişmiş özellikleri yo ve görsel açıdanda fazla bir şey sunmadığını belirmeliyim. kurulum için

pip install browsepy

ve çalıştırmak içinde

browsepy 0.0.0.0 8080 --directory $HOME

yeterli olacaktır.

proje sites: https://github.com/ergoithz/browsepy

sqlite-web

sqlite ile çalışırken bir ide ihtiyacınız olursa ve progralama diliniz python ise web tabanlı sqlite-web isimli basit bir çözüm mevcut. kurulum için

pip install sqlite-web

ve kullanım için ise

sqlite_web veritabani.db -H 0.0.0.0 -p 8080

yeterli olacaktır. sqlite-web flask tabanlı olduğu ihtiaç duyulan kütüphane sayısı fazla olabilir. mevcut projelerinizi bozmamak adına virtualenv ile çalışılması tavsiye edilmektedir.

proje sitesi : https://github.com/coleifer/sqlite-web

python – pip ile güncel olmayan paketlerin güncellenmesi

windows altında python ile çalışıyor ve paket yöneticisi olarak pip kullanıyorsanız

pip list --outdated

ile güncel olmayan paket listesini görebilirsiniz.

PS C:\python> pip list --outdated
Package                  Version      Latest       Type
------------------------ ------------ ------------ -----
absl-py                  0.11.0       0.12.0       wheel
add-trailing-comma       2.0.2        2.1.0        wheel
aiohttp                  3.7.4        3.7.4.post0  wheel
APScheduler              3.6.3        3.7.0        wheel
astroid                  2.5.1        2.5.2        wheel
autoflake                1.3.1        1.4          sdist

paketlerin hepsini güncellemek istiyorsanız

pip list --outdated --format freeze | %{$_.split('==')[0]} | %{pip install --upgrade $_}

işinize yarayacaktır. paket bağlımlıklarında dolayını bunu önermiyorum. paket bağmlılıkları bir çok konuda sorun olabileceği için virtualenv kullanmanılması tavsiye edilir..

Python – Selenium kullarak wordpress admin paneline giriş

web hasadı ,kazıma, test vb yöntemler için en kullanışlı araçlardan bir tanesi selenium kütüphanesi. diğer bir deyişle web üzerinde herhangi bir işi otomatize etmek istiyor, bir siteden veri çekmek istiyorsanız selenium ihtiyacınızı karşılamakta yardımcı olacaktır.

bu kısa yazıyı selenium kullanarak wordpress kullanan bir siteye giriş yapmanın nasıl yapılabileceğine gösteren en temel python kodunu ile sonlandıralım.

from selenium import webdriver
import time
browser = webdriver.Firefox()
url = "https://www.wordpresssitsi.com/wp-admin/" 
browser.get(url)  
username = browser.find_element_by_id("user_login") 
password = browser.find_element_by_id("user_pass") 
username.send_keys("k_adi") # wordpress kullanici adi
password.send_keys("k_adi_sifre") # wordpress kullanici adi
submitButton = browser.find_element_by_id("wp-submit") 
submitButton.click()
time.sleep(10)
browser.close()

python da pandas ile excel üzerinde çalışmak – 1

pythonda excel dosyaları ile çalışmak için kullanabileceğiniz kütüphane sayısı oldukça fazla. bu kütüphanlerin kendine göre avantajları mevcut. bu kısa yazıda kullanımı oldukça kolay olan pandaw dan bahsedegim

öncelikle pandası kuralım

pip3 install pandas

kurulum sorunsuz olarak tamamlandıktan sonra ilk örneğimizi yapabiliriz. temel ıolarak üç adım mevcut.

import pandas as pd   # 1. adim kutuphaneyi import ediyoruz

excel_text = pd.read_excel(r'router.xls')  # 2. adim excel dosyami belirtiyoruz

print (excel_text ) # 3. ekrana yazdiriyoruz / işliyoruz..

en temel haliye excel içindeki verileri text ortamına aktarmış olduk.. bu python dosyamızı çalıştırınca aşagıdaki şekilde bir çıktı elde ediyoruz.

root@fcicek:~/python/# python3 router_excel.py 
       router interface
0    router_a     0/0/1
1    router_b     0/0/2
2    router_c     0/0/3

csv dosyası üzerinde çalışmak istereniz read_excel yerine read_csv kullanmanız gerekmektedir. ; ile ayrılmış ve utf8 ile kodlanmış bir csv dosyasında çalışmak isterseniz

data = pd.read_csv (r'router.csv', sep=';', encoding='utf8', quotechar='"') 

işinize yarayacaktır. eğer herhangi bir sutun veya satır ile çalışmak istiyorsak

df = pd.DataFrame(data, columns= ['router'])

ile çalışacağınız sütünu seçebilirsiniz. satırları okuyorak satırlardaki veriler ile işlem yapmak için ise


for i in df.index:
    print(df['router'][i]+'----'+df['interface'][i])

yapısını kullanabilirsiniz. pandas konusunda daha detaylı bilgilere erişmek isterseniz aşagıdaki bağlantılar işinize yarayacaktır

https://pandas.pydata.org/docs/

https://pandas.pydata.org/docs/pandas.pdf

https://pandas.pydata.org/Pandas_Cheat_Sheet.pdf

wordpress xmlrpc erişimini kapatmak

oluşturulmasında ve kullanılmasındaki temel düşünce güzel olsada kullanılmıyorsa xmlrpc wordpress için güvenlik açığı riski barındırıyor.

apache kullanıyorsanız .htacces dosyasına aşagıdaki ilaveleri yaparak riskleri minimize etmiş olursunuz.


# .htaccess WordPress xmlrpc.php devre disi birakmak
<Files xmlrpc.php>
 order deny,allow
 deny from all
 #allow from <izin verilen ip adresleri>
 allow from xxx.xxx.xxx.xxx
</Files>

nokia sros için araçlar

genel olarak network ekipmanlarında cli ile konfigürasyon yapıyorsanız sıklıkla kopyala – yapıştır yapıyorsunuzdur. ancak bu yöntem hatalara oldukça açıktır.

bu hatayı minimize etmek adına python ile yazılmış nokia sros güzel bir kod bulmuştum. bunu paylaşmak istedim. örnek için aşağıdaki şekilde bir konfigürasyonumuz olsun.. bunu c1.txt olarak kaydediyoruz.

        vpls 11 customer 1 vpn 11 i-vpls create
            backbone-vpls 100:11
            exit
            stp
                shutdown
            exit
            sap 1/5/1:11 create
            exit
            sap 1/5/1:12 create
            exit
            no shutdown
        exit
        vpls 100 customer 1 vpn 100 b-vpls create
            service-mtu 2000
            stp
                shutdown
            exit
            mrp
                flood-time 10
                no shutdown
            exit
            sap 1/5/1:100 create
            exit
            spoke-sdp 3101:100 create
            exit
            spoke-sdp 3201:100 create
            exit
            no shutdown
        exit

t.py olarak kaydettiğimiz python kodunu çalıştığımızda mevcut kodumuz aşağıdaki örnekte görüleceği üzere yeniden düzenleniyor. bu şekilde bir yapı bir çok olası hatanın önüne geçecektir.

fcicek@cicek:~/mpls/sros$ python t.py c1.txt
/configure vpls 11 customer 1 vpn 11 i-vpls create backbone-vpls 100:11
/configure vpls 11 customer 1 vpn 11 i-vpls create stp shutdown
/configure vpls 11 customer 1 vpn 11 i-vpls create sap 1/5/1:11 create
/configure vpls 11 customer 1 vpn 11 i-vpls create sap 1/5/1:12 create
/configure vpls 11 customer 1 vpn 11 i-vpls create no shutdown
/configure vpls 100 customer 1 vpn 100 b-vpls create service-mtu 2000
/configure vpls 100 customer 1 vpn 100 b-vpls create stp shutdown
/configure vpls 100 customer 1 vpn 100 b-vpls create mrp flood-time 10
/configure vpls 100 customer 1 vpn 100 b-vpls create mrp no shutdown
/configure vpls 100 customer 1 vpn 100 b-vpls create sap 1/5/1:100 create
/configure vpls 100 customer 1 vpn 100 b-vpls create spoke-sdp 3101:100 create
/configure vpls 100 customer 1 vpn 100 b-vpls create spoke-sdp 3201:100 create
/configure vpls 100 customer 1 vpn 100 b-vpls create no shutdown

kullanılan t.py

#!/usr/bin/env python3

import re
import math
import sys

def pop(stack):
    try:
        stack.pop()
    except Exception as err:
        print("ERROR: Unable to flush stack - %s" %err)

def output(stack):
    output = " ".join(stack)
    print(output)
    return output

def sros_flatten(data):
    stack = []
    exit_detected = False
    indent = 0
    new_conf = ""

    for line in data.lstrip().splitlines():
        l = len(line) - len(line.lstrip())
        nxt_indent = math.ceil(float(l/4))

        if line.startswith(("#", "echo")) or line.strip() == "":
            pass
        elif line.strip() == "exit all":
            new_conf = new_conf + "\n" + output(stack)
        else:
            if nxt_indent == 0 and line.strip() == "configure":
                new_line = str("/") + str(line.strip())
                stack.append(new_line)

            elif nxt_indent > indent:
                if line.strip() != "configure" and len(stack) == 0:
                    stack.insert(0, "/configure")
                stack.append(line.lstrip())

            elif nxt_indent == indent:
                if line.strip() != "exit":
                    if exit_detected:
                        stack.append(line.strip())
                    else:
                        if len(stack) != 0:
                            new_conf = new_conf + "\n" + output(stack)
                            pop(stack)
                            stack.append(line.strip())
                        else:
                            stack.insert(0, "/configure")
                            stack.append(line.strip())
                    exit_detected = False

            else:
                if line.strip() == "exit":
                    if not exit_detected:
                        new_conf = new_conf + "\n" + output(stack)
                        del stack[-2:]
                    else:
                        pop(stack)
                    exit_detected = True

                else:
                    new_conf = new_conf + "\n" + output(stack)
                    exit_detected = False
                    pop(stack)
            indent = nxt_indent
    
    return new_conf

def main():
    filename = sys.argv[1]
    with open(filename, 'r') as f:
        data = f.read()

    sros_flatten(data)

if __name__ == "__main__":
    main()
Back To Top