Bash betikleri, bir sistem yöneticisinin işinin önemli bir parçasıdır. Hem sıradan hem de kritik görevleri otomatikleştirmenize olanak tanırlar.
Komut dosyalarının en iyi yönlerinden biri, insan müdahalesi olmadan bağımsız olarak çalışabilmeleridir, ancak bazen kullanıcı parolası gerektiren görevleri otomatikleştirmek zor olabilir. Güvenlikten ödün vermeden parola gerektiren komut dosyalarını güvenli bir şekilde nasıl otomatikleştirebileceğinize bakalım.
Basit Bir Komut Dosyası Oluşturma
Veri kaybı durumunda verilerinizi kolayca geri yükleyebilmeniz için Linux giriş klasörünüzü uzak bir konuma yedekleyen basit bir komut dosyası oluşturmak istediğinizi varsayalım.
Giriş klasörünüzde bir Bash komut dosyası oluşturarak başlayın, dokunma komutunu kullanma veya başka bir yöntem ve adlandırın yedekleme_ev.sh. Beğendiğiniz herhangi bir adı ve dizini kullanmaktan çekinmeyin.
Komut dosyası kullanır rsync komutu, yerel ana dizininizdeki tüm dosyaları uzak bir sunucuya yedeklemek için güçlü bir dosya kopyalama aracıdır.
Aşağıdaki betiğin içeriğini kopyalayın ve Bash dosyanıza yapıştırın. john kullanıcısını yerel ev kullanıcınızın doğru adıyla değiştirmeyi unutmayın. Ayrıca uzak sunucu için doğru kullanıcı adını ve IP adresini sağlayın.
#!/bin/bash
#Verileri uzak bir sunucuya kopyala
rsync -avl --mkpath /home/john kullanıcı_adı@uzak_sunucu/ev/Yedekleme
Test edecek bir uzak sunucunuz yoksa, VirtualBox'ı yükleyin ve bir VM kurun yerel makinenizde. VM konuğunu uzak sunucunuz olarak kullanın.
Dosya 'yı kaydet. Komut dosyasını yürütmek için, komutu kullanarak yürütme izni vermeniz gerekir. sudo chmod 755. Tüm kullanıcılar betiği çalıştırabilir ancak yalnızca sudo kullanıcıları dosyayı değiştirebilir.
Son olarak, şu komutu kullanarak terminalden Bash betiğini yürütün:
./backup_home.sh
Bu komut dosyasını her çalıştırdığınızda, uzak sunucu parolasını girmeniz istenir. Komut dosyasını Cron kullanırken olduğu gibi insan müdahalesi olmadan çalıştırmak istiyorsanız bu ideal değildir.
Parola Girişini Otomatikleştirme
Düzenlemek sshpass, yerel PC'nizde veya komut dosyasını çalıştıracağınız PC'de etkileşimli olmayan bir parola sağlayıcısı.
Debian tabanlı dağıtımlarda
Ubuntu, Pop!_OS ve Lubuntu gibi Debian tabanlı bir dağıtım kullanıyorsanız:
sudo uygun güncelleme && sudo apt düzenlemek sshpass
RHEL ve Fedora'da
dnf düzenlemek sshpass
sshpass'ı kurduktan sonra betiği aşağıdaki gibi görünecek şekilde değiştirin.
#!/bin/bash
#Verileri uzak bir sunucuya kopyala
sshpass -p "şifreniz" rsync -avl --mkpath /home/john user_name@remote_server/home/Yedekleme
Burada parolayı düz metin olarak sağlarsınız. Açıkçası, güvenli olmadığı ve iyi bir uygulama olmadığı için bu ideal bir yol değil. Senaryo yanlış ellere geçerse, başınız büyük belada demektir.
Bunu daha güvenli hale getirmek için güvenli ve açık kaynaklı bir şifreleme aracı olan GnuPG kullanacağız.
Parolanızı Şifreleme
GnuPG, çoğu Linux sisteminde varsayılan olarak kuruludur, ancak sisteminizde kurulu olmaması durumunda, işte GnuPG'nin nasıl kurulacağı.
adlı gizli bir dosya oluşturun. sırlar komutu kullanarak .sırlara dokunun. Ekstra bir güvenlik önlemi olarak dosyayı varsayılan olarak gizli yaptığımızdan, şu şekilde yapabilirsiniz Linux'ta gizli dosyaları görüntüleme.
Secrets dosyasında, uzak PC'nizin şifresini girin ve kaydedin.
Ardından, dosyayı kullanarak şifreleyin. gpg emretmek.
sudogpg.sırlar
Şifrelenmiş dosyayı açmak için güvenli ve güçlü bir parola girmeniz istenecektir.
GnuPG, uzantılı yeni bir dosya oluşturacak .gpg eski dosya adına eklenir. Yeni dosya adınız şimdi olmalıdır sırlar.gpgkullandığınızı varsayarsak, sırlar dosya adı.
secrets.gpg içeriğini görüntülerseniz, kedi komutu, parolanızın şifrelenmiş olduğunu göstermek için bazı anlamsız metinlerle sunulacaktır.
Dosyanın içeriğini düz metin olarak görüntülemek için, aşağıdaki komutu kullanarak dosyanın şifresini çözmeniz gerekir (şifreleme sırasında belirlediğiniz parolayı girmeniz istenir):
gpg-dqgizli.gpg
Komut Dosyanızda Şifreli Parola Kullanma
Komut dosyasında şifrelenmiş parolayı kullanmak için komut dosyasını şu şekilde güncelleyin:
#!/bin/bash
#Verileri uzak bir sunucuya kopyala
gpg -dq sırları.gpg | sshpass rsync -avl --mkpath /home/john kullanıcı_adı@uzak_sunucu/ev/Yedekleme
Yedekleme komut dosyalarını yeniden çalıştırın ve bu sefer sizden parola istenmeyecektir.
Bash Betikleriyle Görevleri Otomatikleştirin
GnuGP, PC'nizdeki hassas dosyaları ve verileri korumak için sıklıkla kullanılır ve ayrıca Linux'ta otomatik Bash betiklerindeki parolaları korumak için harika bir araçtır.
Bash betikleriyle yapabileceğiniz çok şey var. Bash, Linux'ta pek çok şeyi otomatikleştirmenize yardımcı olabilecek güçlü bir araçtır ve Bash betikleri yazmayı öğrenmek, değerli bir yatırımdır.