Hosts Güncelleyici (İstenmeyen reklamlardan kurtulun)

Başlatan empax, 22 Ocak 2014 - 20:42:45

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

empax


Önsöz:
Hosts dosyasına istenmeyen reklam alan adlarını ekleyip çalışmayan bir adrese yönlendirdiğimiz taktirde onlardan kurtulabiliriz. Bu işi AdBlock gibi eklentiler de yapıyor ancak bazı durumlarda tarayıcıyı çok yoruyor ve zorluyor. Bunun gibi alan adlarını listeleyen bu sitede de sürekli güncellenen bir host dosyası yayınlanıyor.

Amaç:
Sürekli güncel host dosyasını takip etmek ve hosts dosyasını güncellemek yerine biraz acemice de olsa bu işi yapacak bir bash script yazmaya çalıştım.
Başlangıç uygulamalarına eklemeyin, sizin yerinize script yapacak!

Dediğim gibi acemice bir script ve google yardımıyla toparladım ama bu şekilde sorunsuz çalışıyor.

Nasıl yapılır?
Alttaki kodları boş bir dosyaya ekleyin ve adını .sh uzantılı olarak kaydedin. ( script.sh )
Çalıştırılabilir dosya olarak yetkileri verin. ( chmod +x /bu/dosya/nerede/script.sh )
Son olarak terminalden çalıştırıp şifrenizi girin. ( bash /bu/dosya/nerede/script.sh )

script:
#!/bin/bash
# Linux host güncelleyici. [empax | ubuntu-TR]
# Host kaynak: http://winhelp2002.mvps.org/hosts.txt
# Derleme kaynak: http://www.putorius.net/2012/01/block-unwanted-advertisements-on.html

#Script klasörü oluşturuluyor
if [ ! -d ~/.UPDHosts ]
then
mkdir -p ~/.UPDHosts
fi

#Bildirim için sistemde yüklü yazı düzenleme programı adı aranıyor
for i in vi nano kedit /opt/sublime_text/sublime_text scratch-text-editor mousepad gedit ; do
if [ $(which $i > /dev/null 2>&1)$? -eq 0 ]; then
MY_EDITOR=$i
fi
done


#hosts dosyası yedekleniyor
if [ ! -f ~/.UPDHosts/hosts.yedek ]
then
cp /etc/hosts ~/.UPDHosts/hosts.yedek
fi

#Güncelleme yapacak script dosyası oluşturuluyor
echo "#!/bin/bash
sleep 20
gun=1
tarih=\$(date +'%d')

if [ \$tarih -eq \$gun ]
then
cd /tmp
wget http://winhelp2002.mvps.org/hosts.txt

if [ -f hosts.txt ]
then
rm /etc/hosts
mv hosts.txt /etc/hosts
cat /home/$(whoami)/.UPDHosts/hosts.yedek >> /etc/hosts
fi

fi
exit" > ~/update_hosts.sh

#Oluşturulan script /root konumuna taşınıp gerekli yetkiler veriliyor
sudo mv ~/update_hosts.sh /root/update_hosts.sh
sudo chmod 700 /root/update_hosts.sh

#Script sistem açılışında root yetkisiyle otomatik başlatılması için rc.local dosyasına
#son satırdan önce yazılıyor. Son satırda exit 0 olmalı.
if [ ! -f ~/.UPDHosts/rc.local.yedek ]
then
cp /etc/rc.local ~/.UPDHosts/rc.local.yedek
fi
if ! grep -q "/root/update_hosts.sh" /etc/rc.local
then
sudo sed -i -e '$i /root/update_hosts.sh' /etc/rc.local
fi

#Script ilk defa çalıştırılıyor.
cd /tmp
wget http://winhelp2002.mvps.org/hosts.txt
if [ -f hosts.txt ]
then
sudo rm /etc/hosts
sudo mv hosts.txt /etc/hosts
sudo cat /home/$(whoami)/.UPDHosts/hosts.yedek >> /etc/hosts
fi
############################################

echo "Script ve ayarlar başarıyla oluşturuldu.
/home/$(whoami)/.UPDHosts/ konumunda host ve rc.local dosyalarınız yedeklenmiştir." > ~/.UPDHosts/msg
"${EDITOR:-$MY_EDITOR}" ~/.UPDHosts/msg

exit


Not: Scripti uyguladıktan sonra oluşturduğunuz script.sh dosyasına artık ihtiyacınız yok.
Not: hosts dosyası ara belleğe alındığından dolayı yapılan değişiklik, bilgisayarı yeniden başlatıncaya kadar aktif olmuyor. Emin olmamakla beraber şu komut işe yarayabilir. (service network restart)
بسم الله الرحمن الرحيم
|ACEMİLER İÇİN İLK DURAK|Çözüldü|Kod etiketi|

krwlng

Çok iyi bir çalışma olmuş elinize sağlık, özellikle şu vube denen illetten kurtulursak çok çok iyi olacak.
http://twitter.com/yusuFBrn

Ali İsmail Korkmaz, FENERBAHÇE Yıkılmaz!

empax

Teşekkürler @krwlng. Vube hakkında hiç bilgim yok o yüzden bir şey söyleyemem, yanlış olur. :)
بسم الله الرحمن الرحيم
|ACEMİLER İÇİN İLK DURAK|Çözüldü|Kod etiketi|