Skip to content

filebrowser

browsespy yazısı sonrası daha güzel kullanışlı bir dosya yöneticisi önerisi istenler oldu. daha gelişmiş bir dısya yönetici için go tabalı filebrowser incelenebilir. kurulum için

curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | bash

ve çalıştırmak için

filebrowser -a 0.0.0.0 -p 8080 -r $HOME

yeterli olacaktır.

proje sitesi : filebrowser.org

huawei network ekipmanlarında qinq yapılandırılmış sub-interface

huawei routerların sub interface mantığından dolayı interface altında yapılmış sub interfacelerdeki kullanılan pe-vid ce-vid değerlerini öğrenmenin ne yazakkı basit ve güzel bir yöntemi yok… yaa mevcut konfiürasyona bakacaksınız yada “display qinq information termination” komutunu kullanacaksınız. bu komutun örnek çıktısı aşagıdaki yer almaktadır. .

<test_router>display qinq information termination
  Eth-Trunk1.62
    L3VPN bound
    Total QinQ Num: 1
      qinq termination pe-vid 102 ce-vid 62 vlan-group 1
    Total vlan-group Num: 1
      vlan-group 1
    control-vid 62 qinq-termination
  Eth-Trunk1.113
    VLL/PWE3 bound
    Total QinQ Num: 1
      qinq termination pe-vid 102 ce-vid 113 vlan-group 1
    Total vlan-group Num: 1
      vlan-group 1
    control-vid 113 qinq-termination
  Eth-Trunk5.56
    Total QinQ Num: 1
      qinq termination pe-vid 42 ce-vid 56 vlan-group 1
    Total vlan-group Num: 1
      vlan-group 1
    control-vid 56 qinq-termination
  Eth-Trunk5.69
    VLL/PWE3 bound
    Total QinQ Num: 1
      qinq termination pe-vid 62 ce-vid 69 vlan-group 1
    Total vlan-group Num: 1               
      vlan-group 1
    control-vid 69 qinq-termination

python da flask-mail kullanarak eposta gönderimi

Flask-Mail kütüphanesini kullanarak python da basit bir eposta gönderme uygulaması yapalım. öncelikle

pip install Flask-Mail

ile flask-mail kurulumu yapalım… flask-mail da SMTP konfigürasyonu için kullanılabilecek parametreler aşagıdaki gibi tanımlanmış.

    MAIL_SERVER : varsayılan ‘localhost’
    MAIL_PORT : varsayılan 25
    MAIL_USE_TLS : varsayılan False
    MAIL_USE_SSL : varsayılan False
    MAIL_DEBUG : varsayılan app.debug
    MAIL_USERNAME : varsayılan None
    MAIL_PASSWORD : varsayılan None
    MAIL_DEFAULT_SENDER : varsayılan None
    MAIL_MAX_EMAILS : varsayılan None
    MAIL_SUPPRESS_SEND : varsayılan app.testing
    MAIL_ASCII_ATTACHMENTS : varsayılan False

programda ihtiyaçımız sırasında gerekli güncellemeleri yapacağız. mail gönderimi sırasında ise

flask_mail.Message(subject='', recipients=None, body=None, html=None, sender=None, cc=None, bcc=None, attachments=None, reply_to=None, date=None, charset=None, extra_headers=None, mail_options=None, rcpt_options=None)

uygun şekilde yapılandırmak gerekecek.

    subject – email subject header
    recipients – list of email addresses
    body – plain text message
    html – HTML message
    sender – email sender address, or MAIL_DEFAULT_SENDER by default
    cc – CC list
    bcc – BCC list
    attachments – list of Attachment instances
    reply_to – reply-to address
    date – send date
    charset – message character set
    extra_headers – A dictionary of additional headers for the message
    mail_options – A list of ESMTP options to be used in MAIL FROM command
    rcpt_options – A list of ESMTP options to be used in RCPT commands

simdi bu bilgileri kullanarak basit kodumuzu yazalım.. gerekli kütüphaneleri import ederim

from flask import Flask
from flask_mail import Mail, Message

app = Flask(__name__)
mail= Mail(app)

smtp konfigürasyonumuzu yapalım.. ben aylık 500 kadar bedava eposta gönderilimize izin veren mailtrap servisini için konfigürasyon yapacağım..

app.config['MAIL_SERVER']='smtp.mailtrap.io'
app.config['MAIL_PORT'] = 2525
app.config['MAIL_USERNAME'] = '81e0d22cd4b15'
app.config['MAIL_PASSWORD'] = '94355a1553f58'
app.config['MAIL_USE_TLS'] = True
app.config['MAIL_USE_SSL'] = False
mail= Mail(app)

eposta içeriğini, gönderici ve alıcıda tanımlayalım

        msg = Message('Test Mesajı', sender =   'ferhatcicek@mailtrap.io', recipients = ['iletisim@ferhatcicek.com'])
        msg.body = "Bu bir test mesajıdır"
        mail.send(msg)
        return "Eposta gönderildi."

artık kodumuz hazır durumda…

#app.py - flask-mail kullanarak eposta gönderimi
from flask import Flask
from flask_mail import Mail, Message

app = Flask(__name__)
mail= Mail(app)

app.config['MAIL_SERVER']='smtp.mailtrap.io'
app.config['MAIL_PORT'] = 2525
app.config['MAIL_USERNAME'] = '81e0d22cd4b15b'
app.config['MAIL_PASSWORD'] = '94355a1553f58b'
app.config['MAIL_USE_TLS'] = True
app.config['MAIL_USE_SSL'] = False
mail= Mail(app)

@app.route("/")
def index():
    try:
        msg = Message('Test Mesajı', sender =   'ferhatcicek@mailtrap.io', recipients = ['iletisim@ferhatcicek.com'])
        msg.body = "Bu bir test mesajıdır"
        mail.send(msg)
        return "Eposta gönderildi."
    except Exception as e:
        return(str(e))

if __name__ == '__main__':
   app.run(debug = True)

flask run -h 0.0.0.0 -p 8080 yazarak kodumu çalışrarak tarayıcımıza http://localhost:8080 yazdığımızda epostamızın iletildiğine ait bilgilendirme mesajını alacağız… mesaj gönderme kısmını bir döngü içine alarak toplu eposta gönderimide yapabilirsiniz…

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

huawei network ekipmanları için ekran uzunluğu / sayfalama

ssh veya telnet ile bir network ekipmanına bağlanıp koşturduğunuz komutun çıktısını nakmak istiyorsanız sayfalama oldukça faydalı olmaktadır. “display current-configuration” komutunu çalıştırdığımızda

<fcicek_router>display current-configuration 
!Software Version V200R011C10SPC600
#
sysname fcicek_router
#
info-center loghost source Vlanif100
info-center loghost 10.10.10.199
#
vlan batch 2 to 4094
#
loopback-detect auto disable
loopback-detect packet-interval 10
#
stp timer hello 100
stp timer forward-delay 400
stp timer max-age 600
stp timer-factor 1
stp enable
stp converge fast
#
undo authentication unified-mode
#
domain fcicek admin
#
igmp-snooping enable
  ---- More ----

şeklinde bir durumla karşılaşırız.. konfigürasyonun devamını görmek için boşluk tuşuna basmak gerekmektedir. huawei network ekipmanlarında varsayılan sayfalama / ekran uzunluğu değeri 24 dir. bu değeri 0 – 512 arasında değiştirilebilmektedir.

herhanngi bir komutun çıktısını bir yazılım içinde yapıyorsanız, yazılım içinde sayfa sonlarının kontrolünün yapılması ihtiyacını doğurur. huawei ekipmanlarında bu kontrolü “—- More —-” olarak yapılması gerekiyor.

Bu kontrolü yapmak istemiyorsanız network ekipmanına bağlandıktan sonra ilk çalıştırılması gereken komutlardan bir tanesi; sayfalama özelliğini kapatmak olacaktır. Bunun için

screen-length 0 temporary

komutunu çalıştırmanız yeterli olacaktır. kullanıcıların / oturumların varsayılan değerler dışında bir değer kullanmak istiyorsanız user-interface altında değişiklik ile gerçekleştirebilirsiniz.

[fcicek_router]user-interface vty 0 4
[fcicek_router-ui-vty0-4]screen-length 0
Back To Top