Network Kontrol Yazılımı MTR

MTR linux üzerinde kullanılan ping, traceroute, jitter gibi network erişim bilgilerini size sağlayan bir yazılımdır. Windows versiyonu da bulunmaktadır. WinMTR

Aşağıdaki komut ile Linux Ubuntu üzerine kurulabilir.

sudo apt-get install mtr

CentOS ve fedora için

sudo yum install mtr

Komutları kullanılır. Kurulum yapıldıktan sonra konsolda;

mtr <Hedef IP adresi veya Hostname>

komutu ile çalıştırılır. Bu komut ile traceroute ve ping komutlarının karşılığı olan bilgiler ortalama maximum ve minimum süreler ile karşımıza gelir. Anlık rapor alınmak isteniyorsa

mtr --report <Hedef IP adresi veya Hostname>

Şeklinde kullanılır. Daha geniş bilgi alabilmek için aşağıdaki komut kullanılabilir. Bu komut ile jitter hesaplanabilir.

mtr -s 1460 -B 0 -oLDRSWNBAWVJMXI <Hedef IP adresi veya Hostname>

Bu komutun çıktısı hedef adrese giderken aşağıdaki bilgileri verir.

Loss% Drop   Rcv   Snt  Wrst  Last  Best   Avg  Wrst StDev Jttr Javg Jmax Jintü

Komut bilgileri:

NAME
       mtr - a network diagnostic tool

SYNOPSIS
       mtr  [-4|-6]  [-F FILENAME] [--report] [--report-wide] [--xml] [--gtk] [--curses] [--raw] [--csv] [--split] [--no-dns] [--show-ips] [-o FIELDS] [-y IPINFO] [--aslookup] [-i INTERVAL] [-c COUNT]
       [-s PACKETSIZE] [-B BITPATTERN] [-Q TOS] [--mpls] [-a ADDRESS] [-f FIRST-TTL] [-m MAX-TTL] [--udp] [--tcp] [-P PORT] [-Z TIMEOUT] [-M MARK] HOSTNAME

OPTIONS
       -h, --help
              Print the summary of command line argument options.

       -v, --version
              Print the installed version of mtr.

       -4     Use IPv4 only.

       -6     Use IPv6 only.  (IPV4 may be used for DNS lookups).

       -F FILENAME, --filename FILENAME
              MISSING

       -r, --report
              This option puts mtr into report mode.  When in this mode, mtr will run for the number of cycles specified by the -c option, and then print statistics and exit.

              This mode is useful for generating statistics about network quality.  Note that each running instance of mtr generates a significant amount of network traffic.  Using mtr to measure  the
              quality of your network may result in decreased network performance.

       -w, --report-wide
              This option puts mtr into wide report mode.  When in this mode, mtr will not cut hostnames in the report.

       -x, --xml
              Use this option to tell mtr to use the xml output format.  This format is better suited for automated processing of the measurement results.

       -t, --curses
              Use this option to force mtr to use the curses based terminal interface (if available).

       -g, --gtk
              Use  this  option  to force mtr to use the GTK+ based X11 window interface (if available).  GTK+ must have been available on the system when mtr was built for this to work.  See the GTK+
              web page at http://www.gtk.org/ for more information about GTK+.

       -l, --raw
              Use this option to tell mtr to use the raw output format.  This format is better suited for archival of the measurement results.  It could be parsed to be presented into any of the other
              display methods.

       -C, --csv
              MISSING

       -p, --split
              Use this option to set mtr to spit out a format that is suitable for a split-user interface.

       -n, --no-dns
              Use this option to force mtr to display numeric IP numbers and not try to resolve the host names.

       -b, --show-ips
              Use  this  option  to  tell mtr to display both the host names and numeric IP numbers.  In split mode this adds an extra field to the output.  In report mode, there is usually too little
              space to add the IPs, and they will be truncated.  Use the wide report (-w) mode to see the IPs in report mode.

       -o FIELDS, --order FIELDS
              Use this option to specify which fields to display and in which order.  You may use one or more space characters to separate fields.
              Available fields:

                                                                                              ┌──┬─────────────────────┐
                                                                                              │L │ Loss ratio          │
                                                                                              ├──┼─────────────────────┤
                                                                                              │D │ Dropped packets     │
                                                                                              ├──┼─────────────────────┤
                                                                                              │R │ Received packets    │
                                                                                              ├──┼─────────────────────┤
                                                                                              │S │ Sent Packets        │
                                                                                              ├──┼─────────────────────┤
                                                                                              │N │ Newest RTT(ms)      │
                                                                                              ├──┼─────────────────────┤
                                                                                              │B │ Min/Best RTT(ms)    │
                                                                                              ├──┼─────────────────────┤
                                                                                              │A │ Average RTT(ms)     │
                                                                                              ├──┼─────────────────────┤
                                                                                              │W │ Max/Worst RTT(ms)   │
                                                                                              ├──┼─────────────────────┤
                                                                                              │V │ Standard Deviation  │
                                                                                              ├──┼─────────────────────┤
                                                                                              │G │ Geometric Mean      │
                                                                                              ├──┼─────────────────────┤
                                                                                              │J │ Current Jitter      │
                                                                                              ├──┼─────────────────────┤
                                                                                              │M │ Jitter Mean/Avg.    │
                                                                                              ├──┼─────────────────────┤
                                                                                              │X │ Worst Jitter        │
                                                                                              ├──┼─────────────────────┤
                                                                                              │I │ Interarrival Jitter │
                                                                                              └──┴─────────────────────┘
              Example: -o "LSD NBAW  X"

       -y n, --ipinfo n
              MISSING

       -z, --aslookup
              MISSING

       -i SECONDS, --interval SECONDS
              Use this option to specify the positive number of seconds between ICMP ECHO requests.  The default value for this parameter is one second.  The root user may choose values  between  zero
              and one.

       -c COUNT, --report-cycles COUNT
              Use this option to set the number of pings sent to determine both the machines on the network and the reliability of those machines.  Each cycle lasts one second.

       -s PACKETSIZE, --psize PACKETSIZE
              This option sets the packet size used for probing.  It is in bytes, inclusive IP and ICMP headers.

              If set to a negative number, every iteration will use a different, random packet size up to that number.

       -B NUM, --bitpattern NUM
              Specifies bit pattern to use in payload.  Should be within range 0 - 255.  If NUM is greater than 255, a random pattern is used.
       -e, --mpls
              Use this option to tell mtr to display information from ICMP extensions for MPLS (RFC 4950) that are encoded in the response packets.

       -a ADDRESS, --address ADDRESS
              Use this option to bind the outgoing socket to ADDRESS, so that all packets will be sent with ADDRESS as source address.  NOTE that this option doesn't apply to DNS requests (which could
              be and could not be what you want).

       -f NUM, --first-ttl NUM
              Specifies with what TTL to start.  Defaults to 1.

       -m NUM, --max-ttl NUM
              Specifies the maximum number of hops (max time-to-live value) traceroute will probe.  Default is 30.

       -u, --udp
              Use UDP datagrams instead of ICMP ECHO.

       -T, --tcp
              Use TCP SYN packets instead of ICMP ECHO.  PACKETSIZE is ignored, since SYN packets can not contain data.

       -P PORT, --port PORT
              The target port number for TCP traces.

       -Z SECONDS, --timeout SECONDS
              The number of seconds to keep the TCP socket open before giving up on the connection.  This will only affect the final hop.  Using large values for this, especially combined with a short
              interval, will use up a lot of file descriptors.

       -M MARK, --mark MARK
              MISSING

Python Konutları 4

.append koduna bakalım. Bu kod bir listeye eklemeler yapabiliriz. + ile .append arasındaki farka bir örnek ile bakalım.

list1 = [1,2,3,4]
list2 = [1,2,3,4]

list1 = list1 + [5, 6]
list2.append([5, 6])

print "showing list1 and list2:"
print list1
print list2

Çıktısı
[1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, [5, 6]]

Şimdide split koduna bakalım. Bu kod bir cümle içindeki bir karektere göre cümleyi bölümlendirmeye yarıyor. Bir karekter belirtilmez ise boşlukları dikkate alıyor

cumle1 = "Deneme cumlesidir dikkate almayın"
list = cumle1.split()
print list

Çıktısı
['Deneme', 'cumlesidir', 'dikkate', 'almayın']

Şeklindedir.

Girilen bir kelime veya cümle karekterlerini küçük harfe dönüştürmek için .lower() büyük harfe çevirmek için .upper() kullanılır.

karekter = "AaBbCc"
karekter.lover()

print karekter

Çıktısı;
aabbcc

Python kodu içinden bir web sayfası linki açtırmak için aşağıdaki komut kullanılır.

import webbrowser
webbrowser.open ("http://www.serkan.net")

Python'da kodu çalıştırdığımızda bir yerde beklemesini istiyorsak aşağıdaki kodu kullanmammız gerekir.

>>> import time
>>> time.sleep(10)

Bu kodda time.sleep (sn) kodunda belirtilen saniye kadar bekler.

Bilgisayarın saatini komut ile görmek için;

>>> time.ctime()
'Mon Apr 02 14:25:31 2018'



Ubuntu Üzerine Webmin Nasıl Kurulur

Ubuntu üzerinde webmin dosyalar download edilerek veya internet üzerinden kaynaklar belirtilerek kurulabilir.

İlk olarak source dosyasına ilgili kaynak adresi girilir. Dosya açılır.

sudo nano /etc/apt/sources.list

Dosyanın en altına aşağıdaki satır eklenir.

deb http://download.webmin.com/download/repository sarge contrib

Webmin key indirilir ve eklenir.

wget http://www.webmin.com/jcameron-key.asc
sudo apt-key add jcameron-key.asc

Update edilir.

sudo apt-get update

Webmin kurulur

sudo apt-get install webmin

Webmin test edilir.

https://Server_IP_Adresi:10000


Python Kodları index

Python'da index özelliğine bakalım. Bu kodun kullanımı aşağıdaki gibidir.

<List>.index(<değer>)


Bu kod liste içinde aranan değerin konumunu gösterir. ör:

p = [1,2,3,4]
print p.index(3)
Çıktısı
2

İndex kodu sadece ilk bulduğu değerin konumunu gösterir, birkaç eşit değer varsa hepsinin konumunu göstermez.

<deger> in <list>


in kodu bir değerin listede olup olmadığını True veya False cevabı ile söyler. Ör:

p = [1,2,3,]
print 3 in p

Çıktısı
True

<deger> not in <list>


not in kodu in kodunun aksine değer listede yok ise True varsa False çıktısı verir.

p = [1,2,3,]
print 3 not in p

Çıktısı
False

Bu kodun diğer bir kullanımı ise

not <deger> in <list> Şeklindedir.

Bir örnek yapalım. Bu örnekte 2. değeri 1. liste içinde bulup konumunu yazacağız. Listede bulunamıyorsa -1 değeri dönecek.

def find_element(a,b):
    if b in a:
        n=a.index(b)
        return n
    else:
        return -1

print find_element([1,2,3],3)
2

print find_element(['test','deneme'],'alo')
-1



Python For Döngüsü

Python'da For döngüsü bir liste için yazılabilir ve listenin her bir değeri için teker teker işlem yapılabilir. Bunu bir örnek ile gösterelim.

example_list = ['a', 'b', 'c', 'd']
for thing in example_list:
    print thing

Çıktısı
a
b
c
d

Şeklindedir. Yukarıdaki örnekte for döngüsüne sokulan bir listenin değerleri sıra ile yazdırılmaktadır.

Bir mrenek daha yapalım.

def harf_say(p):
    t = 0
    for test in p:
        if test[0] == "U":
            t = t + 1
    return t
         
print harf_say (['deneme','Ulu','Univercity'])

Bu kod liste içerisinde U harfiyle başlayan kelimelerin kaçtane olduğunu gösterir, buna benzer bir kod ile farklı aramalar yapabilirsiniz.



Python Değişken Listesi

Python'da değişkenler liste halinde aşağıdaki gibi yazılabilir.

liste = ["test1", "test2", "test3", test4"]

Bu listeden herhangi bir değer seçilecek is değişken içinden karekter seçer gibi sonunda bu değer belirtilir.

print liste[1]

Çıktısı
test2

görüldüğü gibi listede index 0 dan başlar 1. sıradaki değer yukarıdaki gibi gösterilir. Birde karışık liste örneğine bakalım

liste2 = ["deneme", 34, [1,3,5], "istanbul", "Ankara"]

print liste2[2]

Çıktısı
[1,3,5]

print liste2[2] [2]

Çıktısı
5

Gördüğünüz gibi iç içe listeler yazılabilir ve bu listelerden değerler yukarıdaki gibi çekilebilmektedir.

Listeler içinde bulunan herhangi bir değeri aşağıdaki gibi değiştirebilirsiniz.

liste [I,S,T,A,N,B,U,L]

Bu listedeki ilk harfi değiştirelim.

liste [0] = "İ"
print liste

Çıktısı
[İ,S,T,A,N,B,U,L]

Olacaktır. Bu şekilde liste içerinde bir değişiklik olduğunda listenin eşitlendiği diğer değişkenlerin içerikleri de değişmiş olur. Bunu bir örnek ile gösterelim.

>>> p=[1,2,3]
>>> q=p
>>> p[0]=9
>>> print p
[9, 2, 3]
>>> print q
[9, 2, 3]
>>>

Listeye bir değer daha eklemek için appent kodu kullanılır. Bunu bir örenk ile gösterelim. Aşağıdaki örnekte listeye bir sayı daha ekliyoruz ve liste genişlemiş oluyor.

>>> list=[1,2,3,4,5]
>>> list.append(9)
>>> print list
[1, 2, 3, 4, 5, 9]
>>>

İki listeyi birleştirmek için + işareti kullanılabilir.

>>> list1=[1,2]
>>> list2=[2,3]
>>> list3 = list1 + list2
>>> print list3
[1, 2, 2, 3]

görüldüğü gibi içerikten bağımsız olarak iki liste 4 ile birleştirildi. Yukarıdaki örnekden devam edersek list3 listesinin içerdiği değer sayısını saymak için len() kodunu kullanabiliriz. len() kodu bize listenin, bir bümlenin veya bir dizinin kaç değer veya karekter içerdiğini verir.

>>> len(list3)
4
>>> len("istanbul")
8


Linux'da konsol'a bağlanamayan kullanıcı ile SSH dosya transferi.

Sadece dosya transferi yapacak olan SFTP kullanıcıları konsola bağlanmalı ve belirtilen klasör dışında üst klasör görüntüleme hakkı olmamalıdır. Böyle bir SFTP bağlantısı sağlayabilmek için aşağıdaki yapılandırmadan faydalanabilirsiniz.

İlk olarak kullanıcı oluşturalım

 adduser sftpuser

Bosyaların upload download edilebileceği bir klasör oluşturalım

mkdir -p /var/sftp/uploads

Klasör yetkilerini düzenleyelim

chown root:root /var/sftp
chmod 755 /var/sftp
chown sftpuser:sftpuser /var/sftp/uploads

SSH konfigürasyonunu yapalım. ssdd_config dosyasına aşağıdaki bölümü ekleyelim.


nano /etc/ssh/sshd_config

Match User sftpuser
ForceCommand internal-sftp
PasswordAuthentication yes
ChrootDirectory /var/sftp
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no

Son olarak SSH servisini yeniden başlatarak testimizi yapalım.

/etc/init.d/sshd /reload


Python Randint

Randint komutu verdiğiniz bir aralıkta rasgele bir değer seçmeye yarar.

randint (başlangıç, son)

Burada başlangıç ile son arasında bir sayı seçilir. Aşağıdaki örnekte 1'den 5'e kadar herhangi bir sayı seçilecektir.

randint (1,5)

Bir örnek yapalım

from random import randint

def random_verb():
    n = randint (0,1)
    if n==0:
        return "kayak"
    else:
        return "run"
print random_verb()



Python Debugging

Python'da oluşan bir hatanın tespit edilebilmesi için verdiği hata mesajlarından faydalanabilirsiniz. Hatanın hangi koddan kaynaklandığını mesaj içerisinde görebileceksiniz. Bazen kod içerisindeki bazı bölümlerin kapatılması gerekebilir. Bu durumda kodu silmek yerine işlevsiz hale getirebilirsiniz. # karekteri kendinden sonraki kod satırını işlevsiz hale getirir.

# print "Deneme"

Yukarıdaki satır Python'da işlem görmez. Birden çok satır sözkonusu ise hepsine # işareti koymak yerine ''' kullanılabilir. # Python'da yorum veya hatırlatıcı not yazmak için kullanılır.

'''
print "Deneme1"
print "Deneme2"
print "Deneme3"
'''
Üç adet tek tırnak ile başlayıp kapatılması gereken yer sonuna yine üç adet tek tırnak koyarsanız yukarıdaki gibi olan bölüm Python tarafından işlenmeyecektir.

https://docs.python.org/2/library/pdb.html

Python Karşılaştırma İşlemleri. IF ELSE

Python Karşılaştırma İşlemleri. IF ELSE

Python kodlama da karşılaştırma ifadeleri aşağıdaki gibi kullanılabilir.

>>> print 21>12
True
>>> print 21>32
False
>>> print 3*7>21
False
>>> print 5*4 != 23
True
>>> print 4 == 2*2
True
>>>

Yukarıda görüldüğü gibi eşit değil için != kullanılırken eşittir karşılaştırması için == kullanılır. Tek eşittir python'da atama anlamına gelir. Örneğin a = 4 a değişkeninin değerini 4 yapar. a == 4 ise anın 4'e eşit olup olmadığını sınarken kullanılır.

>>> print "hello" == "hello"
True

>>> hello=5
>>> print hello
5

Şeklinde ikisinin farkını gösterebiliriz.

Python IF Kullanımı


IF ELSE kullanımını bir örenk üzerinde gösterelim.

if 10 > 20:
    print "Ilk sayi buyuk"
else:
    print "Ikınci sayi buyuk"


Görüldüğü gibi ilk sayı ile ikinci sayıyı karşılaştıran bir karşılaştırma yapılmış. İlk sayı büyük olmadığı için çıktı sonucu "Ikınci sayi buyuk" olacaktır.

Bir örnek daha yapalım. İlk harfi "S" olan isimler için "True" farklı olan harfler için "False" çıktısını veren bir kod yazalım

def isim(a)
      if a[0] == S:
         return True
      else:
         return False
print isim("Serkan")

Bu kodun çıktısında "True" yazacaktır. Serkan ismini alıp ilk karekteri olan S'nin S'ye eşitliğine bakarak True çıktısı alınır.

Üç sayının hangisinin büyük olduğunu bulan bir kod yazalım

def biggest(a,b,c):
    if a > b:
        if a > c:
            return a
        else:
            return c
    else:
        if b > c:
            return b
        else:
            return c
print biggest (2,5,9)

Gördüğünüz gibi if karşılaştırmaları iç içe yazılarak birçok karşılaştırma yapılabilir. Bu kodda amaç en büyük sayıyı bulmaktır ve çıktı 9 olacaktır. Python'da bunu hızlı bir şekilde yapacak komut max komutudur.

max (9,34,6,77,2,555)

Bu komut parantez içinde bulunan sayıların en büyüğünü bulur ve yazar. Aynı şekilde en küçük sayıyı bulmak içinde min komutu kullanılır.

min (3,5,66,7)


Python While Kullanımı


Şimdide while döngülerine bakalım

a = 0
while a != 10:
    a = a + 1
    print a

while sürekli yapılmak istenen işlemlerde kullanılır ve if döngüsüne benzer. Yukarıdaki örnekte a 0 değeri while içinde test edilir. Sonuç doğru ise bir artırılır ve yazdırılır. Sonuç yanlış oluncaya kadar döngü devam eder. Sonuç yanlış olmazsa döngü sonsuza kadar devam eder. While komutundan çıkılabilmesi için karşılaştırmanın yanlış olması gerekir.

def remove_spaces(text):
    text_without_spaces = '' #empty string for now
    while text != '':
        next_character = text[0]
        if next_character != ' ':    #that's a single space
            text_without_spaces = text_without_spaces + next_character
        text = text[1:]
    return text_without_spaces
print remove_spaces("hello my name is andy how are you?")

Yukarıdaki kod cümle içindeki boşlukları kaldıran bir koddur.

Break kodu döngüden çıkmak için kullanılır. Bu koddan sonra döngü devam etmez döngüden çıkılır.

while(True): #True demek sonsuz döngüdür.
    print(i)
    i = i+1
    if(i==8):
        break

Burada i=7 olduğunda döngüden çıkılır.



Python komutları 3

Python kodu içerisinde bir if else karşılaştırması aşağıdaki örnekte görüldüğü gibi yapılabilir.

def fonksiyon(deger):
if type(deger)== type(1):
return 1
else:
return "Ayni tip degil"
print fonksiyon(20)
print fonksiyon(20.1)

Çıktısı
1
Ayni tip degil

Görüldüğü gibi fonksiyon içindeki 20 satısının 1 ile aynı tip olması durumunda 1, farklı tip olması durumunda mesaj ile dönen bir karşılaştırma yapmış olduk.


Windows Komut Satırında Dosya Senkronizasyonu Yapmak

Bilgisayarınızda bulunan dosyaları başka bir bilgisayar, dosya paylaşımı veya disk üzerine yedeklemek için windows komutlarından xcopy kullanılabilir. Bu komut size herhangi bir program kurmadan dosya yedeklemesi ve klasör senkronizasyonu sağlar.

Xcopy için seçenekler

/D - elirtilen tarihte veya sonrasında değişen dosyaları kopyalar. Tarih verilmezse, yalnızca kaynak saati hedef zamanından daha yeni olan dosyaları kopyalar.
/I - Hedef yoksa ve birden fazla dosya kopyalamak hedefin bir dizin olması gerektiğini varsayar.
/E - Boş olanlar da dahil olmak üzere dizinleri ve alt dizinleri kopyalar.
/Y - Üzerine yazmak istediğiniz varolan hedef dosyayı üzerine yazdırır.
/H - Gizli ve sistem dosyalarını kopyalar.
/R - Salt okunabilir dosyaların üzerine yazmayı sağlar.

Dosyaları bir dizinden diğerine senkronize etmek için xcopy'yi şöyle kullanabilirsiniz:

xcopy c:\kaynakdirectory c:\hedefdirectory /D /I /E /F /Y /H /R

Uzak bir sunucu ile senkronizasyon yapmak için hedef dizin olarak yalnızca bir sunucu adresi ve dizin adı kullanabilirsiniz:

xcopy c:\kaynakdirectory \\server\hedefdirectory /D /I /E /F /Y /H /R

Bir sunucu dizini için geçici bir yerel sürücü oluşturmak istiyorsanız pushd komutunu kullanabilirsiniz.

pushd \\server\hedefdirectory

Bir batch dosyası hazırlamak isterseniz notepad içinde

@echo OFF
echo : XCOPY Batch Dosya Yedekleme
xcopy {KAYNAK_PATH} {HEDEF_PATH} /D /I /E /F /Y /H /R
echo : Islem Tamam
pouse

Yazarak Yedekleme.bat şeklinde bir bat dosya uzantısı ile kaydedin ve üzerine tıklayarak çalıştırın.

Linux Ubuntu'da LFTP Kullanımı

LFTP genelde yedek alma veya klasör senkronizasyonu için kullanılan bir dosya transfer metodudur. Özellikle klasör içeriği senkronizasyonunda çok başarılı bir uygulamadır. kullanılan Syntax aşağıdaki gibidir.

lftp [-d] [-e cmd] [-p port] [-u user[,pass]] [site]
lftp -f script_file
lftp -c commands
lftp --version
lftp --help

İlk olarak Linux bilgisayar üzerine LFTP yükleyelim, burada bizim tercihimiz Ubuntu bilgisayar.

LFTP yazilimi asagidaki komut ile yüklenir.

apt-get install lftp

Dosya senkronizasyonu yapılmak isteniyor ise bir bash script hazırlanıp bununla istenildiği zaman senkronizasyon sağlanabilir.

Sh dosyasi asagidaki gibi hazirlanir.

vi ftpsync.sh
-------------------------------
#!/bin/bash
HOST='192.x.x.x'
USER='kullanıcı adı'
PASS='Şifre'
TARGETFOLDER='/'
SOURCEFOLDER='/srv/'

lftp -f "
open $HOST
user $USER $PASS
lcd $SOURCEFOLDER
mirror --reverse --delete --verbose $SOURCEFOLDER $TARGETFOLDER
bye
"
------------------------------

ftpsync.sh dosyasina çalistirma hakki verilmelidir.

chmod 777 ftpsync.sh


Bu script bilgisayarinizda SOURCEFOLDER'daki dosyalari ftp'de bulunan  TARGETFOLDER ile senkronize eder. Bilgisayarinizda bir dosya silindiginde komut çalistirildiginda FTP'den de silinecektir.--delete komutu kullanilmazsa tek yönlü senkronizasyon gerçeklesir. --reverse komutu silinip $TARGETFOLDER ve $SOURCEFOLDER yer degistirilirse senkronizasyon ters yönde gerçeklesecektir.

Linux'dan komut ile mail göndermek

Linux üzerinden komut satırında mail atabilirsiniz. Bunun için Linux bilgisayarınız üzerinde bir smtp sunucusu olmalı ve ayarları yapılmalıdır. SMTP sunucusu olarak Postfix Mail Server kullanabilirsiniz. Kullandığınız bilgisayarın dışında bir SMTP sunucusu üzerinden mail atmak istiyorsanız Postfix Mail Server'ınıza diğer smtp sunucu adresini girmelisiniz. Başka bir SMTP sunucusu kullanacaksanız;

/evc/postfix/mail.cf dosyası sonuna aşağıdaki satırları ekleyin.

myhostname = localhost
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_command =
mailbox_size_limit = 0
recipient_delimiter = +
inet_protocols = all
home_mailbox = Maildir/
smtpd_sasl_local_domain =
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
relayhost = 10.x.x.x  #SMTP sunucu IP adresi
myorigin = email.domain.com #Domain

Daha sonra Postfix servisini yeniden başlatın.

/etc/init.d/postfix reload

Komut satırında aşağıdaki komutu kendinize göre düzenleyerek mail atın.

mail -a "From: Gonderen Kisi <GonderenMail@Adresi>" -s "Konu" MailinGonderilecegi@Adres < GonderilecekBilgiIcerigi.txt

Bu komutu yazıp uyguladığınızda gönderilen mail yukarıda belirtilen mail adresinden ilgili mail adresine gönderilmiş olur. Bu komut ile mail gönderdiğinizde büyük bir ihtimalle mail spam (Gereksiz Mail) klasörüne düşecektir. Bunu önlemek için SMTP sunucu ve DNS yapılandırması düzeltilmelidir.





Python komutları 2

Bu bölümde yazacağımız Python kodlarını konsolda değil dosya haline getirerek çalıştıracağız. Kodları bir text editöründe yazarak komut satırında bu dosya çağrılmalı. Örneğin test.py isimli bir dosya hazırlayın ve içine aşağıdaki komutu girin

print "deneme"

Daha sonra dosyayı kaydedin ve dosyayı pythom komutu ile komut satırından çağırın.

python test.py

Çıktısı

deneme

Artık başlayabiliriz, Python da prosedür kullanumuna bakacağız. Python da prosedür şu şekilde yazılır.

prosedür <"değer1", "değer2", "değer3",.....>

Prosedür formatını bir örnek ile yazalım

def string():
   return s[2:]
print string("deneme")

Burada deneme kelimesi def içinde değerlendirilir ve 2. karekter ve sonrası print komutu ile yazdırılır. Çıktısı;

neme

Şeklindedir.

Bir örnek daha yapalım. Bu sefer print çıktısını def içinde yazalım

def fonksiyon(parametre1, parametre2):
print parametre1
print parametre2
fonksiyon("Deneme Metni",5)

Çıktısı;
Deneme Metni
5

Şeklinde olacaktır. fonksiyon değişkeni içinde bulunan parametre1 ve 2 def içinde yazdırılmıştır.

Bir değişken akış içerisinde farklı değerler alabilir. Python'da bir değişkenin değerinin değişip değişmediğini ID numarası ile kontrol edebilirsiniz. Bir örnek yapalım;

>>> a=4
>>> id(a)
50820716
>>> a=9
>>> id(a)
50820656

Yukarıda da görüldüğü gibi a değişkeninin farklı iki değeri için ID'si değişmektedir. Bir değişkenin değerinin akış içinde değişip değişmediğini bu şekilde görüntüleyebilirsiniz.

Örneklere devam edelim. Aşağıdaki örnekte x değişkenine fonksiyon(a) değeri atanmış, bu değer def içinde aşağıdaki gibi +1 eklenerek hesaplanıyor ve hesaplama sonucu x'e eşit olduğu gösteriliyor.

def fonksiyon(degisken):
degisken +=1
print "Sayi def degeri= " + str(degisken)
return degisken
a=9
x=fonksiyon(a)
print "Sayinin global degeri=" + str(x)

Çıktısı
Sayi def degeri= 10
Sayinin global degeri=10

Not: += ifadesi bir kısaltmadır bu kısaltma ile x=x+5 fonksiyonunun x+=5 şeklinde yazabilirsiniz.

Çıktıyı incelediğimizde her iki değerin doğal olarak eşit olduğunu görüyoruz.def içinde bulunan return komutu def dışına döneceği değeri gösterir ve son satırda yer alır. def içinde bu satırdan sonra yazılacak olan satırlar dikkate alınmaz.


Python komutları 1

Python kodlamada çıktıları görüntülemek için print komutu kullanılır. Yazılım açıldığında aşağıdaki gibi bir ekran açılacaktır, görüldüğü gibi python 2.7 kullanacağız. Komut satırında print komutu arkasında yazılacak olan rakam
veya yazı çıktırı aşağıdaki örnekteki gibi olur.

Python 2.7.14 (v2.7, 20:19:30) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.

>>> print 5
5
>>> print 'deneme'
deneme
>>>

Python rakamlar üzerinde işlem yapabilirken karekterler için ' veya " kullanılması gerekir.

Python Code
Python'da dört işlemin nasıl yapıldığına bakalım.

>>> print 2 + 2
4
>>> print 3 * 3
9
>>> print 9 / 3
3
>>> print 6 - 2
4

Aynı satırda birkaç kez dört işlem yapılabilir ve parantez kullanılabilir.

>>> print (4 + (2 * 2)) / 8
1

Python da değişken tanımlamak için bir örnek yapalım.

name = 1 yazdığımızda name değişkenine 1 değerini vermiş oluruz. Python çıktısı;

>>> name = 1
>>> print name
1

Bir kaç değişken tanımlayarak dört işlem yapaılım.

>>> en=23
>>> boy=10
>>> yukseklik=3
>>> print en * boy * yukseklik
690

Değişkenler içinde dört işlem yapılarak sonuş yazdırılabilir.

>>> sonuc=en * boy * yukseklik
>>> print sonuc
690

Kelime veya cünlelerde değişkenlere atanabilir.

>>> degisken="deneme mesaji"
>>> print degisken
deneme mesaji

Python'da bir kelime veya cümle içinden bir karekter yazdırılmak isteniyor ise

>>> print "deneme" [2]
n
Şeklinde kullanılır. Yukarıdaki örnekte n 3. karekter gibi görünebilir fakat Python da ilk karekter 0. karekter olarak kabul edilir ve bu durumda n 2. karekterdir.

Değişken değerinin sadece bir bölümü yazdırılmak isteniyorsa satır sonuna [seçilen ilk karekter sırası:son karekter sırası] ibaresi eklenir.

>>> print "deneme" [1:3]
en

Sondan başlanarak başa doğru seçmek isteniyorsa -1 den başlanarak hangi karektere kadar yazılacaksa eklenir.

>>> print 'deneme' [-3:5]
em

Python da bir karekterden sonrası yazdırılacak ise

>>> print "deneme" [1:]
eneme

Python da bir karekterden öncesi yazdırılacak ise

>>> print "deneme" [:4]
dene

şeklinde kullanılır. Komut eki [:] şeklinde kullanılırsa tamamı yazılır, bu ek kullanılmadığında da ilgili kelime veya cümlenin tamamı yazılır.

>>> print "deneme" [:]
deneme

Bu özellik ard arda yazılarak istenen bölümler alınarak yazdırılabilir. Kullanımı;

>>> print "deneme" [:3] + "deneme" [4:]
denme

Bir satırda kelime ve sayı yazdırılmak isteniyorsa str() kullanılır. Bu şekilde parantez içinde işlem de yapılabilir.

>>> print "Sonuc= " + str(5+5)
Sonuc= 10

Python'da bir string içinde arama yapmak için find komutu kullanılır. Kullanımı

<string>.find("aranan kelime veya karekter") Bir örnek ile görelim.

>>> print "Bu cumle icinde arama yapilacaktir".find("arama")
16

Görüldüğü gibi arama kelimesinin 16. karekterden başladığını söylüyor. Arama sonucunda aranan kelime bulunamaz ise -1 çıktısı görüntülenecektir.

>>> print "Bu cumle icinde arama yapilacaktir".find("sonuc")
-1

Bu örnekte cümle içinde sonuc kelimesi aranıyor fakat bulunamadığı için -1 çıktısını alıyoruz. Bu aranan kelime veya karekterin bulunamadığını gösteriyor.

Belirli bir karekterden sonra arama yapmak istiyorsanız aşağıdaki kullanımı inceleyebilirsiniz. Burada 21. karekterden sonraki a harfi aranıyor ve 23. karekterde bulunuyor.

>>> print "Bu cumle icinde arama yapilacaktir".find("a",21)
23

Cümle içinde herhangi bir karekter veya kelime değiştirilecek ise replace komutu kullanılır. Kullanımı;

>>> print "Bu cumle icinde arama yapilacaktir".replace("arama","inceleme")
Bu cumle icinde inceleme yapilacaktir

Görüldüğü gibi arama kelimesi yerine inceleme kelimesi yazılmıştır.

Python türkçe dil desteği için Python Idle Python27\Lib\idlelib\ üzerinde Options > General menüsünde UTF-8 seçilmelidir.


Serkan YILDIZ

Python kodlamaya başlarken

Python kodlamaya başlarken öncelikle bir text editör ve python yazılımı gerekecektir. Editör olarak Atom veya Sublime kullanılabilir. Bu yazılımlar kod yazarken kolaylık sağlayacaktır. Notepad'de kullanabilirsiniz.

Editör yazılımına karar verdikten sonra Python yazılımını aşağıdaki linkten indirip bilgisayarınıza kurmalısınız.

https://www.python.org/downloads/

Bu link'te 3.6 ve 2.7 versiyonlarını göreceksiniz. aralarında çok küçük farklılıklar var ama en son versiyonu öğrenmenizi tavsiye ederim.

Kurulum tamamlandıktan sonra seçtiğiniz editörü açın ve aşağıdaki kodu yapıştırın

Python 3 kurduysanız
print ("deneme")

Python 2 kurduysanız
print "deneme"

Daha sonra test.py olarak dosyayı kaydedin.

Daha sonra windows komut satırında

python dosya yeri\test.py

Yazın, çıktı olarak

deneme

Yazısını görüyorsanız Python kodlamaya başlayabilirsiniz.

HTML CSS Dosyası Nasıl Oluşturulur, Nasıl Kullanılır

HTML dosyaların görsel olarak yapılandırılması için style tag'leri kullanılmaktadır. Bu tag içinde çok fazla tanım yapılacak ise her html dosyanın yüklenme süresi ve kapladığı alan artacaktır. Bunun yerine tüm html dosyaları için tek bir CSS hazırlanması ve html içinden çağrılarak kullanılması daha efektif olacaktır.

 HTML dosyası içinde CSS kullanmak için aşağıdaki link kodu kullanılır. Link tag'i her zaman Head başlığı altına yazılır.

  <link rel="stylesheet" href="style.css">

Bu kod style.css dosyası içindeki tanımlarım bu HTML dosyasına aktarılmasını sağlar. style.css dosyası bir text dosyadır ve notepad gibi uygulamalar ile hazırlanabilir.

İlk olarak bir HTML dosyası hazırlayın;

<!DOCTYPE html>
<html>
<head>
  <title>Css Örneği</title>
  <link rel="stylesheet" href="style.css">
</head>
<body>
<h1>
  :: <em>CSS Örnek Uygulama</em> ::
</h1>
</body>
</html>

Yukarıdaki kodlamayı bir dosyaya yazarak cssTest.html olarak kaydedin. Aynı dizine style.css isimli bir dosya daha oluşturun ve aşağıdaki içeriği bu dosyaya yazın.

body {
    background-color: #e3e3e8;
}
h1 {
  background-color: #ff9900;
  position: fixed;
  text-align: center;
}

Html dosyasını açtığınızda arka plan renginin ve h1 tag'i içinde bulunan metnin arka plan renginin css dosyasında tanımlandığı gibi olacağını göreceksiniz. Html tag'lerinin tamamı Css dosyası içinde görsel olarak şekillendirilebilir. Bilinen Html tag'leri için değilde spesifik bir değişiklik yapılacak ise class kodu kullanılır. Ör;

<div class=test>Deneme Mesajı</div>

Burada tanımlanan class'ın Css dosyası içinde özellikleri yazılır. Class'lar başına nokta konularak css dosyası içinde tanımlanırlar.

.test {
   text-align: center;
   color: red;
}

Bu kodlar Html dosyasına eklendiğinde "Deneme Mesajı" sayfa ortasında kırmızı renkte görüntülenir.




HTML içinde Style oluşturma

HTML dosya içerisinde bazı özellikleri belirtmek için sytle kodu kullanılır. Bu kod html içinde direk yazılarak kullanılabildiği gibi bir css dosyası referans gösterilerekte kullanılabilir.

Bu kodun üç şekilde kullanımı mevcuttur ve sonuç bu üç kullanım içinde aynıdır. Tekrarlanan kodlar için kullanım kolaylığına göre seçim yapmak gerekir.

1.<head> içinde kullanılan style

Aşağıdaki kodda style kodu head içinde yer almaktadır. Bu kod body içinde bulunan tüm div seçimlerinin yükseklik ve genişliği belirlenmiştir. .stop class'ı kullanılıyorsa arka plan renginin kırmızı olması sağlanmıştır.

<head>
<style>
  div {
    height : 50px;
    width : 50px;
    border-radius: 25px;
  }
  .stop {
    background-color: red;
  }
</style>
</head>
<body>
<div class="stop"></div>
  <div>
    This will have a red background.
  </div>
</body>

2. div kodu içinde style kullanımı.

style kodu div içinde aşağıdaki gibi kullanılır ve sadece yazıldığı div içeriğini etkiler. Sadece bir kez kullanılacak olan özelliklerde tercih edilebilir.

<body>
  <div style="background-color: red">
    Test text.
  </div>
  <div style="background-color: red">
    Test text.
  </div>
</body>

3. Css dosyası içinde style kullanımı.

Html dosyasına bir referans css dosyası eklenerek bu css dosyası içinde style komutlarını kullanarak genel style kullanımları listelenebilir ve bu dosya referans gösterilerek tekrar tekrar yazmadan class'lar ile gösterilebilir.

<head>
   <link rel="stylesheet" href="main.css">
</head>
<body>
  <div>
    This text.
  </div>
</body>

Bu örnekte main.css dosyasına aşağıdaki div içeriği yazıldığında div kullanıldığı durumda arka lanın kırmızı olması sağlanır.

div {
  background-color : red;
}

Arka plana sabit resim koymak isterseniz aşağıdaki kodu kullanabilirsiniz.

<head>
<style>
body {
  background-image: url('1.jpg');
  background-repeat: no-repeat;
  background-attachment: fixed;
  background-size: cover;
}
</style>
</head>

HTML Programlama

HTML dosya hazırlamada kullanılan bazı kodelardan bahsedeceğiz. İlk olarak bir HTML dosyanın sahip olması gereken kodlardan bahsedelim.

HTML dosya uzantısı .html veya .htm olmalıdır. Bu dosyaların sahip olması gereken kodlar aşağıdaki gibidir.

<!DOCTYPE HTML>  - Doküman tipini tanımlar. ör: Html  5
<html> - Html  dosya başlangıç kodudur.
<head> - Meta, title, link, java script, css gibi bilgilerin bulunduğu alandır.
<title>Title</title> - Html başlık bölümüdür.
</head> - Head bölümü sonu
<body> - Websayfasının gösterilecek tüm içeriği bu bölümde yer alır.
<b>Content</b>
</body> - Body bölümü sonu
</html> - Html bölümü sonu

Yazı karekterlerinin kalın harflerle yazmak için; <b> kodu kullanılır.

<b>Yazı</b> Çıktısı Yazı şeklindedir.

İtalik yazı karekteri için <em> kodu kullanılır.

<em>Yazı</em> Çıktısı Yazı şeklindedir.

Alt satıra geçmek için <br> kodu kullanılır.
Paragraf için <p> kodu kullanılır. Kullanımı;

<p>Yazı</p> Şeklindedir.

HTML içinde birçok kod aşağıdaki formatta yazılır.

<tag işlem="değer"> içerik </tag>

Anchor = a = link komutlarına bakalım

<a href="www.serkan.net">Serkan Web Page</a>

HTML dosyaya resim eklemek için 

<img src="url" alt="Açıklayıcı Yazı"> komutu kullanılır.

HTML dosyası web sayfası içindeki genel kuralları belirliyor. Css dosyası ise HTML içeriğinin hasıl görüntüleneceğini belirliyor ve görsel özellikleri yönetiyor. Css dosyası ile yazı tipleri, kalınlıkları, renk, resim boyutları gibi özellikler yönetiliyor. Css dosyası içeriğin istediğiniz formatta görüntülenmesini sağladığı gibi web sayfanıza bir standart getiriyor. Bu dosyadaki tanımları defalarca kullanarak aynı kodları sürekli html içerisinde yazmak zorunda kalmıyorsunuz.






Google