Skip to content

linux komut satırında ethernet arayüz trafiğinin izlenmesi – 1

linux üzerinde komut satırında sıklıkla çalışıyorsanız bazen anlık trafik bilgisinin grafiksel durumuna ihtiyaç duyabilirsiniz. bu gibi durumlarda işinize yarayacak oldukça basit araçlar mevcut. bunlardan bir tanesi nload dır.

sisteminize hızlı bir şekilde kurmak isterseniz

fcicek@cicek:~$ sudo apt-get install nload

ile kurabilirsiniz. kullanımıda oldukça kolaydır. nload formatı ile trafiğini izlemek istediğiniz arayüz trafiğib izleyebilirsiniz.

fcicek@cicek:~$ nload wlan0

ile kablosuz arayüz trağini baktığımızda görünüm aşagıdaki gibi olacaktır.   # ve . ile trafiğin grafiğide çizilmektedir.

nload1

linux altında ethernet arayüz özelliklerinin değiştirilmesi (ethtool)

ağ ortamında test yaparken ve bazı özel durumlarda pcnizin ethernet portunun özelliklerini değiştirmeniz gerekebilir. örnek olarak half duplex – full duplex uyumsuzluğundan oluşacak errorları inceliyor olabilirsiniz. bu ve benzeri durumlar için linux altında ethtool oldukça kullanışlı bir tooldur. debian – ubuntu için eğer sistemimiz yok ise hızlıca kuralım.

fcicek@cicek:~$sudo apt-get install ethtool

kurulumdan sonra pcmizin hızlıca pcmiz üzerinden ethernet arayüzlerini hakkında bilgi edinelim.. bunun için ethtool dan sonra arayüz adını yazmamız yeterli olacaktır.

fcicek@cicek:~$ ethtool eth0
Settings for eth0:
	Supported ports: [ TP MII ]
	Supported link modes:   10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Half 1000baseT/Full 
	Supported pause frame use: No
	Supports auto-negotiation: Yes
	Advertised link modes:  10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Full 
	Advertised pause frame use: Symmetric Receive-only
	Advertised auto-negotiation: Yes
	Speed: 10Mb/s
	Duplex: Half
	Port: MII
	PHYAD: 0
	Transceiver: internal
	Auto-negotiation: on
Cannot get wake-on-lan settings: Operation not permitted
	Current message level: 0x00000033 (51)
			       drv probe ifdown ifup
	Link detected: no

çıktıyı inceleyecek olursak portun desteklediği modelar, negotiation bilgisi, duplex bilgisi gibi bilgilere listelediğini görürüz. burada gördüğümüz tüm parametreleri ethtool aracı ile kolaylıkla değiştirebiliriz. değişiklik yapabilme için root yetkisine sahip olmanız gerektiğini unutmayın. tabi işinizi tamamladıktan sonra eski haline getirmeyide unutmamak gerekli.

fcicek@cicek:~$sudo ethtool -s eth0  speed 100 duplex full autoneg off

değişikliğin aktif olabilmesi için eth0 arayüzünü down – up yamak gerekmektedir.

fcicek@cicek:~$sudo ifdown eth0 && ifup eth0

eğer değişiklikleri sürekli yapmak istemiyor – kalıcı olmasını istiyorsanız arayüz konfigürasyon dosyasına bu değişiklik bilgisini eklememiz gerekmektedir. ilgili dosyayı

fcicek@cicek:~$sudo nano /etc/network/interfaces

açtıktan sonra

 pre-up /usr/sbin/ethtool -s eth0  speed 100 duplex full autoneg off

satırlarını eklememiz yeterli olacaktır.

Ember ve Phantom.js kurulumu

ember ve phantom un testini yapabilmek için öncelikle kurmalıyız tabiki 🙂

fcicek@cicek:~$  sudo npm install -g ember-cli 
/usr/local/bin/ember -> /usr/local/lib/node_modules/ember-cli/bin/ember
ember-cli@1.13.12 /usr/local/lib/node_modules/ember-cli
├── ember-cli-is-package-missing@1.0.0
├── ember-cli-path-utils@1.0.0
├── ember-cli-test-info@1.0.0
├── ember-cli-get-dependency-depth@1.0.0
├── ember-cli-string-utils@1.0.0
├── clean-base-url@1.0.0
├── ember-cli-normalize-entity-name@1.0.0
├── silent-error@1.0.0
├── amd-name-resolver@0.0.2
├── escape-string-regexp@1.0.3
├── fs-monitor-stack@1.1.0
├── pleasant-progress@1.1.0
├── is-git-url@0.2.3
├── isbinaryfile@2.0.4
├── ember-cli-copy-dereference@1.0.0
├── broccoli-source@1.1.0
├── exists-sync@0.0.3
├── promise-map-series@0.2.2
├── diff@1.4.0
├── node-modules-path@1.0.1
├── broccoli-viz@2.0.1
├── through@2.3.8
├── bower-endpoint-parser@0.2.2
├── walk-sync@0.1.3
├── broccoli-merge-trees@1.0.0
├── inflection@1.7.2
├── node-uuid@1.4.7
├── exit@0.1.2
├── semver@4.3.6
├── temp@0.8.1 (rimraf@2.2.8)
├── rsvp@3.1.0
├── resolve@1.1.6
├── git-repo-info@1.1.2
├── debug@2.2.0 (ms@0.7.1)
├── nopt@3.0.6 (abbrev@1.0.7)
├── symlink-or-copy@1.0.1 (copy-dereference@1.0.0)
├── broccoli-sane-watcher@1.1.4 (broccoli-slow-trees@1.1.0)
├── findup@0.1.5 (commander@2.1.0, colors@0.6.2)
├── quick-temp@0.1.3 (mktemp@0.3.5, rimraf@2.2.8, underscore.string@2.3.3)
├── merge-defaults@0.2.1 (lodash@2.4.2)
├── http-proxy@1.12.0 (eventemitter3@1.1.1, requires-port@0.0.1)
├── lodash@3.10.1
├── core-object@0.0.2 (lodash-node@2.4.1)
├── chalk@1.1.0 (supports-color@2.0.0, ansi-styles@2.1.0, strip-ansi@3.0.0, has-ansi@2.0.0)
├── leek@0.0.18
├── broccoli-kitchen-sink-helpers@0.2.9 (mkdirp@0.5.1)
├── portfinder@0.4.0 (async@0.9.0, mkdirp@0.5.1)
├── readline2@0.1.1 (mute-stream@0.0.4, strip-ansi@2.0.1)
├── configstore@1.2.1 (object-assign@3.0.0, os-tmpdir@1.0.1, graceful-fs@4.1.2, uuid@2.0.1, xdg-basedir@2.0.0, osenv@0.1.3, mkdirp@0.5.1, write-file-atomic@1.1.3)
├── minimatch@2.0.10 (brace-expansion@1.1.1)
├── glob@5.0.13 (path-is-absolute@1.0.0, inherits@2.0.1, once@1.3.2, inflight@1.0.4)
├── broccoli-config-replace@1.1.0 (broccoli-kitchen-sink-helpers@0.3.1, fs-extra@0.24.0)
├── morgan@1.6.1 (on-headers@1.0.1, basic-auth@1.0.3, depd@1.0.1, on-finished@2.3.0)
├── findup-sync@0.2.1 (glob@4.3.5)
├── broccoli-plugin@1.2.1 (rimraf@2.4.3)
├── cpr@0.4.2 (graceful-fs@4.1.2, mkdirp@0.5.1, rimraf@2.4.3)
├── compression@1.6.0 (bytes@2.1.0, on-headers@1.0.1, vary@1.1.0, compressible@2.0.6, accepts@1.3.0)
├── fs-extra@0.22.1 (jsonfile@2.2.3, graceful-fs@4.1.2, rimraf@2.4.3)
├── bower-config@0.6.1 (osenv@0.0.3, graceful-fs@2.0.3, mout@0.9.1, optimist@0.6.1)
├── broccoli-funnel@1.0.0 (array-equal@1.0.0, blank-object@1.0.1, path-posix@1.0.0, fs-tree-diff@0.3.1, fast-ordered-set@1.0.2, mkdirp@0.5.1, rimraf@2.4.3, walk-sync@0.2.6)
├── broccoli-config-loader@1.0.0 (broccoli-caching-writer@2.2.0)
├── markdown-it@4.3.0 (uc.micro@1.0.0, linkify-it@1.2.0, mdurl@1.0.1, entities@1.1.1, argparse@1.0.3)
├── npm@2.14.10
├── bower@1.6.5
├── ember-cli-preprocess-registry@1.1.0 (process-relative-require@1.0.0, broccoli-clean-css@0.2.0)
├── markdown-it-terminal@0.0.2 (ansi-styles@2.1.0, cli-table@0.3.1, lodash-node@3.10.1, cardinal@0.5.0)
├── yam@0.0.18 (fs-extra@0.16.5, lodash.merge@3.3.2)
├── ember-router-generator@1.1.1 (recast@0.9.18)
├── sane@1.3.0 (watch@0.10.0, minimist@1.2.0, minimatch@0.2.14, exec-sh@0.2.0, walker@1.0.7, fb-watchman@1.6.0)
├── express@4.13.3 (merge-descriptors@1.0.0, escape-html@1.0.2, cookie@0.1.3, utils-merge@1.0.0, array-flatten@1.1.1, cookie-signature@1.0.6, methods@1.1.1, vary@1.0.1, fresh@0.3.0, range-parser@1.0.3, content-type@1.0.1, path-to-regexp@0.1.7, parseurl@1.3.0, etag@1.7.0, serve-static@1.10.0, content-disposition@0.5.0, depd@1.0.1, qs@4.0.0, on-finished@2.3.0, accepts@1.2.13, type-is@1.6.9, proxy-addr@1.0.8, finalhandler@0.4.0, send@0.13.0)
├── tiny-lr@0.2.0 (parseurl@1.3.0, qs@5.1.0, livereload-js@2.2.2, body-parser@1.14.1, faye-websocket@0.10.0)
├── broccoli@0.16.8 (broccoli-slow-trees@1.1.0, copy-dereference@1.0.0, mime@1.3.4, rimraf@2.4.3, commander@2.9.0, connect@3.4.0, handlebars@3.0.3)
├── broccoli-sourcemap-concat@2.0.2 (mkdirp@0.5.1, lodash-node@2.4.1, broccoli-caching-writer@2.2.0, lodash.uniq@3.2.2, fast-sourcemap-concat@0.2.6)
├── inquirer@0.5.1 (mute-stream@0.0.4, async@0.8.0, lodash@2.4.2, chalk@0.4.0, cli-color@0.3.3)
├── testem@0.9.10 (growl@1.8.1, styled_string@0.0.1, did_it_work@0.0.6, printf@0.2.3, fileset@0.2.1, charm@1.0.0, xmldom@0.1.19, mustache@2.2.0, async@1.5.0, mkdirp@0.5.1, rimraf@2.4.3, commander@2.9.0, backbone@1.2.3, consolidate@0.13.1, fireworm@0.6.6, js-yaml@3.4.3, tap-parser@1.2.2, cross-spawn-async@2.0.0, npmlog@1.2.1, socket.io-pure@1.3.11)
└── broccoli-babel-transpiler@5.5.0 (clone@0.2.0, json-stable-stringify@1.0.0, broccoli-persistent-filter@1.1.6, babel-core@5.8.34)
fcicek@cicek:~$ sudo npm install -g phantomjs
/usr/local/bin/phantomjs -> /usr/local/lib/node_modules/phantomjs/bin/phantomjs

> phantomjs@1.9.18 install /usr/local/lib/node_modules/phantomjs
> node install.js

Looks like an `npm install -g`; unable to check for already installed version.
Downloading https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.8-linux-x86_64.tar.bz2
Saving to /usr/local/lib/node_modules/phantomjs/phantomjs/phantomjs-1.9.8-linux-x86_64.tar.bz2
Receiving...
  [======================================--] 94% 0.0s
Received 12854K total.
Extracting tar contents (via spawned process)
Removing /usr/local/lib/node_modules/phantomjs/lib/phantom
Copying extracted folder /usr/local/lib/node_modules/phantomjs/phantomjs/phantomjs-1.9.8-linux-x86_64.tar.bz2-extract-1447627359889/phantomjs-1.9.8-linux-x86_64 -> /usr/local/lib/node_modules/phantomjs/lib/phantom
Writing location.js file
Done. Phantomjs binary available at /usr/local/lib/node_modules/phantomjs/lib/phantom/bin/phantomjs
phantomjs@1.9.18 /usr/local/lib/node_modules/phantomjs
├── which@1.0.9
├── progress@1.1.8
├── kew@0.4.0
├── adm-zip@0.4.4
├── request-progress@0.3.1 (throttleit@0.0.2)
├── npmconf@2.1.1 (uid-number@0.0.5, ini@1.3.4, inherits@2.0.1, semver@4.3.6, osenv@0.1.3, once@1.3.2, nopt@3.0.6, config-chain@1.1.9, mkdirp@0.5.1)
├── fs-extra@0.23.1 (path-is-absolute@1.0.0, jsonfile@2.2.3, graceful-fs@4.1.2, rimraf@2.4.3)
└── request@2.42.0 (caseless@0.6.0, forever-agent@0.5.2, aws-sign2@0.5.0, oauth-sign@0.4.0, stringstream@0.0.5, tunnel-agent@0.4.1, json-stringify-safe@5.0.1, qs@1.2.2, node-uuid@1.4.7, mime-types@1.0.2, tough-cookie@2.2.1, http-signature@0.10.1, form-data@0.1.4, bl@0.9.4, hawk@1.1.1)
fcicek@cicek:~$ ember -v
DEPRECATION: Node v0.10.25 is no longer supported by Ember CLI. Please update to a more recent version of Node
undefined
version: 1.13.12
Could not find watchman, falling back to NodeWatcher for file system events.
Visit http://www.ember-cli.com/user-guide/#watchman for more info.
node: 0.10.25
npm: 2.14.10
os: linux x64
fcicek@cicek:~$ 

atom : popüler bir text editör

herkesin popüler bir text editorü vardır. vi vazgeçilmez arasında yer alsada çoklu platformda olması ve hafif hızlı yapısı nedeniyle atom oldukça popüler bir duruma geldi. linux altında bu editoru test etmek isterseniz

https://atom.io/download/deb

adresinden güncel debian paketini indiriyoruz. ve kuruyoruz

fcicek@cicek:~/İndirilenler$ sudo dpkg -i atom-amd64.deb
[sudo] password for fcicek:
Daha önce seçili olmayan atom paketi seçiliyor.
(Veritabanı okunuyor ... 519080 dosya veya dizin kurulu durumda.)
Paket açılacak: atom-amd64.deb ...
Paket açılıyor: atom (1.2.0) ...
Ayarlanıyor: atom (1.2.0) ...
Tetikleyiciler işleniyor: bamfdaemon (0.5.2~bzr0+15.10.20150627.1-0ubuntu1) ...
Rebuilding /usr/share/applications/bamf-2.index...
Tetikleyiciler işleniyor: gnome-menus (3.13.3-6ubuntu1) ...
Tetikleyiciler işleniyor: desktop-file-utils (0.22-1ubuntu3) ...
Tetikleyiciler işleniyor: mime-support (3.58ubuntu1) ...

atomu çalıştırdığmız sade arayüzü bizi karşılayacaktır.

atom1

editor hakkında daha azla bilgi almak ve diğer işletim sistemlerine ait kurulum dosyalarına bilgileri erişmek isterseniz http://atom.io/ adresini ziyaret ediniz.

resim dosyalarından ffmpeg ile video oluşturulması

elinizde belirli zaman aralıkları ile alınmış resimler var bunları kullanarak bir video oluşturmak istiyorsanız bu iş için; arama motorlarında  arama yaparsanız basit araçlar bulabilirsiniz. ancak bu işte en temel kullanılacak araç ffmpegdir. bu gibi örnekler sosyal medyada eşinin hamileliğini resimledi, çocuğunun gelişimi resimledi ve bunlardan video yaptı vb şeklinde karşımıza bolca çıkabilmektedir. (bu sıralar azaldı bir ara oldukça popülerdi 🙂 )

raspberry pi üzerinde webcam kullanımı ““ anlık görüntü alınması  yazısından raspberry ile anlık görüntü alınması konusunda bir örnek yapmıştık. bu örnekteki kameranızı pencerenizden dışarı çevirin kaydettiğiniz resim dosyasının sırasını belirtecek şekilde bir yapıda kaydedelim.  her 5 dakikada bir kayıt yapacak olursa bir ay sonunda 8640 tane jpeg dosyamız olacaktır.

dosyalarımızın isimlerini artan düzende yaptığımızdan dolayı “glob” parametresini kullanmak doğru olacaktır. kaydettiğimiz resim dosyası formatı jpeg ise

ffmpeg -framerate 1 -pattern_type glob -i '*.jpg' -c:v libx264 out.mp4

eğer kaydettiğimiz resim dosyası png dosyası ise

ffmpeg -framerate 1 -pattern_type glob -i '*.png' -c:v libx264 -pix_fmt yuv420p out.mp4

ile mp4 formatında videomuzu elde etmiş oluruz. oluşturacağımız video formatını ve frame sayısını v.b. istediğiniz gibi ayarlayabilirsiniz. https://www.ffmpeg.org/documentation.html adresinden çok daha fazla ayrıntıyı elde edebilirsiniz.

raspberry pi sıcaklığının değerinin öğrenilmesi ve rrd ile izlenmesi

basit bir örnekle raspberry pi üzerinde rrdtool kullanımı  yazıda rrd kullanımına değinmiştim. yazıdaki örnekte kayseri şehrinin sıcaklık değeri kullanılmıştı.

bu yazıda ise raspberry pi nin iç sıcaklık değerlerini kullanalım. kit üzerinden sıcaklık değerini iki yöntemle öğrenebiliriz.

1. yöntem  vcgencmd komutunu kullanarak

pi@raspberrypi ~ $ /opt/vc/bin/vcgencmd measure_temp
temp=56.2'C

çıktısı yukarıdan görüldüğü gibi doğrudan rrd veritabanına göndermeye uygun değil bunun için aşağıdaki şekilde çıktımızı kırpalım.

pi@raspberrypi ~ $ /opt/vc/bin/vcgencmd measure_temp | cut -d "=" -f2 | cut -d "'" -f1
56.2

pi@raspberrypi ~ $ /opt/vc/bin/vcgencmd measure_temp | cut -c6-9
56.2

2. yöntem ise cpu log çıktısına bakmak.

pi@raspberrypi ~ $ cat /sys/class/thermal/thermal_zone0/temp
56224

bu yapıda tam işimize yaramayabilir. çıktıyı okunabilir bir duruma getirmemiz gerekiyor.

root@raspberrypi:~# /opt/vc/bin/vcgencmd measure_temp | sed "s/temp=\([0-9]\+\.[0-9]\+\)'C/\1/"
56.2

root@raspberrypi:~# awk '{printf("%.1f\n",$1/1e3)}' /sys/class/thermal/thermal_zone0/temp
56.2

artık raspberry nin sıcaklık değerinin nasıl öğrenileceğini bildiğimize göre örneğimizde yer alan

sicaklik ="curl -s http://weather.noaa.gov/pub/data/observations/metar/stations/LTAU.TXT | \
grep -Po ' M?\d{2} ' |  \
sed -r   -e 's/([-0-9]*)\/[-0-9]*/\1/'";

satırı yerine uygun kodu yazarak raspberrynin sıcaklık değerini rrd grafikleri üzerinden takip edebiliriz.

linux makinelerde cpu log dizin yapısından ufak farklılıklar olabilir ancak 2. yöntemle linux kullanan tüm cihazlarda cpu sıcaklık değeri öğrenebiliriz.

hava durumu : linux komut satırı

linuxde komut satırından hava durumu bilgisine nasıl ulaşacağımızı ve bunu nasıl kullanacağımıza bakalım.

ücretli ve ücretsiz olarak hava durumu bilgisini sunan bir çok servis mevcut. yük doğruluk lu veri istiyorsanız bir miktar ücreti gözden çıkarmanız da fayda var. bu örnekte “National Weather Service” tarafından herkese açık olan kaynaklardan faydalanacağız. akıllı telefonlar ile hava durumu uygulamaları oldukça popüler hale geldi. her cihazda arka planda çalışan bir hava durumu uygulaması mevcut. bu şekilde bir uygulama yapmak geçiyorsa aklınızdan yapılacak temel işlemler aynı.

http://weather.noaa.gov/weather/TR_cc.html adresinden ülkemizde bilgi alınabilecek yerlerin listesini bulabilirsiniz. ben örneğimde Kayseri – Erkilet havaalanı için verileri kullanacağım.  http://weather.noaa.gov/weather/current/LTAU.html adresinden  gün sayfalara ulaşabilirsiniz. burada LTAU kodu istasyona ait verilmiş özel bir kod.

buradaki kullanılan dosya formatları konusunda  http://www.ofcm.gov/fmh-1/fmh1.htm adresinden detaylı bilgi alabilirsiniz.

biz tabiki bu html dosyasını kullanmayacağız. yukarıda belirtilen standart çerçevesinde  http://weather.noaa.gov/pub/data/observations/metar/stations/LTAU.txt  adresinde dosya her 5 dakika bir güncellenmektedir.

2015/07/05 14:20
LTAU 051420Z 27007KT 240V300 9999 FEW040 28/08 Q1016 NOSIG

dosyanın içeriği yukarı şekilde. 28/08 yazan kısımdaki 28 bizim sıcaklık değerimiz. bu verinin doğruluğunu kontrol etmek için akıllı telefondan alınan ekran görüntüsünüde aşağıda paylaşalım

2015-07-05-17-45-54-1_resized

şimdi sıra LTAU.TXT dosyasından veriyi almak gerekli scripti yazmaya geldi.

curl -s http://weather.noaa.gov/pub/data/observations/metar/stations/LTAU.TXT | \
grep -Po ' M?\d{2}/M?\d{2} ' |  \
sed -r   -e 's/([-0-9]*)\/[-0-9]*/\1/'

ben yukarıdaki gibi bir script yazdım. sizde farklı yöntemlerle istediğiniz veriyi ( nem, rüzgar gibi ) tabiki alabilirsiniz..

pi@raspberrypi ~ $ curl -s http://weather.noaa.gov/pub/data/observations/metar/stations/LTAU.TXT | \
> grep -Po ' M?\d{2}/M?\d{2} ' |  \
> sed -r   -e 's/([-0-9]*)\/[-0-9]*/\1/'
 28 
pi@raspberrypi ~ $

bu veriyi raspberry ile yapacağımız diğer uygulamalarda kullanacağımız için not etmekte fayda var.

linux – ip adresinin öğrenilmesi

linux de bir ethernet arayüzünün ip adresinin ifconfig çıktısından inceleyerek bulabiliriz. ancak nokta atışı yapılması gereken zamanlar olabilir.

aşagıdaki örnekte adım adım incelenebilir.

fcicek@ubuntu:~$ ifconfig eth0 
eth0      Link encap:Ethernet  HWaddr 00:0c:29:68:00:00  
          inet addr:192.168.126.128  Bcast:192.168.126.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe68:0000/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:388668 errors:0 dropped:0 overruns:0 frame:0
          TX packets:226787 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:506708018 (506.7 MB)  TX bytes:22826593 (22.8 MB)
fcicek@ubuntu:~$ ifconfig eth0 | grep 'inet addr:'
          inet addr:192.168.126.128  Bcast:192.168.126.255  Mask:255.255.255.0
fcicek@ubuntu:~$ ifconfig eth0 | grep 'inet addr:' | awk '{print$2}' 
addr:192.168.126.128
fcicek@ubuntu:~$ ifconfig eth0 | grep 'inet addr:' | awk '{print$2}' | cut -d: -f2
192.168.126.128

linuxte iç ve dış ip adresi değişimlerinin twitter hesabına gönderilmesi

dış dünyaya dinamik bir ip adresi ile çıkıyor ve olası ip değişimlerinden haberdar olmak istiyorsanız elbette bunun yapmanın çok fazla yöntemi var.

bu örnekte dhcp tarafından ip değişimlerinin alğılanarak twitter üzerinden gönderilmesi konusunda ufak bir örnek yapacağız.

twitter için yeniden bir yazılım yapmayacağız.. mevcut linux cli uygulamalarını kullanabiliriz. Bu örnekte tuby ile geliştirilen T yi kullancağız. https://github.com/sferik/t adresinden yazlım hakkında gerekli bilgilendirme alınabilir..

ruby nin installer yazılımını yükleyelim ve sonrasında ise T yazılımını yükleyelim.

fcicek@ubuntu:~$ sudo apt-get install ruby-dev
fcicek@ubuntu:~$ gem install t

twitter üzerinden bu işlem için kullanacağımız bir twitter hesabı oluşturalım ve bu hesap ile http://dev.twitter.com/apps/new adresinden yeni bir uygulama oluşturalım.

ve sonrasında uygulama erişim ayarlarını yönergeleri izleyerek yapalım.

fcicek@ubuntu:~$ t authorize
It looks like you ve already registered an application with Twitter.
To authorize a new account, just follow the steps below:
  1. Sign in to the Twitter Developer site.
  2. Select the application for which you d like to authorize an account.
  3. Copy and paste the consumer key and secret below when prompted.

Press [Enter] to open the Twitter Developer site. 

authorize işlemi tamamlandıktan sonra

fcicek@ubuntu:~$ t account

fcicek@ubuntu:~$ t whoami

ile hesap kontrollerini gerçekleştirelim. ve sonrasında test için mesaj gönderelim

fcicek@ubuntu:~$ t dm ferhatcicek test
Direct Message sent from @fcicekcli to @ferhatcicek.

twitterin istemci yazılımı ile ilgili kısımları tamamladıktan sonra en önemli kısıma geldi. dhcp nin olduğu bölümü ögrendikten sonra dhclient.conf konfigürasyon dosyası içinde gerekli düzenlemeleri yapalım.

fcicek@ubuntu:~$ whereis dhcp
dhcp: /etc/dhcp

dhclient.conf dosyası /etc/dhcp/ dizini altında yer almaktadır. konfigürasyon dosyası içerisinde dhclient-script dosyasının aktif edilmesi gerekmektedir. (dizin yapısı ile ilgili sorun olabilir. )

fcicek@ubuntu:/etc/dhcp$ whereis dhclient-script
dhclient-script: /sbin/dhclient-script /usr/share/man/man8/dhclient-script.8.gz

dosyanın doğru yerini ögrendikten sonra dhclient.conf dosyası içinde

fcicek@ubuntu:/etc/dhcp$ vi dhclient.conf 

script "/sbin/dhclient-script";

gerekli düzenlemeyi tamamlayalım ve bir sonraki adıma geçelim.

fcicek@ubuntu:/etc/dhcp$ ls
dhclient.conf  dhclient-enter-hooks.d  dhclient-exit-hooks.d

dhclient-enter-hooks.d dizini içine çalışacak olan scriptimiz yarattığınız zaman olay tamamlanmıştır..

vi tt

PRIVATE_IP=$(ifconfig |grep -B1 "inet addr" |awk '{ if ( $1 == "inet" ) { print $2 } else if ( $2 == "Link" ) { printf "%s:" ,$1 } }' |awk -F: '{ print $1 ": " $3 }')
PUBLIC_IP=$(dig -4 @ns1-1.akamaitech.net -t a whoami.akamai.net +short)

/usr/local/bin/t   dm @ferhatcicek "$PRIVATE_IP \n ip: $PUBLIC_IP"

linuxte komut satırından gerçek ip adresinin ögrenilmesi

linuxte shell script yazarken veya komut satırın dayken gerçek ip adresi (extarnal ip) bilgisine ihtiyaç duyabilirsiniz. bunun için farklı yöntemler vardır. temel olarak internette, size sizin bağlantı kurduğunuz ip adresini geri gönderecek bir servisin olmasıdır. bu servisler http, telnet, ssh veya başka bir servis olabilir. bunlardan bir kaçına hızlıca göz atalım

çok fazla bilinen bir çok sitenin bu işler için hazırlanmış api leri v.b. mevcuttur.

CURL ve WGET ile

fcicek@ubuntu:~$ curl bot.whatismyipaddress.com
78.168.67.209
fcicek@ubuntu:~$ wget http://smart-ip.net/myip -O - -q ; echo
78.168.67.209

fcicek@ubuntu:~$ curl http://smart-ip.net/myip
78.168.67.209
fcicek@ubuntu:~$ curl -s "http://api.hostip.info/get_html.php" 
Country: TURKEY (TR)
City: Karaman
IP: 78.168.67.209

fcicek@ubuntu:~$ curl -s "http://api.hostip.info/get_html.php" | grep 'IP:' | awk '{print $2}'
78.168.67.209
fcicek@ubuntu:~$ curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/< .*$//'  
78.168.67.209
fcicek@ubuntu:~$ curl ident.me
78.168.67.209

EXEC

fcicek@ubuntu:~$ exec 3<> /dev/tcp/icanhazip.com/80 && # open connection
>   echo 'GET /' >&3 &&                   # send http 0.9 request
>   read -u 3 && echo $REPLY &&           # read response
>   exec 3>&-                             # close fd
78.168.67.209

LWP-REQUEST

fcicek@ubuntu:~$ lwp-request -o text checkip.dyndns.org | awk '{ print $NF }'
78.168.67.209

DIG

fcicek@ubuntu:~$ dig +short myip.opendns.com @resolver1.opendns.com
78.168.67.209

fcicek@ubuntu:~$ alias wanip='dig +short myip.opendns.com @resolver1.opendns.com'
fcicek@ubuntu:~$ wanip
78.168.67.209
fcicek@ubuntu:~$ dig @ns1.google.com -t txt o-o.myaddr.l.google.com +short
"78.168.67.209"
fcicek@ubuntu:~$ dig -4 @ns1-1.akamaitech.net -t a whoami.akamai.net +short
78.168.67.209

NETCAT

fcicek@ubuntu:~$ netcat icanhazip.com 80 < << $'GET / HTTP/1.1\nHost: icanhazip.com\n\n' | tail -n1
78.168.67.209
Back To Top