Etiket arşivi: linux

Linux shell üzerinden gmail kullanarak mail gönderme

Linux üzerinden komutlarla e-mail göndermek için sSMTP programı kullanılabilir. Peki bu ne işe yarayacak? Ben bu işlemi uzun sürecek işlemlerim tamamlandığında kendime e-mail atmak için kullanacağım. Başka bir kullanım amacı da mesela sunucu da sürekli çalışması gereken bir programın yada sunucunun kendisinin çalışması durduğunda haberdar olmak olabilir.

İlk adım olarak ssmtp: Authorization failed hatası ile karşılaşmamak adına daha önce yazdığım şu blog yazısındaki Gmail ayarlarını yapmalısınız. Üreteceğiniz uygulama şifresine aşağıda ihtiyacınız olacak. Ardından devam ediyoruz:

Öncelikle sSMTP programını kuruyoruz.

sudo apt-get install ssmtp

Sonrasında /etc/ssmtp/ssmtp.conf dosyasını sudo ile açıp aşağıdaki şekilde düzenliyoruz. İlk satırda ilgili yere gmail adresinizi, ikinci satıra uygulama şifresini yazıyorsunuz. Gerisi olduğu gibi kalıyor.

AuthUser=........@gmail.com
AuthPass=........
FromLineOverride=YES
mailhub=smtp.gmail.com:587
UseSTARTTLS=YES

Daha sonra aşağıdaki gibi bir text dosyası oluşturuyoruz. Bu dosya bizim göndereceğimiz mail ile ilgili bilgileri içeriyor. Dosyanın ismi mail.txt olsun.

To: myemailaddress@gmail.com
Subject: konu

E-mail içeriği burada olacak.

Bu text dosyasındaki bilgileri kullanarak e-mail göndermek için aşağıdaki komutu kullanıyoruz.

ssmtp gonderilecekadres@blablamail.com < mail.txt

Ben text dosyası kullanmak istemiyorum direkt olarak bir satırla işimi halletmek istiyorum derseniz aşağıdaki komutu da kullanabilirsiniz. Yalnız bu durumda konu kısmı boş kalıyor ve konu yok şeklinde kalıyor.

echo -e "mail içeriği burada olacak" | mail nuhazginoglu@gmail.com

Windows ve Linux karşılaştırması – İkisinin iyi ve kötü olduğu alanlar

Birçok bilgisayar kullanıcısı Windows mu yoksa Linux tabanlı bir işletim sistemi mi kullansam (yada başka bir işletim sistem,) ikileminde kalabiliyor. Bütün işletim sistemlerinin iyi ve kötü olduğu alanlar var fakat malesef her işi hızlı ve kusursuz bir şekilde yapan bir işletim sistemi yok. Bu sebepten ötürü yaptığınız işlere göre seçim yapmak zorunda kalmaktayız. Ben bu yazıda edindiğim tecrübelere göre Windows ve Linux tabanlı işletim sistemlerinin iyi ve kötü taraflarını paylaşmaya çalışacağım. Bu yazı sürekli güncellenecek olup, yazı içerisinde sadece kendi kullanım tecrübelerim yer alacaktır.


 

Arayüz Hızı Arayüz hızında Windows Ubuntu’ya göre açık ara önde. Bir dosyaya çift tıklatıldığında açılma hızı oldukça fark ediyor. Terminalde ise Linux gayet hızlı.
Lisans Windows, lisansı ücretli olan bir işletim sistemi. Linux tabanlı işletim sistemleri ise açık kaynak ve ücretsiz.
Dosya Sıkıştırma Arayüzden dosya sıkıştırma ve açma işlemlerinde Windows ve Winrar oldukça iyiler. Fakat bu işlem Linux türevlerinde Windows’a nazaran daha çok vakit almaktadır.
Genel Programlar Windows’ta kullanılmak üzere (program çeşitliliği bakımından) birçok program bulabilirsiniz. Ama bunların çoğu ücretli programlar olduğundan dolayı daha çok crack bulma yoluna gidilmektedir. Linux’ta ise program çeşitliliği az olsa da bulunan programlar açık kaynak ve ücretsizdir. Crack’le uğraşmak ve ararken yada crack işlemini gerçekleştirirken bilgisayarınıza virüs bulaştırmak durumunda kalmazsınız.
Virüsler Virüs yönünden en tehlikeli bilgisayarlar hep Windows işletim sistemine sahip olan bilgisayarlar olmuştur. Linux’ta ise bu durumla nadiren karşılaşırsınız.

Resim kaynak: https://www.webhostdesignpost.com/sites/default/files/cover/linux-vs-windows.png

Tmux terminal programı – Linux

Tmux programından ve bazı komutlarından bahsetmek istiyorum. Tmux programı bir terminal ekranından birden fazla terminali kullanmaya yarayan bir terminal programıdır. Böylelikle özellikle birden fazla terminalden çalışmak zorunda kalanlar o terminalden o terminale geçmeyecek, tüm terminal ekranları bir terminal içerisinde önlerinde olacaktır. Böylelikle karmaşıklık ve zaman kaybının da önüne geçilebilecektir. Tmux’tan önce ben mouse ile direkt bölebildiğim Terminator programını kullanıyordum. Kullanış olarak Tmux’tan daha basit ama birçok kez çalışırken hata verip kapandığı oldu. Çalışmanın tam ortasında bunun başınıza gelmesi çok can sıkıcı bir durum. Ben de araştırırken bu programı buldum.  Aslında screen programı gibi bir seçenek de var ama o bu programlardan biraz daha farklı ve kullanım amacı da değişebiliyor. (Fırsat bulursam bu screen programı ile alakalı da bir yazı yazmayı düşünüyorum   Screen programı ile ilgili yazdığım yazıya buradan ulaşabilirsiniz.) Tmux kullanmak öncelikle biraz zahmetli ve zor gelebilir çünkü Tmux’ı kullanırken karakter kombinasyonları kullanmak zorundasınız. Ama alıştıkça seveceğinizden eminim. Tmux’ı kurmak için aşağıdaki komutu kullanabilirsiniz.

apt-get install tmux

Kurulum tamamlandıktan sonra direkt olarak aşağıdaki komut ile programı çalıştırıp kullanmaya başlayabilirsiniz. Programı başladığında terminalin alt kısmında yeşil bir bar belirecektir.

tmux

Programı çalıştırdık peki şimdi ekranı nasıl böleceğiz. Ekranı dikey olarak ikiye bölmek için aşağıdaki kombinasyonu yapmanız gerekmektedir.

Ctrl + b + %

Ekranı yatay olarak ikiye bölmek için aşağıdaki kombinasyonu kullanabilirsiniz.

Ctrl + b + "

Aşağıdaki resimdeki terminal önce dikey olarak bölünmüş sonrasında ise ikinci pencere yatay olarak bölünmüş, böylelikle üç adet terminal açılmıştır.

Peki bu pencerelerden bir diğerine nasıl geçilecek. Bunu da aşağıdaki kombinasyonla yapıyoruz. (Ctrl + b) + o yaptığınızda diğer pencereye geçersiniz. (Ctrl + b + o) yaptığınızda ise pencereler saat yönünün tersine yer değiştirirler. Böylece çalıştığınız ekran başka bir ekranla yer değiştirmiş olur.

Ctrl + b + o

Çalıştığınız pencerelerden birini kapatmak için aşağıdaki komutu kullanabilirsiniz.

exit

Uzak bir sunucuya ssh bağlantısı yapmış iseniz bazı zamanlar pencerenin donduğuna rastlamışsınızdır. Hiç bir işlem yapamazsınız. Bir müddet sonra bağlantı kopacaktır ama o an için donmuştur. Yapılacak şey o pencereyi kapatıp yeni bir pencerede bağlantıyı sağlamaktır. Ama tmux programı açıkken mevcut pencereyi arayüzden kapatmak gibi bir durum sizi sıkıntıya sokabilir çünkü diğer pencerelerde kapanacaktır. O yüzden kapatmak istediğiniz pencereye gelip bu işlemi komutla yapmak durumundasınız. Aşağıdaki komut ile bu işlemi gerçekleştirebilirsiniz. Komutu çalıştırdıktan sonra emin olup olmadığınız soracaktır y (yes) tuşuna basarak işlemi tamamlarsınız.

Ctrl + b + x

Yatay olarak böldüğünüz ekranları dikey yada dikey olarak böldüğünüz ekranları yatay olarak çevirmek istiyorsanız aşağıdaki komut ile bu işlemi gerçekletirebilirsiniz.

Ctrl + b + space

İlk etapta bu kadar komut Tmux’ı kullanmak için gayet yeterli. Ama Tmux’ın daha birçok komutu olduğunu da unutmayın. Tmux kullanırken kullanmak durumunda kaldığım başka komut kombinasyonları olursa bu kodları da bu yazı içerisinde paylaşmaya devam edeceğim.

Linux: sed komutu belli bir yere satır ekleme, değiştirme

Bir dosya içerisinde bir satırın altına başka bir satır eklemek istiyorsanız sed komutunu kullanabilirsiniz. sed komutu bir dosyanın içeriğinin değiştirilmesinde kullanılır. Örnek olarak içeriği aşağıdaki gibi olan deneme.txt adında bir dosyamız olsun.

1
2
4
6

Aşağıdaki komut sayesinde 2’nin altına 3 ekleyeceğiz.

sed -i '/2/a 3' deneme.txt

Böylelikle dosya içeriği aşağıda şekle dönüşmüş oldu.

1
2
3
4
6

Peki eklemek yerine değiştirmek istiyorsak ne yapacağız. Bu durumda da aşağıdaki komutu kullanabiliriz.

sed -i 's/6/5/' deneme.txt

veya

sed -i s/6/5/ deneme.txt

Böylelikle dosyadaki 6, 5 ile yer değiştirecek ve dosya içeriği aşağıdaki gibi olacaktır.

1
2
3
4
5

Dosya içeriği değiştirilmesini sağlayan awk ve grep gibi komutlarında olduğunu söylemeliyim. Ayrıca sed komutuyla daha farklı şeyler de yapılabilmekte elbette. Fazlası için sed komutunun help‘inden yardım alabilirsiniz.

Python yararlı komutlar

  • Python çalıştırdığınız dosyanın adını görmek. Bu sayede dosya isminde geçen bir ifadeyi değişkene çevirebilirsiniz.
os.path.basename(__file__)

  • Python scripte parametre göndermek ve onu kullanmak.
import sys

parameter1 = sys.argv[1]
parameter2 = sys.argv[2]

Dosyayı çalıştırırken ise şu şekilde komut göndereceğiz.

python sample.py parameter1 parameter2

 

Linux: Dizinin içerisindeki bir klasör hariç tümünü başka sunucuya yada klasöre kopyalama

Bir dizindeki dosyalarınızı başka bir sunucuya yada dizine kopyalamak istiyorsunuz ama dizin içerisinden bir yada birden fazla klasörü kopyalamak istemiyorsunuz. Dosya boyutu büyük olmadığında aslında büyük bir sorun da teşkil etmiyor. Çünkü herşeyi kopyalayıp sonra istemediklerinizi silebilirsiniz. Ama klasör boyutu büyükse ya tek tek klasörleri kopyalayıp zaman kaybedeceksiniz yada uzun bir süre dosya kopyalamasını bekleyip zaman kaybedeceksiniz. Böyle bir durumda rsync’ten yararlanılabilir. Bildiğiniz gibi rsync bir senkronizasyon programıdır. Aşağıdaki komut ile bu sorunu basitçe çözebilirsiniz.

rsync -avzh --exclude istenmeyen_klasör_ismi kaynak_klasör/ /hedef_klasör/

Böylelikle kaynak klasör içerisinden kopyalanmasını istemediğimiz klasörü belirtiyor, diğer dosyaların kopyalanmasını sağlıyoruz.

Ubuntu rm: cannot remove ‘…’: Device or resource busy hatası ve çözümü

Ubuntu’da bir klasörü cp ile başka bir yere kopyalarken işlemi kesmek zorunda kaldım. Sonrası ilgili klasörü silmeye çalıştığımda rm: cannot remove ‘data/.nfs0000000004f9760f0000000c’: Device or resource busy hatasını aldım ve dosya silinemedi. Dosyayı silebilmek için lsof komutundan yararlandım. Öncelikle aşağıdaki kod ile ilgili dizinde çalışan process’in id‘sini öğrendim.

lsof +D /path

Daha sonra kill -9 id komutu ile process’i öldürdüm. İlgili dizin artık meşgul değil yada herhangi bir process tarafından kullanılmıyor. Dolayısıyla artık silebilirim.