Python Modül Yükleme

Python'da yazdığınız kod için modül yüklemeye çalıştığınızda modül'ün bulunamadığı mesajı alıyorsanız modülün default'da yüklü olmadığı için yüklemeniz gerekir. Modül bilgisayarınıza yüklü ise komut satırında modülü yüklemeyi tekrar deneyin ör modülümüz dns.resolver olsun

import dns.resolver

Komut satırında aynı hatayı alıyorsanız ve modülün yüklü olduğundan eminseniz kodu kaydettiğiniz klasöre bakmanız gerekiyor. Klasör içerisinde dns.py isimli bir dosya varsa Pyhton modül kütüphanesine gitmez direk bu dosya içinde aradığınız modülü arar. Dolayısı ile bulamayacağı için hata verir. Python'da yüklediğiniz modüllerin dosya isimleri ile çakışmamasına dikkat edilmelidir.

Python import error

Dosya isismlerini kesinlikle modül isimleri ile aynı yapmayın, bu şekilde uygulandığında python dosyayı modul olarak görür ve yüklemeye çalışır, gerçek modüle ulaşamayacağı için yükleyemez.

Ör Selenium modülü için şöyle bir hata ile karşılaşabilirsiniz. Bu tüm modüller için geçerlidir.

runfile('C:/selenium.py', wdir='C:/')
Traceback (most recent call last):

  File "C:\selenium.py", line 10, in <module>
    from selenium import webdriver

ImportError: cannot import name 'webdriver' from 'selenium' (C:\selenium.py)

Firewall Üzerinden Internetten Modül Yükleme

Python Pip ile modul yüklemek için gerekli firewall erişimleri aşağıdaki gibidir. Eğer bir firewall arkasındaysanız ve çıkışınız kısıtlı ise aşağıdaki adresler için 80 ve 443 portlarını açtırmanız gerekir. 

Pip internet erişimi için firewall üzerinden yetki verilmesi gereken adresler:
pypi.python.org
pypi.org
pythonhosted.org
files.pythonhosted.org

Port TCP 80 ve 443 olmalıdır.


MySQL WorkBench Time Out

MySQL WorkBench kullanıcıları zaman zaman aşağıdaki hatayı görüyor, komutun defaultta 30 sn içinde cevap alamaması durumunda bu hata oluşmaktadır.

Error Code: 2013. Lost connection to MySQL server during query

Bu hatayı gidermek için 

 Edit → Preferences → SQL Editor → DBMS connection read time out (in seconds): 30

Değerini 180 yapabilirsiniz, bu durumda MySQL WorkBench komut çıktısını alana kadar bekleyecektir.

Raspberry PI Python 3,7 Kurulumu (Raspbian)

Raspbian üzerinde Python 2.7 ile gelmektedir. İlk olarak bu versiyonu Raspberry üzerinden kaldırmamız gerekiyor. Bunun için aşağıdaki komutu yazmamız yeterli.

sudo apt-get remove python2.7

Python 3.7'yi kurmak için aşağıdaki aşamaları izleyin.

sudo apt-get update

sudo apt-get install -y build-essential tk-dev libncurses5-dev libncursesw5-dev libreadline6-dev libdb5.3-dev libgdbm-dev libsqlite3-dev libssl-dev libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev libffi-dev

İnternetten kurulum dosyasını indirelim.

wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz

Yazılımı kuralım.

sudo tar zxf Python-3.7.0.tgz
cd Python-3.7.0
sudo ./configure
sudo make -j 4
sudo make altinstall

Kurulum sonrası versiyon kontrolü yapalım.

python3.7 -V

Şuanda python kuruldu fakat default isimle çağrılamamkta. Aşağıdaki işlemleri de yapalım

vim ~/.bashrc

Açılan dosyaya aşağıdaki satırı ekleyin.

alias python='/usr/local/bin/python3.7'

Komut satırında aşağıdaki komutu yazalım.

source ~/.bashrc

Ve kontrol edelim

python -V
Python 3.7.0

Kurulum tamamlandı. Şimdi gereksiz dosyalardan kurtulalım.

sudo rm -r Python-3.7.0
rm Python-3.7.0.tar.xz
sudo apt-get --purge remove build-essential tk-dev -y
sudo apt-get --purge remove libncurses5-dev libncursesw5-dev libreadline6-dev -y
sudo apt-get --purge remove libdb5.3-dev libgdbm-dev libsqlite3-dev libssl-dev -y
sudo apt-get --purge remove libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev libffi-dev -y
sudo apt-get autoremove -y
sudo apt-get clean




Python Django Nasıl Kullanılır.

Python'da web geliştirme uygulaması Django'yu kurmak için aşağıdaki komutlar kullanılabilir.

Python Pip ile:
pip install django

Anaconda ile:
conda install -c anaconda django 

kurlum yapıldıktan sonra ilk olarak bir proje oluşturulur.

django-admin startproject PythonWebOne

Böylece PythonWebOne isimli bir proje oluşturmuş olduk. Proje komutu çalıştırdığınız dizinde oluşur ve dizinde aşağıdaki dosyalar bulunur.

PythonWebOne
├─PythonWebOne
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── manage.py

Tüm ayarlar settings.py dosyası içinden yapılır. Bu dosyada bazı ayarları değiştirelim.

LANGUAGE_CODE = 'tr-TR'

TIME_ZONE = 'Europe/Istanbul'

Django, kimlik doğrulama ve oturum yöneticisi uygulamaları gibi önceden yüklenmiş bazı varsayılan uygulamalarla birlikte gelir. Oluşturacağımız uygulamalar veya ihtiyacımız olacak üçüncü taraf uygulamaları Installed Apps bölümünde varsayılan uygulamalar yüklendikten sonra listenin altına eklenir.

# /settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

Şimdi proje için bir uygulama oluştrumaya çalışalım. Proje klasörüne girip aşağıdaki komutu çalıştırın.

python manage.py startapp OneWeb

OneWeb isimli bir klasör oluşacaktır. Dizin yapısı aşağıdaki gibi olur.

PythonWebOne
├── PythonWebOne
│        ├── __init__.py
│        ├── settings.py
│        ├── urls.py
│        └── wsgi.py
├── OneWeb
│        ├── __init__.py
│        ├── admin.py
│        ├── apps.py
│        ├── migrations
│        ├── models.py
│        ├── tests.py
│        └── views.py
└── manage.py

Django'nun yeni uygulamamızı tanımasını sağlamak için, uygulama adını dosyamızdaki Installed Apps listesine eklememiz gerekir. Bu liste settings.py dosyasının içindedir.

# /settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'OneWeb'
]

Bu yapıldıktan sonra, sunucumuzu çalıştıralım ve neyin çıktı alacağını görelim. Django'nun, geliştirme sırasında yararlı olsa da, asla servis vermek için kullanılmaması gereken yerleşik bir web sunucusu ile geldiğini belirtmeliyiz. Sunucuyu aşağıdaki gibi çalıştırın:

python manage.py runserver

Komutu yazdıktan sonra aşağıdaki gibi bir mesaj çıkacaktır.

Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).

You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
January xxxxxxx
Django version 2.2.5, using settings 'PythonWebOne.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

Dikkatli bakarsanız, uygulanmadığınız taşıma işleminiz olduğuna dair bir uyarı görürsünüz. Şimdilik bunu görmezden gelin. Tarayıcınıza gidin http://127.0.0.1:8000/ adresine girin. Her şey yolunda giderse, Django karşılama sayfasını görmelisiniz.

Taşıma ile ilgili hatayı görmemek için aşağıdaki komutu kullanabiliriz.

python manage.py migrate

Aşağıdaki gibi bir çıktı görmelisiniz.

Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying sessions.0001_initial... OK

Tekrar çalıştırdığınızda çıktı aşağıdaki gibi olur hata görmezsiniz

python manage.py runserver

Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
January xxxx
Django version 2.2.5, using settings 'PythonWebOne.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

Sunucuyu çalıştırdığımızda, varsayılan Django sayfası gösterildi. Kendi uygulamanız için Django'ya ana sayfa şablonunu nerede arayacağını söyleyecek bir URL tanımlamamız gerekiyor. PythonWebOne klasörü içindeki urls.py isimli dosyayı açın . Böyle görünmeli.

from django.contrib import admin
from django.urls import path

urlpatterns = [
    path('admin/', admin.site.urls),
]

Haydi uygulamamız için kendi url linkimizi ekleyelim. Dosyayı bu şekilde görünecek şekilde düzenleyin.

from django.conf.urls import url, include
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^', include('OneWeb.urls')),
]

Uygulama klasörünün içine urls.py adlı bir dosya oluşturun ve aşağıdaki kodları dosya içerisine yazın.

from django.conf.urls import url
from OneWeb import views


urlpatterns = [
    url(r'^$', views.HomePageView.as_view()),
]

Uygulama altındaki views.py dosyasına bu kodu yazın.

from django.shortcuts import render
from django.views.generic import TemplateView

# Create your views here.
class HomePageView(TemplateView):
    def get(self, request, **kwargs):
        return render(request, 'index.html', context=None)

Bir klasör oluşturarak içine index.html dosyasını koyalım. Klasör adı templates olabilir. 

















Linux'da eski dosyalar nasıl silinir.

Linux işletim sisteminde eski dosyaları bulup silmek için aşağıdaki komut kullanılabilir.

find . -type f -mtime +365 -delete

Bu komut bulunduğunuz klasör içinde eski tarihli dosyaları bulur ve siler. delete komutu yerine ls konutunu kullanırsanız bu dosyaların listesini görüntüleyebilirsiniz. 365 günü ifade eder.

Dikkat bu komutu çalıştırdığınız tüm alt klasörlerdeki eski oluşturulma tarihine sahip tüm dosyalar silinecektir. Komut sizi uyarmadan dosyaları siler, çalıştırmadan önce liste alıp kontrol etmekte fayda var.

MySQL View

MySql'de sütünları aynı olan iki view'ı birleştirerek yeni bir view oluşturabilirsiniz. Bunun için aşağıdaki sorguyu çalıştırmanız yeterlidir.

CREATE VIEW toplamview AS
SELECT * FROM view_1
UNION ALL
SELECT * FROM view_2
    

Network Notları L3

Routing protokoller dahili ve harici olarak ikiye ayrılır. Sadece BGP harici protokoldür. OSPF ve IS-IS bant genişliğine bakar, cost değerine göre tercih yapar. EIGRP defaut'da bant genişliği ve delay'e bakar. EIGRP delay i kümülatif hesaplar yoldaki minimum bant genişliğini alır. Rip ve BGP Hop count'a bakar.

Link state OSPF ve IS-IS : Link state'de tüm routerlar birbirini bilirler. Link state'de loop olmaz tüm routerlar topolojiye hakimdir. Link state'de yolu cost yani bw belirler.

Distance Vektör RIP, BGP, EIGRP, IGRP. Distance vektör komşusundan aldığı bilgiyi komşusuna verir. Distance vektörde routing loop olma olasılığı var.

IGP protokolleri anaons yapmaz. BGP anons yapar. IGP update yapar.
IGP'lerde
1- proses enable edilir.
2- interfaceler proses'e dahil edilir.

Routing protokollerden en hızlısı EIGRP en yavaşı BGP'dir.

OSPF

OSPF IP 89 portunu kullanır L4'de çalışır. Routerlar her zaman en spesifik subnet'i seçer route metric'e bakmazlar.

Huawei routerlarda IS-IS 15, OSPF 10 metric'leri static route'u (60) ezer metricleri daha düşüktür.

Routing subnet aynı, metric aynı ise router Cost değerine bakar ve paketi cost'u düşük olandan geçirir. Cost eşit ise cisco ve huawei load balance yapar, equal cost path load balance. Juniper küçük sayılı interface'i seçer.

Prefix match > Metric > Cost

OSPF sadece IP taşımak için yapılmıştır.

LSDB - Link state database

OSPF'de bir LSA flood yapılır ve tüm router DB'leri aynı olur.

224.0.0.5 - Hello paketi

OSPF'de routerlar birbirine 8 adet bilgi gönderir. Sekiz bilgi de aynı ise bunlar Adj'dir.

Neighbor Routerlar
1- Hello Time
2- Died Time
3- Area ID
4- Area Type
5- Pass Type
6- Pass Auth.
7- Subnet Mask
8- MTU

Eğer 8 bilgi aynı ise LSDB ilk paketini gönderir. Kendinde olmayan network bilgisini LSR ile ister, LSU ile alır.

LSU içinde LSA'lar vardır. LSA'leri iyi bilmek gerek. LSA'i anla OSPF'i çöz :) Her router aynı LSA database'e sahip olur. Her router kendini kök'e koyar. Günün sonunda her router'ın uniq routing table'ı olur. SPF algoritması sonucu routing tablosu oluşur.

OSPF'de herkes kendi Router ID'si ile tanınır.Router ID OSPF'de routerların kimlik numarasıdır.

Router ID 32 bit ve 4 okted'dir. Router ID IP'ye benzer fakat IP değildir. 0.0.0.3 gibi olabilir.

Genelde routerların loopback adreslerini Router ID olarak kullanırız.

Ethernet - Broadcast
PPP, HDLC - P2P
ATM/ER - NBMA
Point to Multipoint

Designated Router DR
Her router DR routerla komşuluk kurar diğer routerlar DR other olur.DR 224.0.0.6 kullanır. Multipoint networklerde DR seçilir. Network tipini P2P yaparsak DR seçimi yapılmaz.

OSPF metric

Cost = Ref Bw / Bw

Cost düşük olan seçilir.

Ref BW ve BW değişir kullanmak önerilmez.Cost manuel girmek önerilir.

Area : Aynı LSA database'e sahip routerlar birlikteliğine area denir.

Bir router iki area üyesi olabilir. Area fiziksel topolojiye göre yapılır. Aynı area'daki cihazlar aynı LSDB'ye sahiptir.En az bir ayağı başka area'da olan routerlara Area Border Router denir. Area Border Router'ın bir bacağının area 0 da olması gerekir. Area 0'da interface'i olmayan router area border router olamaz. Sadece area 1 ve area 2 ye sahip router area border router olamaz.

OSPF'e özgüdür her areanın Area 0 'a bağlantısı vardır. Area 0 yoksa area'lar birbirleri ile haberleşemez.

Area 0'a backbone area denir. Area 0 bilgi taşıyan özel bir areadır. Her bir area için sadece bir adet area border router yani area 0 linki olabilir. ABR a, b x networklerine gitmek için bana gelin der. Bunun için farklı LSA türü kullanılır. Sumarry LSA kullanılır Type 3 Summary. Burada summary edilen database'dir. Database sadeleştirilir ve summary LSA ile gönderilir.

Günümüzde CPU lar çok güçlü olduğundan tek area kullanmak mümkündür, bu durumda farklı OSPF preseslerine ayrılabilir.

LSA Type 1 ve Type 2 area içinde kullanılır. Type 2 LSA DR seçimi için oluşmuş. Network tipi Multicast ise Type 2 LSA kullanılır. P2P networklerde Type 2 LSA olmaz.

Type 3 LSA area'lar arası  import veya redistribition enjekte etmek için kullanılır. Bunu yapan router ASBR Autonom system border router olur.

Router dışardan aldığı bilgiyi OSPF'e redistribute ederse Taype 5 LSA kullanır. Type 5 tüm area'lara gider. Type 4 area Type 5 ile gider ve Type 5'in eksik bilgisini taşır. Type 4 area değiştirirken kullanılır ve redistribute edilen Type 5'in route'a giden yolunu gösterir. Type 5 tüm arealara giderken ABR'larda Type 4 yapıştırılır.

Router ID vermiyorsak mevcut loopbacklerin en büyüğü seçilir, loopback yok ise interface IP'lerinin en büyüğü seçilir. İnterface yoksa IPv4 yoktur zaten.

Tüm interfaceler IPv6 ise Router ID'yi elle vermek gerekir. Bütün routerların Router ID'leri uniq olmalıdır.

clear ospf prosses > OSPF restart olur.

DR other'lar komşuluk kurmaz. Priority'si en yüksek olan DR olur. 224.0.0.5 de DR-BDR seçimi yapılır sonra 224.0.0.6 kullanılır.

Interface'i OSPF'e dahil edecek fakat hello paketi göndermeyecek isek pasive interface yapılır.

default-information orginate > Bütün domain'e default route verir.
Virtual Link : Area 0'a ulaşmak için virtual link kullanılır. Virtual link tunel yapar.

Router LSA - Type 1
Net link LSA - Type 2
Summary LSA - Type 3

BGP

eBGP External BGP - TTL 1  -  AS'ler fasklı
iBGP Internal BGP - TTL 255  -  AS'ler aynı

BGP RIP'e benzer. BGP path vektör algoritması olarak algılanır. BGP her protokol bilgisini taşır. BGP ile mac adres tabloları taşınabilir. BGP authonom sistemler arasında prefix taşır. BGP MPLS lable taşıyabilir.

IP iana dan alınır.

BGP
1- AS arası
2- AS içerisinde
3- Kendi IP anonsu
4- MPLS müşterileri için
5- Yedeklilik
6- MPSL müşterileri için PE CE routing
7- MPLS L3 VPN ISP omurgası içinde PE-PE taşımacılığı.
8-SD-Wan

BGP'de hello paketi link ayaktamı bakar.

BGP TCP 179 adresini kullanır. 60sn de bir keep alive gönderir, 180sn sonra karşı tarafın düştüğünü öğrenir. Source IP ile peer IP aynı değilse connection kurulmaz.

BGP update yapmaz anons yapar.

ATTREBUTE | NLRI |

NLRI'ye ne koyarsan onu taşır bir konteynır gibi davranır. IPv4, IPv6, Mac vb....

AFI ve SAFI listeleri

BGP L3'deki protokolleri AFI ve SAFI ile taşır.

Attributes
ORIGIN : Prefix'in BGP'ye nasıl dahil edildiği bilgisini taşır.

Network komutu bir prefix'i anons etmek için kullanılır. Prefix routing tablosunda olması gerekir olmaz ise anons edilmez. Aggregate summary yapar. Aggregate ve Network komutları ile IP BGP'ye sokulur veya bilgi EPG'den alınır. redistribute ile de alınır.

Origin
IGP - i -network, aggregate
EGP - e
Redistribute - ?

As Path : x networkünün kendi AS'inden kaç hop uzakta olduğunu gösterir. As Path kaç AS atlamak gerektiğini söyler.

As Path her update'de vardır., geçilen AS sayısını söyler. Router gelen bilgise kendi AS numarasını görürse loop'u engellemek için bu bilgiyi almaz. BGP AS hop sayısı olarak kullanır. iBGP'de As Path attribute kullanılmaz.

iBGP'de kendini loop'a karşı korumak için komşudan alınan bilgi diğer komşuya verilmez. BGP'de direk bağlı olmak gerekmez.Routerları iBGP'de full bağlayamadığımızda  root reflektör kullanılır. RR herkesten bilgi alıp gönderebilir.RR'dan genelde trafik geçirilmez ve sadece iBGP'de kullanılır. RR bilgi için kullanılır ve data plane'de bulunmaz.

Next Hop :

External alınan bilgi internal'a aktarılırken  next hop değişmez.
Established - Tamam
Active - Hiç Erişemiyor
idle - Config hatası

Routerlar BGP tablosunu komşusuna gönderir, route tablolarını değil. BGP tablosunda olan tüm yolların en iyisi routing tablosuna tek kayıt olarak geçer. Buna best path selection denir. BGP'de peering için direk bağlanmak gerekmez.

AS numaraları 32 bittir. 4 milyon AS no olabilir.

Local-Pref : İçerdeki routerlar local pref yüksek olanı tercih eder.default'da 100'dür. İçerdeki routerları manupüle etmek için kullanılır.

MED : Karşı router'ı manupüle etmek için kullanılır. Metriği düşük olan yol kazanır.

Weight : Router'ın kendisini manupüle eder router içinde yazılan bir attribute'dür. pad weight artırılır yüksek olan kazanır.

Mad = Karşı
Local = arkadaki routerlar
Weight = Router'ın kendisi için

eBGP loop'a karşı daha korumalıdır. eBGP iBGP'den daha değerlidir.

64512-65535 Private AS Number

Genelde loopback interfaceler üzerinden komşuluk kurulur.update-source loopback BGP protokolünün source IP adresini loopback yapar. Router ID'ler aynı olmamalı büyük soruna sebep olabilir. Source IP ile peer IP aynı değilse connection kurulmaz.

Route Map
1- Route filtering during
2- Policy base routing
3- BGP

Prefix List
BGP'de prefix list kullanılır.access list subnet'e bakmaz.

IS-IS
Is-Is konteynır mantığı ile çalışır. TLV  ile taşımacılık yapar. IPv4 özel bir TLV ile taşınır.
OSPF L4 de veriyi gönderir L3'de IP'ye bağımlıdır. IS-IS L2 üzerinde çalışır ve daha stabildir tercih edilir.

IS-IS Mac adres gibi farklı bilgileri taşıyabilir.

TLV - Type Lengt Value - Konteynır

OSPF'de loop riski olduğundan herkes area 0 ile konuşur IS-IS'de bu yok.

Metric anlayışı farklıdır. 6 bit metric alanı var. toplam metric maximum 1024 olabilir. Metric toplamı 1024'ü geçemez. Metric styl whide ile 20 bit, kümülatif 32 bit'e çıkabilir. Default halde metric bırakılır ise iş hop count'a düşer.

IS-IS'de default davranışı OSPF'deki Totally NSSA gibidir.

IS-IS'de ABR'a benzeyen cihazlar Level 1 ve level2 ile konuşabilen cihazlardır. L2 tüm IS-IS domaininin tüm bilgilerinin toplandığı databasedir. L1 ise sadece içinde bulunduğu areanın bilgilerini tutan databasedir. L1 içinde bulunduğu area bilgisini içerir.

OSPF LSA ile çalışır
IsIs Level 1 ve Level 2 LSP ile çalışır. Routerlar default'da L1 L2 olarak gelir sonradan değiştirilir.

Routerlar 20byte NSAP adresi kullanır. CLNS NSAP formatı kullanılır.

CLNS- NSAP - NET

49 private adrestir. Net adresi min 8 max 20 byte olabilir.

NSAP ISIS'in L3 adresidir. İki portun ISIS konuşabilmesi için NSAP adresi gerekir. Bu adres sadece cihaza verilir interface'e verilmez.

L2 database'i tüm ISIS camiasının bilgisini taşır.

L1 ile L2 konuşamaz ve komşu olamazlar.Router Leaking ile L2'deki bilgi L1'e aktarılır.

Redistribution ile L1'deki bilgi L2'ye aktarılır.

ISIS'de link tipi broadcast veya P2P seçilebilir. Bir cihaz DIS seçilir, DIS sanaldır.


L2 tüm ISIS domain bilgisini taşır area bağımsız tüm cihazlarda aynıdır.

Tüm cihazlar IPV4 veya IPV4, IPV6 olmalıdır. ISIS her versiyon için ayrı topoloji oluşturabilir.

Multible topolojide farklı kullanımlar olabilir fakat single topolojide hepsi aynı IP versiyonunda olmalıdır.

CLNS adresinin sonu 00 olmak zorundadır. 49.0001.------------.00  1 areadır

BFD ile komşunun gittiği daha hızlı öğrenilir.

MPLS

Multible protocol lable switching. L2 ve L3 protokollerinden bağımsızdır. L3VPN MPLS ve BGP ile yapılır.

L2VPN-VPLS Mac switching e benzer.
L2VPN - VLL Mack learning yok P2P Leasline a benzer.

L2 ile L3 arasına sokulan lable'lar ile MPLS sağlanır.

LSP Lable switch path

Push - Paketi lable ile işaretlemek.
Swap - Lable'lı paketi iletmek.
Pop - Lable sökmek

Lable'lar FEC'e göre verilir.

LDP lable üretmek ve dağıtmak için kullanılır.BGP'de lable taşır ve üretir.
RSVP Lable üretebilir ve dağıtır
Statik olarak da lable üretilip taşınabilir.

Data plane'i kontrol plane belirler. Data plane ile kontrol plane yönleri terstir.

MPLS tüm interfacelerde enable olmalı ve LDP oluşmuş olmalıdır.Hat koparsa lable'lar kapanır.

MPLS'in iki formatı vardır.
Frame Format
Cell Format (kulanılmıyor)

MPLS Shim Heder
MPLS Lable 20 bittir. 1 milyon farklı lable oluşturulabilir.

MPLS Lable Nesting : MPLS lableları ard arda koymak anlamına gelir. birden fazla lable ile MPLS VPN ve MPLS TE yapılır.

Customer lable uçtan uca taşınabilir transport lable yolda eklenebilir.Customer Lable'ı BGP belirlr. Çok fazla lable eklenecek ise MTU unutulmamalıdır 9000 yapılabilir.

FEC aynı yolun yolcusu paketlerdir.

Her routera Lable kullanma range'i tanımlanabilir. Müşteri TTL'i de taşınabilir taşırken başka bir TTL kullanılır. LDP bir protokoldür.

LDP Lable/FEC mapping bilgisini dağıtır. LDP BGP'ye benzer. Cihazların direk bağlı olması gerekmez.

Routerlar LDP komşuluğu kurar. LDP'de iki şekilde komşuluk vardır, direk ve remote şeklinde.

LDP auto disvcover yapabilir.

LDP TCP 646 portunu ve UDP 646 portunu kullanır.
Hello - UDP 646
Establish - TCP 646
Remote için hello unicast remote, direcly için hello multicast kullanılır.

PHP
Sondaki routerdan bir önceki router boşa swaplamasıdır. Son router'ın işini kolaylaştırır. Boşa swap'da 3 nolu private lable kullanılır. Son router bir öncekine bana lable 3 ile gel der. bir önceki router paketi lable 3 ile boşa swaplar. QoS kullanılıyor ise lable 0 ile explicit-null kullanılır. Sıfır lable ile son router'a geldiğinde QoS taşınabilir.

MPLS trafik engineering için DB gerekir OSPF veya ISIS



Network Notları L2

Günümüzde bağlantıların gelişmesi ile LAN ve WAN tanımı değişti, Lan sahip olduğun network, WAN kiraladığın network haline geldi.

Cam Table : Switch mac adres tablosudur, Ram'de tutulur.

Flood : Switch'in mac adresini bilmediği cihazlar için paketi tüm portlardan göndermesi demektir. Switch'ler flood and learn mantığı ile çalışmaktadır.

Switch test yazılımı : HyenaeFe

Vlan No maximum 4096 olur ve 12 bit'dir.
Vlan tag toplam 4 bytedır: ilk 16 bit type adresi 0x8100 802.1q, 3 bit PCP, 1 bit CFI, 12 bit Vip.

PCP = 802.1p Cos bitleri. Cos L2'de Qos yapmak için kullanılır.

802.3 Access
802.1q Trunk

Standartta sadece Trunk portta switch'den çıkan paketler için tag eklenir. Switch kendi içinde Vlan'lar için tag kullanmaz. Trunk port üzerinden sadece bir adet port native olabilir. Native=Untaged
Default'da Vlan1 untag'dir fakat bu değiştirilebilir. İki switch arasında untag vlan farklı seçilebilir, çalışır fakat hata verir. Hata mesajı : Native Vlan Missmatch

Cisco switchlerde yeni switch portu dynamic'dir, Huawei'de hybrid'dir.

Dynamic = Trunking protocol DTP Cisco geliştirmiştir, iki switch birbirine bağlandığında otomatik çalışır.

no negotiate yapmadan DTP kapanmaz, port no negotiate yapılmalıdır. Dynamic auto veya disabre olabilir.

Yeni Cisco cihazlar ISL desteklemiyor. Ayrıca cisco dışında tüm cihazlarda  Vlan'lara erişim vermek gerekir, Cisco'da tüm vlanlar default'da geçer kısıtlama yoktur. Cisco üzerinde native Vlan'ı Trunk üzerinden geçirmemek için kullanılmayan bir vlan native yapılır.

VTP
Default'da Switchler VTP server gelir.

Router üzerinde trunk porta IP verirseniz native çalışır. Diğer vlan'lar için sanal interface oluşturulur.

L3 switchlerde router interfacelere SVI (switch virtual interface) denir.

Switchlerde loop başladıktan sonra  loop'u durdurabilecek bir protokol maalesef yok.

Broadcast storm ilk gönderilen IP arama arp paketinin bir sonucudur, Arp broadcast yaparken oluşuyor. Arp request mac öğrenmek veya DHCP'den IP almak için kullanılır. Bir bilgisayara IP girersen arp paketi gönderir ve kendi IP'si için cevap almayı bekler. Kendi IP'si için cevap alırsa IP çakışması algılar. IP çakışması Arp ile tespit edilir. Arp request L3 çalışır.(Who has 10.0.0.1?)

Local network'de ping kaybı mevcut ise loop olasılığı yüksektir.

Aynı frame switch'de farklı portlardan geliyorsa buna mac flaping denir. Switch mac adresini farklı portlardan öğrenmiş olur ve tablo sürekli değişir. Mac Flap algılamak zordur.

Lan Loop
1- Broadcast storm
2- Multible Frame Loop
3- Unstable mac address table.

Min ethernet frame size 46 bayt olmalıdır, frame size yeterli olmuyorsa pacing eklenir.

STP
STP topolojiyi tekilleştirir. Her 2sn de bir gönderilen BPDU paketleri ile bilgiyi taşır. BPDU dört bilgi taşır. 802.1d ve 802.1w BPDU formatıdır.

STP L2 çalışır.STP ethernet frame'inden sonra gelir.

BPDU 4 Önemli bilgi
1- Bridge ID
İki farklı değerin text toplamıdır.
Bridge ID = Bridge priority + Mac address

Bridge priority = 0-65536 arasındadır. 16 bit'dir. 4069'nin katı olarak değiştirilir.

Klasik switchlerde bir mac adresi olur. Bu mac adresi BPDU için kullanılır. CPU mac adresi olarak görünür. Switch portlarının normalde mac adresi olmaz fakat sanal mac adresi üretilrbilir.

Bridge ID : 32768:63:16:08:19:7c

2- Root Bridge ID
Topolojide bir switch root olur.

3- Cost
Bant genişliği ile ters orantılı bir değerdir. Standart olarak bellidir. Bakınız 802.1t

Link speed  Cost
10                  100
100                19
1Gb               4
10Gb             2

Cost root bridge'e giderken hesaplanır. Cost küçük olan yol tercih edilir.

4- Port ID
İki farklı değerin text toplamıdır
Port ID = Port priority + Port numarası
Port priority 0-255 arasında 16'nın katı bir değerdir, default olarak 128 dir. 12. portun port ID'si

128.13 olur.

STP Nasıl çalışır
1- Her network'de mutlaka bir root bridge seçilir. Bridge ID'si en düşük olan root bridge olur.

2- Her switch kendine bir adet root port seçer. Root bridge'e giden en düşük cost'a sahip port root port olarak seçilir. Root port root bridge'e giden en düşük cost'lu bağlantıdır.

Cost eşit ise sender bridge ID'ye bakılır, küçük olan switch ID seçilir. Sender switch ID eşitse sender switch port ID'leri karşılaştırılır, küçük olan tercih edilir. switch port ID'leri eşit ise local port ID'ye bakılır, küçük olan seçilir. Port priority küçükse switch o portu seçer.

3- Her segmentte mutlaka ve mutlaka bir port designate port olmalı. Küçük cost port designate port olur.

4- Tüm switchlerde ara bağlantılar için route port ve designate port olmayan portlar bloklanır, kapatılır.

Aynı switch'in portları kablo ile birleştirilirse STP buna çözüm bulamaz. Bu duruma loop protection ve loop guard ile engel olunur.

Üç tip port vardır
Root port    fw mod
Designated port     fw mod
No designated port   Block mod

Switch portun çalışır duurma gelme süreci STP

Disable > 15sn > Listening > 15sn > Learning > 20sn > Forwarding/Blocking
Portun çalışma süresi 30sn'dir.

STP'de switch hop count sınırı vardır.

STP default priority 32876

Route Guard route bridge'i koruma altına alır. Route'u koruma altına almak için kenar bacaklara yazılır.

Global config'de port fast yapılırsa tüm access portlar port fast olur. Access port'dan kullanıcı BPDU paketi gönderirse network çökebilir. Portfast portlarda BPDU bloklanmalıdır.

802.1w RSTP
Discarting > Learning > Forwarding

RSTP per vlan çalışmaz.

Alternate port root port yedeğidir, root port düşerse yerine geçer. Backup port designated port yedeğidir.

Alternate Port Bloc mode
Backup Port Block mode

Cisco STP hesaplamasını per vlan (vlan bazlı) yapar. PVST cisconun tescilli per vlan spaning tree algoritması.

802.1s MST Multible Spaning Tree
MST cisco IEEE ile aynıdır.

MST'de instance oluşturulup istediğiniz kadar vlan ekleyebilirsiniz. instance her switch'de aynı olmalıdır. Vlan'lar başka bir instance oluşturulmadı ve vlan aktarılmadıysa instance 0'da dır.

UDLD Tx ve Rx ikisininde çalışıp çalışmadığına bakar.

Edge port port fast yapılırsa mutlaka BPDU filter veya BPDU guard uygulanmalıdır.

BPDU guard BPDU paketi algılarsa portu kapatır. BPDU filter BPDU paketlerinin geçmesini engeller.

BPDU guard nedeniyle port disable olursa portta error disable mesajı görünür.

STP vpls üzerinde çalışır.

Ether Channel

Nic Teaming - Microsoft
Bount - Linux
Ether Channel - Cisco
Port Channel
Eth Trunk - Huawei
Lag - Alcatel
MLT
Bundle - Cisco

Bunların hepsi aynı şeyi ifade eder üreticiden üreticiye değişir.

Arada ISP varsa kontrol protokolü gerekir. Etherchannel'da, anahtarlayıcılar bağlantı yapılandırmalarının dinamik olarak yapılmasını sağlayabilir. Bunun için iki protokol kullanılır: PAgP (Port Aggregation Protocol-Port Birleştirici Protokol) ve LACP (Link Aggregation Control Protocol-Hat Birleştirme Kontrol Protokolü). PagP Cisco cihazlara özgü bir protokol iken LACP cihazdan bağımsız standart bir protokoldür.

Kontrol protokolü ile portlara priority konulabilir.
Default'da 8 port bundle yapılabilir, diğerleri yedekte bekler.

Max bundel links
Priority'si düşük olan tercih edilir diğer bağlantılar yedekte bekler.

Stack
Stack 8 switch'e kadar bağlanabilir, ciscoda 9 switch bağlamak mümkündür.

Stack STP'den kurtulmak için kullanılıyor.
MC-LAG
M-LAG
VPC
SMLT
Bunların hepsi aynı anlama gelir.

Vendorless cözüm maalesef yoktur her vendor'un bir çözümü var.

SDN
Software definid network. SDN'de STP kullanılmıyor.
TRILL
Fabric path - Cisco
QFabric - Juniper
802.1aq - IEEE
Cisco ACI - Cisco

Farklı vendor'ların SDN çözümleri

BGP + EVPN ve Vx Lan ile SDN yapılabilir.

HSRP -VRRP
Routerlarda HSRP yapılırken grup numarası veriliyor, sanal IP adresinin sanal MAC adresi oluşuyor.Mac adresinin son 8 bit değerine göre grup ID değiştirir.

prempt = master olan gittikten sonra tekrar geri gelirse tekrar master olmasını sağlar. VRRP'de prempt default'dur. prempt'e delay koymak faydalı olabilir.

HSRP 224.0.0.2 224.0.0.102
VRRP 224.0.0.18

HSRP'de üç IP kullanılır. VRRP'de iki IP ile yapılabilir.

Birde GLBP (gateway load balance protocol) var. yedeklilik için kullanılır. Cisco'da var.

HSRP Default priority 100 yüksek olan master olur. Priority'ler eşitse ilk kim ayağa kalkarsa o master olur.

HSRP - VPC Active Active
HSRP - SLA ile kullanılabilir. dış interface'e bir SLA yazılarak priority değiştirilebilir.

Multible HSRP- İki tane grup yapılır, farklı Vlan'lar için farklı routerlar master olabilir.

Priority - 0-255 Priority yüksek olan master olur.


Python ile HTML Formatında Mail Gönderme

Aşağıdaki kodu kullanarak HTML bir sayfayı SMTP üzerinden mail atabilirsiniz. Mail içeriği html formatında gidecektir. Çok faydalı bir code mutlaka kütüphanenizde bulunsun.


----------------------------------------------------------
# Import smtplib for the actual sending function
import smtplib

# Import the email modules we'll need
from email.message import EmailMessage

# Open the plain text file whose name is in textfile for reading.
with open("Message.html") as fp:
    # Create a text/plain message
    msg = EmailMessage()
    msg.set_content(fp.read())
 
# me == the sender's email address
# you == the recipient's email address
msg['Subject'] = 'Konu bölümü'
msg['From'] = "Gönderici <Gönderici Mail@adresi>"
msg['To'] = "gönderilecek@kişi"
msg.set_type('text/html')

# Send the message via our own SMTP server.
s = smtplib.SMTP('SMTP IP adresi')
s.send_message(msg)
s.quit()
----------------------------------------------------------

Cisco Cihazı Belli Bir Süre Sonra Yeniden Başlatma


Cisco bir switch veya routerı belirli bir saate reboot etmek için:

Ciscoe#reload at 03:00 30 apr
Reload scheduled for 03:00:00 UTC Sat Apr 30 2011 (in 42 hours and 10 minutes) by console
Reload reason: Reload Command
Proceed with reload? [confirm]

Cisco bir switch veya routerı belirli bir süre sonra reboot etmek için:

Cisco#reload in 1:30
Reload scheduled for 10:20:49 UTC Thu Apr 28 2011 (in 1 hour and 30 minutes) by console
Reload reason: Reload Command
Proceed with reload? [confirm]

Cisco bir switch veya routerın ne zaman reboot olacağını görmek için:

Cisco#show reload
Reload scheduled for 10:20:49 UTC Thu Apr 28 2011 (in 1 hour and 29 minutes) by console
Reload reason: Reload Command

Reload komutunu iptal etmek için:

Cisco#reload cancel
Cisco#

***
*** --- SHUTDOWN ABORTED ---
***

Komutları kullanılır.
    

Python 3

Python indirmek için

www.python.org/downloads

Programı kurduktan sonra çalışıp çalışmadığını test etmek için aşağıdaki komut kullanılabilir

Command promp'da

python --version

Komut çıktısında hangi versiyonun çalıştığı görüntülenir.

python komutu ile yazılım çalıştırılabilir veya windows arama bölümünden IDLE yazarak ekrana çıkan yazılım çalıştırılır.

İlk kodu yazmak isterseniz

print("Hello Wolrd")

Çıktısı
Hello World

Şeklinde görüntülenir.

Python kullanırken bir editör ihtiyacı varsa Jupyter kullanılabilir. Jupyter kurulumu için

pip jupyter install

Komutu kullanılabilir. yazılımı çalıştırmak için

jupyter notebook

komutu yazılarak editor açılabilir. Bu editör genelde eğitim amaçlı kullanılır, bunun yerine notepad++ kullanabilirsiniz. Bu editorün avantajı yazdığınız kodu direk run butonuna basarak çalıştırabilmektir.

Python da data tipleri aşağıdaki gibidir.

•Numbers
•String
•List
•Tuple
•Dictionary
•Set

Numbers

Değişkenlere atanan veya işlemlerde kullanılan sayıları ifade eder, aşağıdaki gibi atama yapılabilir.

a=3
b, c = 4, 7

print (a)
print (b)
print (c)

3
4
7

a 3 değerini b 4 ve c 7 değerini almış olur.

String

Tüm karekterler string olarak tanımlanabilir.

a="istanbul"
print (a)

istanbul

Tanımlama yapılırken çift tırnak kullanılmalıdır. String tanımlanırken " veya ' işaretleri arasında tanımlanır. String içinde ' işareti var ise python bu işareti string sonu kabul eder.

a='İstanbul'un bir bölümü'

görüldüğü gibi bu cümlede string içinde bir 2 işareti kullanılmış. Bu işareti string olarak yazması için ' işaretinden önce \ karekteri kullanılır.

a='İstanbul\'un bir bölümü'

Benzer şekilde \n python'da enter anlamına gelir. String içerisinde yazılması gerekiyorsa string başına r karekteri eklenmelidir.

b=r"Enter \n şeklinde ifade edilir."

Stringler indexlenebilirler, ilk karekter 0. karekterdir.

a='istanbul' için index
0=i
1=s
2=t
3=a
....

şeklindedir.

String içinden bir karekteri yazdırmak için a[2] şeklinde kullanmak gerekir ve değeri t dir.

a[3] - indexde işaret edilen karekteri gösterir.
a[3:] - 3. karekter ve sonrasını alır.
a[3:5] -3. karekterden 5. karektere kadar olan bölümü alır, 5. karekter dahil değildir.
a[:5] - 5. karekterden öncesini alır.
a[-1] - Son karekteri gösterir.


List

Python'da numara veya stringleri bir liste yardımıyla tutabilirsiniz. Listeler köşeli parantezlerle oluşturulur ve her bir liste parçası virgüllerle ayrılır. Aynı liste içinde sayı veya string yer alabilir. Listeler stringler gibi index'e sahiptir ve index 0 dan başlar.

list=["istanbul", "ankara", 123, 999]

bir listeyi silmek için del komutu kullanılır

del list

bir listenin içindeki herhangi bir bölümü silmek için index numarası kullanılır.

del list[2]

Listeden çıkartılacak içerik belli ise remove komutu ile listeden silinebilir.

list.remove("istanbul")

Listeler stringler gibi davranış serviler, bir liste diğeri ile + işareti ile birleştirilebilir. indexleme aynıdır.




Tuple
Dictionary
Set










Break komutu

While veya for döngülerini durdurmak için kullanılır. break komutu işlendiği anda döngüden çıkılır. Döngüler içinde herhangi bir yerde kullanılabilir.


    

Windows Bilgisayara Loopback Interface Nasıl Eklenir.

Windows işletim sistemine sahip bir bilgisayarınız var ve bu bilgisayar veya server'a sanal loopback interface eklemek istiyorsanız aşağıdaki adımları izleyebilirmisiniz.

  1. Start menü ye tıklayın
  2. “cmd" yazın ve aratın.
  3. “cmd” icon'una sağ klik yaparak “Run as Administrator” seçeneğini seçin.
  4. Command'da “hdwwiz.exe” yazın ve enter'a basın

Donanım ekleme sihirbazı açılacaktır.

  1. "Welcome to the Add Hardware Wizard" ekranında Next butonuna tıklayın.
  2. "Install the hardware that I manually select from a list (Advanced)" seçeneğini seçin ve Next butonuna tıklayın.
  3. Bir sonraki ekranda "Network adapters"  seçeneğini seçin ve Next butonuna tıklayın.
  4. Bir sonraki ekranda soldan "Microsoft"  sağ listeden "Microsoft Loopback Adapter" seçin ve Next butonuna tıklayarak bitirin.

Bilgisayarınızın ethernet interfaceleri alanında yeni bir interface oluşacaktır. Her zaman up olacak bu interfacei kullanabilirsiniz.

Linux Ubuntu Komutları



Şeklindedir.

Linux Ubuntu'da içinde bulunduğunuz zamanın tarihini bir değişkene atamak için;

now=$(date +"%Y_%m_%d")

formatı kullanılır. Görmek için

echo $now



Linux'da Expect ile SCP Dosya Transferi

Linux'da expect kullanarak SSH bağlantı üzerinden scp ile dosya transferini aşağıdaki bash script ile yapabilirsiniz

#!/bin/bash

PASSWORD="şifre"

FOLDER="/Dosyaların_bulunduğu_klasör"

for HOST in IP_ADRESİ1 IP_ADRESİ2;
do
    expect -c "
    spawn /usr/bin/scp $FOLDER/File1 $FOLDER/File2 user@$HOST:/Directory
    expect {
    "*password:*" { send $PASSWORD\r;interact }
    }
    exit
    "
done

Script'de bulunan kırmızı alanları değiştirebilirsiniz. Birden fazla server'a dosya transferi yapabilirsiniz. Sadece bir server'a dosya transferi yapacaksanız kodu buna göre değiştirebilirsiniz.



Python Database Bağlantısı (sqlite)

Python ile aşağıdaki kod ile database bağlantısı sağlanabilir.

import sqlite3

# Fetch some student records from the database.
db = sqlite3.connect("students")
c = db.cursor()
query = "select name, id from students order by name;"
c.execute(query)
rows = c.fetchall()

# First, what data structure did we get?
print "Row data:"
print rows

# And let's loop over it too:
print
print "Student names:"
for row in rows:
  print "  ", row[0]

db.close()

Database'e bir satır eklemek için

import sqlite3

db = sqlite3.connect("testdb")
c = db.cursor()
c.execute("insert into balloons values ('blue', 'water') ")
db.commit()
db.close()


Veri tabanında bir datayı değiştirmek için 

update table set column = value where restriction ;

Veri tabanından bir datayı silmek için 

delete command: delete from table where restriction ;

MySQL database'e python ile bağlantı sağlanacak ise MySql connector gerekir. MySQL connector aşağıdaki adresten indirilebilir. Python 3 için.

https://dev.mysql.com/downloads/connector/

Diğer Python  versiyonları için aşağıdaki link'ten Mysql connector indirilebilir.



https://dev.mysql.com/downloads/connector/python/2.0.html



SQL Komutları

Bu yazımızda bazı SQL komutlarından bahsedeceğiz. Bu komutlar tüm SQL yazılımlarıyla çalışır.

Limit count offset skip

Bu şekilde bir komut kullanıldığında listelenecek satır sayısı sınırlanacağı gibi başlanacak satırda belirlenmiş olur.

Ör: 
....limit 10 offset 150
Bu komut 10 max satırın listelenmesini ve listelemeye 151. satırdan başlanacağını söylemektedir.

Order by columns Desc
Bu komut da oluşturulacak listenin neye göre sıralanacağını söyler. Sonda bulunan Desc listenin büyükten küçüğe sıralanmasını sağlar.

Ör:
...order by species, name

Örnekte de görüldüğü gibi birden çok sütün içinde sıralama yapılabilir.

Group by columns

Bu komutta ise farklı değerlerin gruplanması sağlanır.

Ör:
Select name, count(*) as num from animals group by name

Bu satır animals tablosunda bulunan name sütununda farklı isim gruplarının sayısını verir. "group bye name desc" şeklinde kullanırsanız sıralamayı büyükten küçüğe doğru yapacaktır.

Database'e veri eklemek için insert komutu kullanılır.

insert into table (columns1, columns2, columns3) values ('value1', 'value2', 'value3');

Örnek
insert into animals (name, species, birthdate) values ('wibble', 'opossum', '2018-04-01');

İki farklı tabloda arama yapmak için aşağıdaki komut kullanılabilir. animals ve diet isimli iki tablomuz olsun.

select animals.kolon from animals join diet on animals.kolon2 = diet.kolon2 where kolonb = 'deger';

Database içinde sadece 1 adet bulunan bir değer aranıyor ise burada having kodu kullanılabilir.

select species, count(*) as num from animals group by species having num = 1;

SQL kullanıcı sorgulama;

SELECT user FROM Dual WHERE ROWNUM = 1








Cisco Switch IOS Upgrade Nasıl Yapılır

Cisco switchler de işletim sistemini (IOS) değiştirmenin iki yolu vardır. İlk olarak cihaza yüklenecek olan işletim sistemi cisco.com sitesinden indirilir. Cisco switch modeline göre arattığınızda site size en güncel ve önerilen yazılımı yanında * işareti ile gösterir. Aynı sürüme ait iki adet dosya göreceksiniz indirilebilir durumda. Bu dosyaların her ikisi de aynı işletim sistemi sürümünü gösterir. Bunlardan biri *.bin dosyasıdır, diğeri *.tar dosyasıdır. Şimdi anlatacağım yöntemlerden hangisini tercih ederseniz o dosyayı bilgisayarınıza indirmelisiniz.

İlk olarak bilgisayarınız ile switch arasında bir ip bağlantı olmalıdır. Bunun için switch'e bir IP vermelisiniz ve aynı networkden bir IP bilgisayarınıza vererek iki cihazın haberleşmesi sağlanmalıdır. Bilgisayarınız ile switch arasında bağlantı yoksa ilk olarak bağlanabileceğiniz bir VLAN interface oluşturup IP adresi verin, daha sonra bilgisayarınızı seçtiğiniz VLAN'ın aktif olduğu porta bağlayın ve switch'e IP olarak erişebildiğinizden emin olun.

Daha sonra bilgisayarınıza bir TFTP yazılımı indirin. http://tftpd32.jounin.net/tftpd32_download.html bu yazılımı indirebilirsiniz. TFTP kullanmanız şart değil switch'in erişebileceği herhangi bir FTP sunucusu da kullanabilirsiniz.

Son olarak yapmanız gereken show version komutunu girerek eski IOS'i kontrol etmek ve yeni IOS'i koyacağınız yeterli yer olup olmadığına bakmaktır. Yeterli yer yok ise IOS upgrade denemeyin. Cisco.com sitesinden indireceğiniz dosya kadar yeterli yere ihtiyacınız olacak.

.Bin dosyası ile IOS upgrade

Bin dosyasını TFTP/FTP klasörüne indirin ve TFTP/FTP yazılımını çalıştırın. Switch'e aşağıdaki komutu kendinize göre düzenleyerek yazın.

TFTP için:
copy tftp://ip adresi/c2960x-universalk9-tar.152-2.E8.bin flash:

FTP için
copy ftp://user:pass@ip adresi /c2960x-universalk9-tar.152-2.E8.bin flash:

Dosyanın switch'e gidip gitmediğini kontrol edin.
show flash

Cihazın açılacağı işletim sistemini tanımlayın
show boot
#conf t
(config)#boot system flash:c2960x-universalk9-tar.152-2.E8.bin
(config)#exit
#show boot
BOOT path-list      : flash:c2960x-universalk9-tar.152-2.E8.bin

Switch'i yeniden başlatın.

WS-2960A#reload
Proceed with reload? [confirm]

Switch açıldığında kontrol edin.
#show version 

.Tar dosyası ile IOS upgrade

Tar dosyasını TFTP klasörüne indirin ve TFTP yazılımını çalıştırın. Switch'e aşağıdaki komutu kendinize göre düzenleyerek yazın.

TFTP Kullanıyorsanız:
archive download-sw /overwrite /reload tftp://ip adresi/c2960x-universalk9-tar.152-2.E8.tar

FTP kullanıyorsanız:
archive download-sw /overwrite /reload ftp://user:pass@ip adresi /c2960x-universalk9-tar.152-2.E8.tar

download-sw   : Yeni IOS'u download eder.
/overwrite        : Yeni IOS'u mevcut yazılımı silerek diske yazar.
 /reload            : İşlem bittiğinde switch'i yeniden başlatır.

Bu işlem yapıldıktan sonra cihaz eski konfigürasyonu ile açılacaktır. Konfigürasyon silinmez.


Cisco 2960, 2960S, 2960 plus, 2960-X, 3400E, 3650 serisi için uygulanabilir.
c2960x-universalk9-tar.152-2.E8.bin örnek IOS olarak kullanıldı.

Python Dosyaya Yazma ve Dosyadan Okuma

Python'da bir text dosyadan bir text datanın nasıl okunacağına ve dosyaya nasıl yazılacağına bakalım. Python open() komutu ile bir dosyayı okur veya yazar. Kullanımı aşağıdaki gibidir.

file_object  = open(“filename”, “mode”)

Modları aşağıdaki gibidir.

‘r’ – Sadece okumak için kullanılan okuma modu.
‘w’ – Dosya içine bilgi girmek için oluşturulur. Aynı isme sahip eski dosya silinecektir.
‘a’ – Dosyanın sonuna veri eklemek için kullanılan ekleme modu
‘r+’ – Okuma ve yazma işlemini yapmak için kullanılan moddur.

Örnek kullanım;
F = open(“workfile”,”w”)
Print f

Bir dosya oluşturup içeriğini doldurmak için aşağıdaki örnek kullanılabilir.

file = open(“testfile.txt”,”w”)

file.write(“Merhaba”)
file.write(“1.text”)
file.write(“2.text”)
file.write(“3.text”)

file.close()

Dosya okumak için

file = open(“testfile.txt”, “r”)
print file.read()

Şeklinde kullanılır.


Twilio Nasıl Kurulur

Bilgisayarınıza Python 2.7 veya daha üst versiyonu kurduysanız pip de kurulmuştur. Twilio kurmak için komut satırında

$ pip install twilio

Yazın ve kurmasını bekleyin, bilgisayarınızın internete bağlı olması gerekir. Kurulum bittikten sonra kontrol etmek için ise Python içinde

import twilio
print twilio.__version__

Konutlarını kullanın size versiyon numarası veriyor ise çalışıyordur.

Python ile SMS göndermek için aşağıdaki kodu kullanabilirsiniz.

from twilio.rest import Client

# Your Account SID from twilio.com/console
account_sid = "kod"
# Your Auth Token from twilio.com/console
auth_token  = "kod"

client = Client(account_sid, auth_token)

message = client.messages.create(
    to="+9091111111114",
    from_="+17711111111",
    body="Hello from Python!")

print(message.sid)

SSH ile Linux Bilgisayara Komut Gönderme

Bir bilgisayara SSH ile sadece komut yazmak için bağlanmak ve komutu konsoldan yazmaya gerek kelmadan konut gönderebilirsiniz.Bunun için aşağıdaki gibi SSH bağlantı bilgilerinden sonra komutu yazmak yeterlidir.

ssh kullanıcıadı@<IP Adresi> 'gönderilecek olan komut'

ör:

ssh user@172.16.0.1 'shutdown -r now'

Birden çok komt göndermek için komutlar arasına ; işareti konulur.

ssh kullanıcıadı@<IP Adresi> '1.komut; 2.komut; 3.komut'

Gibi birden çok komut göndermekte mümkündür. Komutlar sıra ile işlenir.

ör:

ssh user@172.16.0.1 'ls -l; ps -aux; whoami'

Linux

Google