Rehber GNU/Linux'ta betik oluşturma

Herkese merhaba, bugün sizlere Mac değiştirme gibi birden fazla komutu nasıl daha kolay kullanabiliceğinizi betik oluşturmayı göstererek öğreteceğim.
(Bugün size balık vermek yerine balık tutmayı öğreteceğim.)

Terminalde macchanger, airmon-ng, passwd... Gibi komutları çağırırken "path" yani yollar kullanırız. Terminal bize "hocam eğer yazdığın şey benim geçtiğim yollar üzerindeyse çalıştırırım" der.
Peki bu yolları ne olduğunu nasıl öğreniriz, kendimiz yol oluşturabilir miyiz derseniz evet yapabiliriz fakat betik oluşturmanın 2 yolu var.

İlki kendiniz bir yol oluşturup bunu /etc/bash.bashrc dosyasının içine eklemeniz lazım fakat ben bunu yaparken çok fazla hata aldım bu yüzden size bu yolu göstermeyeceğim.
İkincisi ise hazırda zaten olan bir yola betik dosyamızı koymaktır bana kalırsa en verimlisi bu çünkü hiç hata almadım. Bu günde bunu göstereceğim.

Öncelikle terminal reisin hangi yollardan geçtiğine bakalım. Bunun için terminale echo $PATH yazmanız yeterli olacaktır.

Screenshot_2022-08-11_10_37_06.png


Evet işte yollar burada buradaki yollardan herhangi birine betiğimizi oluşturacağız. Tavsiyem /usr/local/sbin yolu çünkü bu yol bende tamamen boştu sizde de büyük ihtimalle öyledir.
Not: Bu dizine klasör oluşturmayın aksi takdirde betik çalışmaz çünkü oluşturduğunuz klasör "path" olarak atanmamıştır.
Şimdi /usr/local/sbin konumuna gidelim terminalden ya da dosya yöneticisinden gidebilirsiniz bu size kalmış ben dosya yöneticisi ile gideceğim.

Dosya yöneticisi.png


Burada yukarıdaki /root yazan yere tıklayıp gitmek istediğimiz yeri yazıyoruz yani /usr/local/sbin.

sbin.png


Burada benim oluşturduğum iki adet betik dosyası var ikisi de Mac değiştirmek için Mac. Sh dosyasını silip beraber tekrar oluşturalım.

konum.png


Dosyayı sildim şimdi dosyayı ister leafpad ister mouse pad ile oluşturun ya da sağ tık+belge oluştur+boş dosya seçip yapabilirsiniz.
Ben mouse pad kullanacağım.
Rast gele Mac değiştirmek için gereken kodlarımızı yazdık. "&&" kullanım amacı eğer siz birden fazla komutu sırası ile çalıştırmak istiyorsanız kodların aralarına "&&" koymanız gerekmekte.

Ekran görüntüsü_2022-08-11_11-20-55.png


Ekran görüntüsü_2022-08-11_11-23-50.png


Farklı kaydet deyip kaydetme konumunu /usr/local/sbin olarak ayarlıyoruz,ismini de bimemne.sh yapıyoruz ".sh" betik uzantısıdır.
Ben burada sildiğim dosyanın ismini yani "Mac.sh" koydum siz istediğinizi koyabilirsiniz sadece uzantının ".sh" olmasına dikkat edin.
Yüzdük yüzdük kuyruğuna geldik ,işimiz henüz bitmedi eğer bu şekilde çalıştırmayı dener iseniz terminalde "erişim engellendi" hatasaını alırsınız.

hata.png


Bu hatanın çözümü çok basit,sadece oluşturduğumuz betik dosyasına okuma,yazma ve yürütme izinlerini vereceğiz.
Terminali açıp cd /usr/local/sbin yazıp betik dosyamızın olduğu dizine geliyoruz. ls yazarak dosyamızın ismine bakalım.

terminal.png


Sonrasında ise terminale chmod +rwx mac.sh yazalım. Bu kod seçili olan dosyamıza yani "Mac.sh" dosyamıze r = okuma,W = yazma ve X = yürütme iznin veriyor "+" işareti ise vermek "-" ise almak oluyor. Biz vereceğimiz için "+" kullandık. "chmod" ise bizim dosyalara izin vermemize olan sağlayan toolumuz.

hata çözüm.png


İzinleri verdikten sonra artık betik dosyamız kullanıma hazır. Kullanmak için terminale "Mac.sh" yazmanız yeterlidir.

son.jpeg


Gördüğünüz gibi tek komut ile Mac değiştirebiliriz artık. Bunu istediğniz tüm kodlar için uygulayabilirsiniz.

Evet hocalarım bu benim ilk rehberimdi ve sonuna gelmiş bulunuyoruz bir hatam olduysa ya da yanlış bilgi vermiş isem raporlamak yerine bana söyler iseniz çok makbule geçer. Bugün sizlere balık vermek yerine balık turmayı öğrettiğimi düşünüyorum umarım sizlere bir şeyler katabilmişimdir.

Okuyan ve beğenen herkse teşekkürler kendinize iyi bakın. İyi sosyaller.

@kali musa.
 

Dosya Ekleri

  • dosya oluştu.png
    dosya oluştu.png
    37,8 KB · Görüntüleme: 28
  • kod algılama.png
    kod algılama.png
    20,7 KB · Görüntüleme: 35
Son düzenleyen: Moderatör:
Shell script yazarken yazdığımız UNIX komutlarını sisteme tanıtmamız gerekiyor ki karışıklık olmasın. Her zaman aynı dizine ve aynı amaçla script'ler yazmıyoruz. Bunun için script'in başına
#!/bin/bash veya #!/bin/sh koyuyoruz shell script'ler için. Bash ve Sh sistemdeki symlink'lere göre farkedebilir ama ikisi de çalışacaktır çoğunlukla.
Bunun dışında genellikle diğer dillerde yazarken #!/usr/bin/python veya #!/usr/bin/ruby gibi belirtiyoruz. Bunu tabii sistemdeki symlink'lere göre belirtmemiz gerekiyor ama varsayılan olarak bu PATH'delerdir çoğunlukla.

Bir de ek olarak, root kullanıcısını değil SUDO yetkisi verdiğiniz kendi kullanıcınızı kullanın.
 
Shell script yazarken yazdığımız unıx komutlarını sisteme tanıtmamız gerekiyor ki karışıklık olmasın. Her zaman aynı dizine ve aynı amaçla Script'ler yazmıyoruz. Bunun için Script'in başına.
#!/bin/bash veya #!/bin/sh koyuyoruz Shell Script'ler için. Bash ve sh sistemdeki Symlink'lere göre farkedebilir ama ikisi de çalışacaktır çoğunlukla.
Bunun dışında genellikle diğer dillerde yazarken #!/usr/bin/python veya #!/usr/bin/ruby gibi belirtiyoruz. Bunu tabii sistemdeki Symlink'lere göre belirtmemiz gerekiyor ama varsayılan olarak bu path'delerdir çoğunlukla.

Bir de ek olarak, root kullanıcısını değil sudo yetkisi verdiğiniz kendi kullanıcınızı kullanın.

Her komutta sudo kullanmak istemiyorum doğrusu bu arada unixden bahsetmişsiniz ama GNU'nun açılımı "GNU is not unix" tir burada bir yanlışlık var gibi geldi.
 
Her komutta sudo kullanmak istemiyorum doğrusu bu arada unixden bahsetmişsiniz ama GNU'nun açılımı "GNU is not unix" tir burada bir yanlışlık var gibi geldi.
UNIX bir işletim sistemi ailesi gibi düşünebiliriz, MacOS ve Linux da bu ailenin birer dalı. GNU da UNIX'in kapalı kaynak araçlarının açık kaynaklı yeniden yapılmışı gibidir. Basic UNIX commands
Linux ve MacOS'e de UNIX değil *NIX veya UNIX Like gibi terimlerle hitap ediyoruz genelde. Genel olarak hepsi POSIX'tir. Hepsi POSIX varyantıdır ve UNIX'e yakın oldukları ve eskiden gelen bi alışkanlık olduğu için de UNIX diye hitap ettikleri oluyor bazı insanların. Bunların birçoğu teferruat ve bunlara takılmıyorum çünkü GNU gibi kendi felsefesini agresif bi şekilde kanıtlama amacım yok.

"Çok uzun bu! Ne diyorsun anlamadım" versiyonu: UNIX hitabım pek önemli değil, siz UNIX'i silin gerisine odaklanın.
 
Mac adresi degisimi icin Network Manager'i durdurmana gerek yok.
Sadece internete baglandigin karti devre disi biraksan yeterli.

Ornek:
ifconfig eth0 down && macchanger -r eth0 && ifconfig eth0 up

Ek olarak Systemd uzerinde service yerine systemctl kullanman daha dogru olur.
service komutunu SysVinit uzerinde kullanirsin.
 
MAC adresi degisimi icin network Manager'i durdurmana gerek yok.
Sadece internete baglandigin karti devre disi biraksan yeterli.

Ornek:
ifconfig eth0 down && macchanger -r eth0 && ifconfig eth0 up

Ek olarak systemd uzerinde service yerine systemctl kullanman daha dogru olur.
service komutunu sysvinit uzerinde kullanirsin.

WLAN0 da ifconfigten durdurmak işe yaramıyor hocam busy hatası veriyor.
 

Kullandiginiz dagitimla ilgili bir sorun olabilir. Zira bu sekilde yaptığımi hatirliyorum.

Debian Kali Linux'ta cihaz meşgul hatası veriyor ağ yöneticisini kapatınca sorun çözülüyor. Wi-Fi kartı monitör modda ise ağ yöneticisi yerine ifconfigten pasife almak gerekiyor yoksa yine meşgul hatası veriyor.
 

Geri
Yukarı