Skip to content

bash-completion : bash ile gelişmiş komut tamamlama

debian tabanlı dağıtımlarda bash-completion özelliği genellikle varsayılan paketler arasında yer alıyor. nedir bu bash-completion derseniz komut yorumlayıcısında her aşamada tab tuşu ile komut tamamlama özelligidir.

örnek olarak “apt-get install ” yaptığınızda paketin tam adını bilmesek bile kurulabilecek paketler listenelecektir.

yazılım hakkında detaylı bilgi almak isterseniz http://bash-completion.alioth.debian.org/ adresinden bilgi alabilirsiniz.

eğer bu paket dağıtımınızda yoksa öncelikle kurmanız

root@cicek:~#apt-get install bash-completion

ve sonrasında .bash_profile veya .bashrc gibi uygun bir dosyayı

root@cicek:~#vi .bash_profile

düzenleyerek aşagıdaki satırları eklememiz yeterli olacaktır.

if [ -f /etc/bash_completion ]; then
 . /etc/bash_completion
fi

linuxte vmware kurulumu sırasında karşılaşılan karakter kodu hatası

linux kullanıyor ve zorunlu nedenlerle windows ihtiyacınız olursa vmware elbette en iyi çözüm gibi durmaktadır.

http://www.vmware.com/go/tryworkstation-linux-64 adresinden linux için gerekli yazılımı indirdikten sonra kuruluma sıra geldiğinde

root@cicek:# ./VMware-Workstation-Full-12.1.0-3272444.x86_64.bundle 
  File "/usr/lib/vmware-installer/2.1.0/python/lib/sqlite3/__init__.py", line 0
SyntaxError: ('unknown encoding: ISO-8859-1', ('/usr/lib/vmware-installer/2.1.0/python/lib/sqlite3/__init__.py', 0, 0, None))

hatası ile karşılaşıyorsanız sizde linux unuzu Türkçe olarak yapılandırmışsınız ve bu şekilde kullanıyorsunuz demektedir. bu ve benzeri duruma aslında bir çok yazılımda karşılaşabilirsiniz. çözümü ise oldukça basit. komut yorumyacısına LANG=en eklemek.

root@cicek:# LANG=en ./VMware-Workstation-Full-12.1.0-3272444.x86_64.bundle

kişisel pcde mongodb ile çalışırken dosya boyutu sorunu

mongodb ile kişisel pc niz üzerinde çalışıyorsanız büyük veri dosyaları kimi zaman can sıkabiliyor. bunun için küçük boyutlu dosya kullanımını aktif etmeniz gerekmektedir.

root@cicek:/etc# sudo apt-get install mongodb

mongodb yi kurduktan sonra /etc/mongodb.conf dosyasına

root@cicek:/etc# nano mongodb.conf 
smallfiles=true

satırını ekleyerek mongodb durduyoruz

root@cicek:/etc# /etc/init.d/mongodb stop
[ ok ] Stopping mongodb (via systemctl): mongodb.service.

sonrasında /var/lib/mongodb/journal/* dizini altındaki dosyaları siliyoruz. ve mongodb yi yeniden başlatıyoruz. dosya boyutlarından görüleceği üzere oldukça fark mevcut.

root@cicek:/var/lib/mongodb/journal# ls -al
toplam 3145748
drwxr-xr-x 2 mongodb mongodb       4096 Ara 27 17:07 .
drwxr-xr-x 3 mongodb mongodb       4096 Ara 27 16:13 ..
-rw------- 1 mongodb mongodb 1073741824 Ara 27 17:07 prealloc.0
-rw------- 1 mongodb mongodb 1073741824 Ara 27 15:33 prealloc.1
-rw------- 1 mongodb mongodb 1073741824 Ara 27 15:33 prealloc.2
root@cicek:/var/lib/mongodb/journal# rm *
root@cicek:/var/lib/mongodb/journal# /etc/init.d/mongodb start
[ ok ] Starting mongodb (via systemctl): mongodb.service.
root@cicek:/var/lib/mongodb/journal# ls
prealloc.0
root@cicek:/var/lib/mongodb/journal# ls -al
toplam 393224
drwxr-xr-x 2 mongodb mongodb      4096 Ara 27 17:08 .
drwxr-xr-x 3 mongodb mongodb      4096 Ara 27 16:13 ..
-rw------- 1 mongodb nogroup 134217728 Ara 27 17:08 prealloc.0
-rw------- 1 mongodb nogroup 134217728 Ara 27 17:08 prealloc.1
-rw------- 1 mongodb nogroup 134217728 Ara 27 17:08 prealloc.2

nesnelerin interneti için veri kayıt alanları : thingspeak platformunun raspberry ile kullanım örneği

nesnelerin interneti için veri kayıt alanları : thingspeak temel kullanım yazısında thingspeak üzerinde nasıl kanal oluşturulacağı ve temel yönetim özellikleri değinilmişti.

şimdi bu platform üzerine basit bir örnek yapalım. raspberry pi üzerinde phyton ile bir kaç temel parametreyi okuyarak thingspeak kanalı üzerine gönderelim.

thingspeak üzerinde bir kanalda veri tutulabiliyor. biz bu örneğimizde anlık cpu kullanımı, ram kullanımını ve cpu sıcaklık değerini gönderelim.

siz gpio arayüzünden aldığınız verileri kod üzerinde ufak bir değişiklik ile gönderebilirsiniz.

import httplib, urllib
import psutil
import time
import os

def cpu_sicaklik_oku():
 res = os.popen('vcgencmd measure_temp').readline()
 return(res.replace("temp=","").replace("'C\n",""))

if __name__ == "__main__":
    while True:
        cpu = psutil.cpu_percent()
        ram = (psutil.avail_phymem()/1024)/1024
        cpu_sicaklik = cpu_sicaklik_oku()
        params = urllib.urlencode({'field1': cpu, 'field2':ram, 'field3':cpu_sicaklik, 'key':'THINKSPEAK_KEY'})
        headers = {"Content-type": "application/x-www-form-urlencoded","Accept": "text/plain"}
        conn = httplib.HTTPConnection("api.thingspeak.com:80")
        conn.request("POST", "/update", params, headers)
        response = conn.getresponse()
        print response.status, response.reason
        data = response.read()
        conn.close()
        time.sleep(60)

şimdi yazdığımız basit bu konu çalıştıralım.

pi@cicek ~ $ python thingspeak_ornek.py > /dev/null &

artık her 1 dakikada bir bu veriler okunarak thingspeak platformuna gönderilecektir. benim yapmış olduğum bu örneğin sonuçlarını

https://thingspeak.com/channels/70080/

adresinden bakılabilir. isterseniz web siteniz içerisinede sorunsuz olarak gömebiliyorsunuz.

<iframe width="450" height="260" style="border: 1px solid #cccccc;" 
src="http://api.thingspeak.com/channels/70080/charts/1?width=450&
height=260&results=60&dynamic=true&yaxis=Y%C3%BCzde&xaxis=Tarih&
title=CPU%20Kullan%C4%B1m" >
</iframe>





nesnelerin interneti için veri kayıt alanları : thingspeak temel kullanım

nesnelerin interneti uygulamalarının artması, uygulamalardan elde edilen verilerin kaydedileceği veri kayıt merkezi uygulamaları ihtiyaçlarınıda doğurmaktadır. bu verilerin yerelde tutulması kimi zaman imkansız, kimi zamanda veriye erişim ve inceleme gereksinimlerinden dolayı bir uygun değildir. yani nesnelerin interneti kavramı büyük veri ve bulut bilişim ile iç içe geçmiş durumdadır.

bu gereksinimin farkında olan bir çok şirket kullanıcılara parasız ve paralı seçenekler sunmaya başlamıştır. bunlardan bir taneside arkasında mathworksun olduğu thingspeak. thingspeak i diğerlerinden farklı kılan yanı matlab ile entegrasyonu. matlab ile veri işlemeye ve karışık hesaplamalarla sıklıkla uğraşan birisiyseniz gerçek dünyadan elde ettiğiniz verileri saklamak için ideal bir ortam konumunda.

örnek olarak iliniz içerisinde ayırdığınız bölgelerdeki hava sıcaklık, nem, rüzgar ile hava kirliği arasında bir ilişki   konusunda bir araştırma yapıyorsanuz sahadaki internet erişimi olan sensörlerinizin verilerini bu platformda tutabilirsiniz.

https://thingspeak.com/users/sign_up adresinde çok kısa sürede kendinize bir hesap oluşturabilirsiniz.

th1

hesabınızı oluşturduktan sonra My Channels linkine girerek New Channel diyerek yeni bir channel – yani bir veri tabanı – tablo oluşturuyoruz.

th2karşımıza çıkan ekran yandaki şekilde olacaktır.

burada yer alan alanlara ait açıklamalar kısaca aşagıdaki şekildedir.

  • Channel Name: kanal için kullanılacak isim.
  • Description: kanal için açıklama.
  • Field#: kanalda kaydedilebilecek 8 adet veri alanı mevcuttur. bu veri alanı için isim. kullanabilek için yandaki kutucuk seçilerek aktif edilmelidir..
  • Metadata: kanal datasının JSON, XML, veya CSV olup olmadığı bilgisi.
  • Tags: kanalı tanımlamak için kullanılacak anahtar kelimeler.
  • Latitude: kullanılacak sensör – kanal için enlem bilgisi
  • Longitude: kullanılacak sensör – kanal için boylam bilgisi.
  • Elevation: kullanılacak sensör – kanal için yükseklik bilgisi..
  • Make Public: verileri herkese açık hale getirmek.
  • URL: kanal hakkında bilgi içeren bir web sitesi var ise.
  • Video ID: kanal hakkında bilgi içeren bir youtube veya vimeo videosu var ise..

her kanal içine 8 tane anlık veri kaydedebiliyoruz. bu bir çok uygulama için yeterli olacaktır. formu doldurarak kaydettiğimizde thingspeak bize bir kanal oluşturacaktır.

oluşturulan her kanala ait bir idye sahip olacaktır. verilere erişmek için bu id bilgisi gerekmektedir.

kanalı oluştuduktan sonra My Channels görünümü aşagıdaki şekilde olacaktır.

th3

burada bizim için önemli alanları inceleyelim.

th4

private ve public viewde kendimizin görebileceği ve herkesin görebileceği verileri görebiliyruz. burada kanal id miz ve kanala ait temel bilgilerde yer almaktadır.

Chanel Setting kanalı oluşturken kullandığmız alanları yönetebileceğimiz kısımdır.

API Keys altında ise thingspeaka veri yazma ve okuma işlemi sırasında kullanacağımız keyler yer almaktadır. bu keyler birbirinden farklı olduğu için uygulmalar sırasında buna dikkat etmek gerekmektedir.

th5

Data Import/Export altında ise kanal altında veri eklemenize ve veri almanıza yarayan tool mevcuttur.. Export ile CSV formatında alınan dosya yapısı aşagıdaki şekildedir.

created_at,entry_id,field1
2015-12-04 19:26:13 UTC,1,
2015-12-04 19:32:53 UTC,2,0.0
2015-12-04 19:33:16 UTC,3,1.9
2015-12-04 19:33:31 UTC,4,1.9
2015-12-04 19:33:45 UTC,5,6.3
2015-12-04 19:33:59 UTC,6,3.5
2015-12-04 19:34:15 UTC,7,1.8
2015-12-04 19:34:29 UTC,8,2.4
2015-12-04 19:34:43 UTC,9,1.9
2015-12-04 19:34:58 UTC,10,4.7
2015-12-04 19:35:18 UTC,11,3.2
2015-12-04 19:35:32 UTC,12,2.1
2015-12-04 19:35:46 UTC,13,6.8
2015-12-04 19:36:00 UTC,14,4.3
2015-12-04 19:36:14 UTC,15,2.6

bir sonraki yazıda raspberry üzerinde python ile veri gönderimi konusunda bir örnek yapılacaktır. uygun bir zamandada matlab kısmına değinebiliriz.

huawei cihazlarda yeniden başlatma ( reboot )

bazı özel durumlarda cihazı uzaktan yeniden başlatmanız gerekebilir. bu gibi durumlarda reboot komutu işinize yarayacaktır.

komutu çalıştırdığınızda sistem çalışan konigürasyon ile kayıtlı konigürasyonu karşılaştırarak bir farklılık var ise çalışan konfigürasyonu kayıt edip etmeyeceğini sorar sonrasında ise cihazı yeniden başlatmak için sizden onay isyerek eğer cevap olumlu ise yeniden başlatma işlemi uygulanır.

<fcicek_test_router>reboot
Info: The system is now comparing the configuration, please wait.
Warning: All the configuration will be saved to the next startup configuration.
Continue ? [y/n]:n
System will reboot! Continue ? [y/n]:y
Info: system is rebooting ,please wait...

anlık olarak yeniden başlatma bu şekildedir. ancak yeniden başlama işlemi zamanlanmak isteyebilir. bunu cihazınızın yazılımına bağlı olarak schedule reboot ile gerçekletirebilirsiniz.

<fcicek_test_router> schedule reboot at 01:00 2015/11/30
Info: System will reboot at 01:00:00 2015/11/30 (in 10 hours and 10 minutes)
confirm? [Y/N] :y
Back To Top