Merhaba, Ziyaretçi. Lütfen giriş yapın veya üye olun.

Kullanıcı adınızı, parolanızı ve aktif kalma süresini giriniz

  Gelişmiş Arama
insanın içinde varsa, commodore.gen.tr açığa çıkarır bunu.. bir nevi retro olaylarının dolunayıyız.(Arda)
Sayfa: [1]   Aşağı git
Yazdır
Gönderen Konu: Linux Bash Maceralarım  (Okunma Sayısı 6011 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
Simon (Özay Turay)
Yönetici
*****
Mesaj Sayısı: 7.757


Commodore Forever


Üyelik Bilgileri WWW
« : Nisan 26, 2016, 01:01:02 ÖÖ »

Bu başlık ilkerficicilar hocam için gelsin. Kahkaha

DOS'ta batch dosyalarıyla haşır neşir olmayı sevdiğimi herkes bilir. Ama tam zamanlı çalışan bir Ubuntu Server sahibi olarak bash ile de haşır neşir olmayı aynı ölçüde seviyorum. Karizmatik

Bu akşam http://www.whdownload.com sitesindeki tüm dosyaları nasıl indiririm diye düşünürken linux üzerinde bash ile yapayım bu sefer bari dedim. Buradan da kullandığım komutları referans olsun diye veriyorum.

Öncelikle Google Chrome ile açtığım http://www.whdownload.com sitesinde ALL linkine tıklayıp açılan sayfada boş bir yere sağ tıklayıp Sayfa kaynağını görüntüle (Ctrl+U) yapıp açılan sekmede yine boş bir yere sağ tıklayıp Farklı kaydet... (Ctrl+S) ile bir isim vererek (ben wh.html seçtim) Web sayfası, Sadece HTML biçiminde kaydettim. Bu kaydetme işlemi başka bir browserdan da benzer komutlarla yapılabilir.

Bu wh.html dosyasını Linux PC'ye aktardım ve PuTTY yardımıyla Linux PC'nin komut satırına bağlandım. Tüm komutlar wh.html dosyasıyla aynı klasörde çalıştırılmalı.

Önce grep ile linklerin sayısı tutuyor mu ona bakalım. Kaydettiğimiz sayfanın en altında 3384 dosya olduğu yazıyor.

cat wh.html | grep -c "games/"

3384 sonucunu gördük, doğru yoldayız.

cat wh.html | grep "games/"

komutu ile sadece dosya linklerinin olduğu satırları ekranda görmemiz lazım. Ancak liste "Binary file (standard input) matches" hatası ile yarıda kesiliyor. Onun da çözümü -a parametresi ile grep'e sadece text formatında çalışmasını söylemekmiş.

cat wh.html | grep -a "games/"

Evet şimdi oldu ancak listenin başında ve sonunda fazlalıklar var. Önce baştaki dört boşluk karakteri ve <td><a href=" dizisinden kurtulalım ve yerine http://www.whdownload.com/ adresini getirelim.

cat wh.html | grep -a "games/" | sed 's/    <td><a href="/http:\/\/www.whdownload.com\//g'

Oldu da bitti maşallah. Başa eklediğimiz http://www.whdownload.com/ adresindeki / karakterlerini \ ile nasıl escape'lediğimize dikkat.

Şimdi de sondaki fazlalıklardan kurtulalım. Bu sefer egrep komutu yardımıyla satırların sadece " karakterinde kadar olan kısmını alıyoruz.

cat wh.html | grep -a "games/" | sed 's/    <td><a href="/http:\/\/www.whdownload.com\//g' | egrep -o '^[^"]+'

Liste istediğimiz hale geldiğine göre şimdi de bunu bir metin dosyasına kaydedelim.

cat wh.html | grep -a "games/" | sed 's/    <td><a href="/http:\/\/www.whdownload.com\//g' | egrep -o '^[^"]+' > whlinks.txt

Artık tüm dosyaların linkleri elimizde olduğuna göre destekleyen bir programa bu dosyayı gösterip hepsini indirebiliriz. Ama durun madem her şeyi Linux'tan hallettik dosyaları da o indirsin bari. Bu sefer de imdadımıza wget komutu bir sürü karışık parametresiyle yetişiyor.

wget -r -H -nc -np -nH --cut-dirs=1 -e robots=off -l1 -i ./whlinks.txt

Artık arkamıza yaslanıp bir Türk olarak 3384 adet dosyanın inmesini izlemekten başka yapacak bir işimiz kalmadı. Yaşasın Linux, Yaşasın GNU, Yaşasın bash. Kahkaha

Not: Tabi ki oturup izleyecek halimiz yok, Linux'a da PuTTY ile bağlandık peki download bitene kadar Windows PC de mi açık kalacak. Tabi ki hayır, bu sefer de imdadımıza screen komutu yetişiyor. Bu komut ile sanal bir teminal açıp indirme komutumuzu onuniçinden çalıştırarak PuTTY oturumunu kapatabiliriz. Daha sonra indirme durumunu kontrol etmek istersek bu sanal terminale tekrar bağlanabiliriz tabi ki.

Sanal terminal açmak için:

screen -A -m -d -S terminal-ismi /bin/bash

Bağlantıyı kesmek için Ctrl+A hemen peşinden D tuşlarına başıyoruz.

Tekrar bağlanmak için:

screen -r terminal-ismi

Birden fazla sanal terminali farklı isimler vermek koşuluyla açabilirsiniz.

Bu akşamlık bu kadar bash komutu ve Linux yeter sanırım. Hepinize bol Linux'lu günler. Masum
Logged

https://retrodergi.com - https://e-turay.com - https://karizmawow.e-turay.com

Retro: Commodore 64, Amiga 500, Amiga 1200
Retromsu: Wii, XBox360, XBox, PS3 Slim, PS2 FAT, PS1, PS Vita, Nintendo 3DS, Nintendo 2DS
hakanzade
Ziyaretçi
« Yanıtla #1 : Nisan 26, 2016, 01:26:56 ÖÖ »

Flashget ile indirdiydim sayfaya sağ tıklayıp tümünü indir diyerek , sizin yol daha çetrefilliymiş.
Logged
Simon (Özay Turay)
Yönetici
*****
Mesaj Sayısı: 7.757


Commodore Forever


Üyelik Bilgileri WWW
« Yanıtla #2 : Nisan 26, 2016, 01:42:50 ÖÖ »

Flashget ile indirdiydim sayfaya sağ tıklayıp tümünü indir diyerek , sizin yol daha çetrefilliymiş.

Adım adım anlattım diye öyle gözüküyor, sadece iki komut kullanılıyor aslında.

cat wh.html | grep -a "games/" | sed 's/    <td><a href="/http:\/\/www.whdownload.com\//g' | egrep -o '^[^"]+' > whlinks.txt
wget -r -H -nc -np -nH --cut-dirs=1 -e robots=off -l1 -i ./whlinks.txt
Logged

https://retrodergi.com - https://e-turay.com - https://karizmawow.e-turay.com

Retro: Commodore 64, Amiga 500, Amiga 1200
Retromsu: Wii, XBox360, XBox, PS3 Slim, PS2 FAT, PS1, PS Vita, Nintendo 3DS, Nintendo 2DS
ilkerficicilar
Uzman
*****
Mesaj Sayısı: 1.122


Üyelik Bilgileri WWW
« Yanıtla #3 : Nisan 26, 2016, 07:15:14 ÖÖ »

Oooo başlık bana, ben başlığa gelmişim Başlıkta Linux'u görünce atladım hemen.

Gerçi lynx yüklüyse, tembel işi şu şekilde de mümkün:

lynx -dump "http://www.whdownload.com/games.php?name=%&sort=0&dir=0" |cut -b7- |grep "games/"|wget -i -


Yalnız, lynx de İsviçre çakısı gibi. C64'le CGTR'ye girmeye kasarken bile lynx kullanıyorum

Bu arada, C64'te LUnix işletim sisteminde de buna benzer komut ekleme yapabiliyoruz. Sadece | yerine ! kullanılıyor.
Logged

http://cbm.ficicilar.name.tr/ - Commodore Hacking
Simon (Özay Turay)
Yönetici
*****
Mesaj Sayısı: 7.757


Commodore Forever


Üyelik Bilgileri WWW
« Yanıtla #4 : Nisan 26, 2016, 09:17:44 ÖÖ »

Evet bu biraz hileli çözüm olmuş lynx'in dump parametresi sayesinde ama çok daha pratikmiş.

Bir ek bilgi de benden gelsin o zaman, bu tarz bir siteye sürekli yeni dosyalar ekleniyorsa wget'in -N parametresiyle sunucuda daha yenisi bulunmayan dosyaların tekrar download edilmesi engellenebilir.

lynx -dump "http://www.whdownload.com/games.php?name=%&sort=0&dir=0" | cut -b7- | grep "games/" | wget -N -i -
Logged

https://retrodergi.com - https://e-turay.com - https://karizmawow.e-turay.com

Retro: Commodore 64, Amiga 500, Amiga 1200
Retromsu: Wii, XBox360, XBox, PS3 Slim, PS2 FAT, PS1, PS Vita, Nintendo 3DS, Nintendo 2DS
Simon (Özay Turay)
Yönetici
*****
Mesaj Sayısı: 7.757


Commodore Forever


Üyelik Bilgileri WWW
« Yanıtla #5 : Nisan 26, 2016, 10:46:39 ÖÖ »

Biri indirmek ve local/remote dosya sayısını saymak için diğeri de sadece saymak için iki script yaptım. Bu saatten sonra whdownload.com sitesi güncellenmez ama (başka kaynaklarda güncellemeler var grupta paylaşmıştım) scriptler başka bir şekilde iş görebilir diye buradan da paylaşayım.

whdownload

#!/bin/bash

clear
echo "Downloading Files From WHDownload.com All Games"
echo ""
lynx -dump "http://www.whdownload.com/games.php?name=%&sort=0&dir=0" | cut -b7- | grep "games/" > whdlist.txt
wget -N -r -nH -np -i whdlist.txt
echo ""
echo "Counting Files in Local & Remote Copies"
echo ""
echo Local: $(find ./games -type f | grep -c "")
echo Remote: $(cat whdlist.txt | grep -c "")
echo ""
echo "Download Complete..."
echo ""

read -s -n 1 -p "Press any key to continue..."


whcount

#!/bin/bash

clear
echo "Counting Files in Local & Remote Copies of WHDownload.com All Games"
echo ""
echo Local: $(find ./games -type f | grep -c "")
lynx -dump "http://www.whdownload.com/games.php?name=%&sort=0&dir=0" | cut -b7- | grep "games/" > whdlist.txt
echo Remote: $(cat "whdlist.txt" | grep -c "")
echo ""

read -s -n 1 -p "Press any key to continue..."
« Son Düzenleme: Nisan 26, 2016, 10:53:13 ÖÖ Gönderen: Simon (Özay Turay) » Logged

https://retrodergi.com - https://e-turay.com - https://karizmawow.e-turay.com

Retro: Commodore 64, Amiga 500, Amiga 1200
Retromsu: Wii, XBox360, XBox, PS3 Slim, PS2 FAT, PS1, PS Vita, Nintendo 3DS, Nintendo 2DS
Simon (Özay Turay)
Yönetici
*****
Mesaj Sayısı: 7.757


Commodore Forever


Üyelik Bilgileri WWW
« Yanıtla #6 : Nisan 26, 2016, 12:01:54 ÖS »

Bu arada sitede 3384 dosya var gibi görünüyor ama aslında 3359 dosya varmış, şu oyunlar ikişer kere listelenmiş, haberiniz olsun benim gibi tırmalamayın sonra. Kahkaha

http://www.whdownload.com/games/Update-2011-07-17/Arena_v1.2.zip
http://www.whdownload.com/games/Update-2011-07-17/ArtOfChess_v1.1_1008.zip
http://www.whdownload.com/games/Update-2011-07-17/AssassinSpecialEdition_v1.2.zip
http://www.whdownload.com/games/Update-2011-07-17/AtomSmasher_v1.0.zip
http://www.whdownload.com/games/Update-2011-07-17/AtomicRoboKid_v1.4_2243.zip
http://www.whdownload.com/games/Update-2011-07-17/Atomix_v1.2_1356.zip
http://www.whdownload.com/games/Update-2011-07-17/BCKid_v1.2.zip
http://www.whdownload.com/games/Update-2011-07-17/Baal_v1.4.zip
http://www.whdownload.com/games/Update-2011-07-17/BackToTheFuturePart3_v1.3.zip
http://www.whdownload.com/games/Update-2011-07-17/BundesligaManagerHattrick_v0.9_De_AGA_0791.zip
http://www.whdownload.com/games/Update-2011-07-17/CannonFodder2_v1.12_0104.zip
http://www.whdownload.com/games/Update-2011-07-17/CapNCarnage_v1.0.zip
http://www.whdownload.com/games/Update-2011-07-17/CarVup_v1.3_1232.zip
http://www.whdownload.com/games/Update-2011-07-17/Castles_v1.3_2381.zip
http://www.whdownload.com/games/Update-2011-07-17/CelticLegends_v1.3_1281.zip
http://www.whdownload.com/games/Update-2011-07-17/ChaosInAndromeda_v1.0.zip
http://www.whdownload.com/games/Update-2011-07-17/CharlieJCool_v1.2.zip
http://www.whdownload.com/games/Update-2011-07-17/KickOff3EuropeanChallenge_v1.0_AGA_1896.zip
http://www.whdownload.com/games/Update-2011-07-17/KnightOrc_v1.0_0215.zip
http://www.whdownload.com/games/Update-2011-07-17/KnightsOfTheCrystallion_v1.51_1160.zip
http://www.whdownload.com/games/Update-2011-07-17/KnightsOfTheCrystallion_v1.51_De_1426.zip
http://www.whdownload.com/games/Update-2011-07-17/LastDuel_v1.1.zip
http://www.whdownload.com/games/Update-2011-07-17/LeaderBoard_v0.1_Arcadia.zip
http://www.whdownload.com/games/Update-2011-07-17/LeavinTeramis_v1.1_3061.zip
http://www.whdownload.com/games/Update-2011-07-17/Legacy_v1.0.zip


Logged

https://retrodergi.com - https://e-turay.com - https://karizmawow.e-turay.com

Retro: Commodore 64, Amiga 500, Amiga 1200
Retromsu: Wii, XBox360, XBox, PS3 Slim, PS2 FAT, PS1, PS Vita, Nintendo 3DS, Nintendo 2DS
Alpyre
Uzman
*****
Mesaj Sayısı: 2.237



Üyelik Bilgileri WWW
« Yanıtla #7 : Nisan 26, 2016, 12:27:29 ÖS »

Şimdi sıra geldi bu oyunları oynamaya...

Her gün sadece bir tanesini oynasan 10 yıl falan ediyor. Kahkaha
Logged

Alper
Simon (Özay Turay)
Yönetici
*****
Mesaj Sayısı: 7.757


Commodore Forever


Üyelik Bilgileri WWW
« Yanıtla #8 : Nisan 26, 2016, 14:52:01 ÖS »

Oynayacağımızdan değil, dediğim gibi macera olsun.

Zaten bunlar güncel WHDLoad arşivi değil, en son 29.07.2011'de güncellenmiş.

Daha güncelini http://tinyurl.com/m9qjwpy adresinden (MEGA Sync ile süper iniyor) indirebilirsiniz.
Logged

https://retrodergi.com - https://e-turay.com - https://karizmawow.e-turay.com

Retro: Commodore 64, Amiga 500, Amiga 1200
Retromsu: Wii, XBox360, XBox, PS3 Slim, PS2 FAT, PS1, PS Vita, Nintendo 3DS, Nintendo 2DS
wizofwor
Genel Yönetici
*****
Mesaj Sayısı: 4.790


Gosub ile gidilen yerden goto ile dönen adam


Üyelik Bilgileri WWW
« Yanıtla #9 : Nisan 26, 2016, 16:43:41 ÖS »

@Alpyre: Arduino ile bazı mobil oyunları çözebilen robot uygulamarı var. Açık kaynak kodlu pratik bir yapay zeka uygulaması çıkarsa böyle bir robotu yapay zekayla birleştirip bu oyunları oynatmak lazım. Başka türlü bitmez. Nihai projem olabilir(!)
Logged

Sayfa: [1]   Yukarı git
Yazdır
Gitmek istediğiniz yer: