Linux terminalde temel network komutları

Dosya indirirken, kullandığımız network üzerindeki işlemleri incelerken, istatistiklerine bakarken, network problemlerine göz atarken kullandığımız arayüzü gelişmiş programlar veya internet siteleri var. Tabi bunların her biri için kullanabildiğimiz birer linux komutları da var, genel olarak onlardan bahsetmek istedim.

curl & wget

curl veya wget, internet üzerinden dosya indirmemize yarar. curl kullanıyorsanız -O parametresi ile, wget kullanıyorsanız parametresiz bir şekilde bulunduğunuz dizine dosyayı indirebilirsiniz.

curl -O website.com/file
wget website.com/file

ping

ping komutu ECHO_REQUEST paketleri göndererek, bilgisayarınızın yazdığınız ip adresi veya domain ile iletişime geçip geçemediğini size bildirir. Ancak bunu kullanırken bazı sistemlerin ping komutuna yanıt verebilecek şekilde yapılandırılmadığını da göz önünde bulundurmalısınız.

Windowstaki ping komutu belirli sayıda paket göndererek size yanıtları gösterir, ancak Linux üzerinde siz sonlandırana kadar paket göndermeye ve size sonuç göstermeye devam eder. Bu yüzden Linuxta ping komutuna parametre olarak -c ve paket adedini yazarak kaç paket ile ping atılacağını yönetebilirsiniz.

ping -c 5 dubluve.net

tracepath & traceroute

tracepath komutu ile traceroute komutu birbirine benzer işlemler yapmaktadırlar. (tracepath Ubuntu’da kurulu olarak gelmektedir.) Eğer internet ağınızda bir yavaşlama veya bir problem varsa, bu komut size nerede hata olduğunu göstermektedir.

tracepath dubluve.net

mtr

Mtr komutu, gitmek istediğimiz ip adresine / domaine ulaşıncaya kadar geçtiğimiz ağları tanılamaya yarayan komuttur. Detayları için buradaki yazıyı inceleyebilirsiniz. Windowstaki kullanımı için de (tracert) buradaki yazıyı inceleyebilirsiniz.

mtr dubluve.net

(Çıkış yapmak için q veya ctrl-c kullanabilirsiniz.)

host

Domain kullanarak ip adresi öğrenebilen komuttur.

host dubluve.net

whois

whois komutunu kullanarak websitesinin kimin adına kayıtlı olduğunu, name serverlarını vs. birçok bilgiyi öğrenebiliriz.

whois dubluve.net

Ubuntu’da whois kurulu olarak gelmemektedir, sudo apt-get install whois diyerek install edebilirsiniz.

ifplugstatus

ifplugstatus Ubuntu’da kurulu olarak gelmemektedir, sudo apt-get install ifplugd komutu ile install ediniz.

ifplugstatus komutu size network interface üzerindeki statusları gösterir.

ifplugstatus

Çıktısı şu şekilde olur;

eth0: unplugged
lo: link beat detected
wlan0: link beat detected

link beat detected demek, bağlı olduğunu gösterir, unplugged ise olmadığını gösterir.

ifconfig

ifconfig ağ üzerindeki bir çok bilginizi görmeye yarar. IP adresiniz, bağlantı türünüz, kullandığınız network arayüzü, aktif arayüzler vs.

ifconfig

dhclient

dhclient komutu bilgisayarınızın ip adresinden yeni bir DHCP server yaratır. DCHP serverın ne olduğu hakkında bilgi edinmek için buradaki yazıyı okuyunuz.

dhclient Ubuntu’da root olmanızı istemektedir, eğer ip adersinizin aynı kalmasını istiyorsanız -r parametresi ile kullanınız.

sudo dhclient -r
sudo dhclient

netstat

netstat komutu network arayüzünüzle ilgili bir çok bilgiyi sunmaktadır.

netstat

-p parametresi ile programların ilişkili olduğu socketleri görüntülersiniz.

netstat -p

-s parametresi ile portların detaylı istatistiklerini görüntülersiniz.

netstat -s

Symfony2- FOSFacebook – Facebook needs the CURL PHP Extension Hatasi

Symfony2’de FOSFaceBookBundle yüklemesi yaptıktan sonra, herhangi bir konsol komutu çağırmaya çalıştığımda aşağıdaki hatayı alıyordum.

[Exception] Facebook needs the CURL PHP extension.

Biraz araştırdığımda, WAMP gibi 3’ü bir yerde kurulumlarda Apache tarafından kullanılan php.ini dosyası ile konsoldan aşağıdaki şekilde çağırdığımız php komutunun farklı php.ini dosyası kullandığını öğrendim.

php app/console container:debug


Yani wamp’ın menüsünü kullanarak curl uzantısını aktifleştirseniz bile aslında konsoldan çağrılan php programının kullandığı php.ini değişmiyor. WAMP için örnek vermek gerekirse, C:\wamp\bin\php\php5.3.8 klasöründeki php.ini dosyasını şu şekilde düzenlemek gerekiyor:

;extension=php_curl.dll
extension=php_curl.dll

PHP curl ile istek örnegi (php curl example)

CURL basit manada bir bot yapmak için kullanılabilir. Veyw webservis altyapısı olmayan yapılar için bir alternatif sağlayabilir.
file_get_contents ile yapacağınız url isteklerinde (bunda allow_url_fopen açık olması lazım) kodunuza herhangi bir timeout koyamadığımız için sıkıntılı bir durum oluşabilir. CPU kullanımımız tehlikeye girebilir. Burada da yine curl, güçlü alternatif olarak karşımıza çıkmaktadır.

Aşağıda basit bir CURL isteği yapabilmek için gerekli kodları göreceksiniz. Bunun ile örneğin www.google.com’u request ederseniz, ilgili sayfanın içeriğini alabileceksiniz.
Yanlarında comment ile açıklamalarını yazdım

$temp = array("a"=>1, "b"=>2);
$postdata = http_build_query($temp);

$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, true); //POST Metodu kullanarak verileri gönder
curl_setopt($ch, CURLOPT_HEADER, false); //Serverdan gelen Header bilgilerini önemseme.
curl_setopt($ch, CURLOPT_URL, "http://www.domain.com"); //Bağlanacağı URL
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata); //POST verilerinin querystring hali. Gönderime hazır!
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //Transfer sonuçlarını return et. Onları kullanacağım!
curl_setopt($ch, CURLOPT_TIMEOUT, 20); //20 saniyede işini bitiremezsen timeout ol.
$data = curl_exec($ch);
curl_close($ch);

echo $data;

NOT : php_curl php eklentinizin açık olması gerekiyor. php.ini’de yer alır kendisi. Wamptan sırayla Wamp simgesi -> PHP ->PHP extensions-> php_curl a tıklayarak açabilirsiniz. Ya da php.ini nize ekleyebilirsiniz.