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

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.

Google