Uzak Linux Sunucusunda Yerel Komut Dosyası Nasıl Çalıştırılır

Yayınlanan: 2022-09-10
Linux komut satırı arabirimlerini gösteren mavi arka planda dizüstü bilgisayar.
fatmawati achmad zaenuri/Shutterstock.com

Yinelenen görevleri komut dosyası yazmak, sistem yönetiminin verimliliğini artırır. Bu, yerel makineler için harika, ancak ya uzak sunucuları denetlerseniz? Uzak bir bilgisayarda yerel bir komut dosyası çalıştırabilir misiniz? Evet!

Uzak Bağlantılar

Uzaktan sistem yönetimi genellikle güvenli bir kabuk bağlantısı üzerinden uzak bilgisayara bağlantı kurmayı içerir. SSH bağlantısı, uzak bilgisayarda size bir komut istemi sağlar. Ardından hemen devam edebilir ve gereken sistem bakımını gerçekleştirebilirsiniz.

Kabuk komut dosyası oluşturma, birçok eylemi tek bir komut satırı talimatında birleştirerek, bir komut dizisini bir programmış gibi çalıştırılabilen bir komut dosyasına sarmanıza izin vererek yardımcı olur.

Zaman geçtikçe, komut dosyalarınızı değiştirecek ve geliştireceksiniz. Yönetmeniz gereken çok sayıda uzak makineniz varsa, her bir sunucudaki her komut dosyasının kopyasını güncel ve güncel tutmak zahmetli ve can sıkıcı bir ek yüktür. Bu, başlı başına bir idari görev haline gelir ve komut dosyalarını kullanmanın sağlaması beklenen zaman tasarrufunu tüketir.

İdeal çözüm, komut dosyalarınızı yerel makinenizde tutmanıza ve bunları SSH bağlantısı üzerinden uzak bilgisayarlarda çalıştırmanıza olanak tanır. Bu, merkezi bir komut dosyası koleksiyonuyla size basitleştirilmiş yönetim sağlar ve aynı güncel komut dosyası tüm bilgisayarlarda çalışır.

Bash ve SSH, tam da bunu yapmanın bir yolunu sunar.

Parolasız SSH Bağlantıları

Bunu yapmanın en iyi yolu, SSH anahtarlarını kullanarak şifresiz bağlantılardır. Yerel bilgisayarınızda SSH anahtarları oluşturup bunları uzak bilgisayarların her birine göndererek, her seferinde parola sorulmadan uzak bilgisayarlara güvenli ve rahat bir şekilde bağlanabilirsiniz.

Linux Kabuğundan SSH Anahtarları Nasıl Oluşturulur ve Kurulur
İLGİLİ Linux Kabuğundan SSH Anahtarları Nasıl Oluşturulur ve Yüklenir

İlk kez kullananlar için göz korkutucu olabilse de SSH anahtarları gerçekten zor değil. Oluşturulmaları kolay, uzak sunuculara kurulumu basit ve SSH ile kullandığınızda sorunsuzdur. Tek ön koşul, uzak bilgisayarlarda SSH arka plan programı sshd çalışıyor olması ve uzak bilgisayarda bir kullanıcı hesabınızın olmasıdır.

Bunlarda zaten uzaktan sistem yönetimi yapıyorsanız, bu gereksinimlerin ikisi de zaten karşılanmış olmalıdır.

Bir SSH anahtar çifti oluşturmak için şunu yazın:

 ssh-keygen

“fedora-36.local” adlı bir bilgisayarda “dave” adlı bir hesabınız varsa, şu komutla SSH ortak anahtarınızı gönderip yükleyebilirsiniz:

 ssh-copy-id [email protected]

Şimdi, her zamanki gibi bir SSH bağlantısı yapmak, SSH anahtarlarını kullanarak kimlik doğrulaması yapacak. Parola sorulmadan uzak sunucudaki bir komut istemine bırakılırsınız.

 ssh [email protected]

Yerel Komut Dosyasını Uzaktan Çalıştırma

Bu testler için uzak sunucumuz “fedora-36.local” isimli bir Linux bilgisayardır. SSH anahtarlarını kurduk ve yerel bilgisayarımızdan uzak sunucuya şifresiz bağlantımızı test ettik.

Senaryomuz çok basit. Uzak sunucuda "timestamp.txt" adlı bir dosyaya bir zaman damgası yazar. Komut dosyasının çıkış komutuyla sona erdiğini unutmayın. Bu önemlidir, bazı eski sistemlerde bir betiğin tamamlanması mümkündür, ancak SSH bağlantısı açık tutulur.

 #!/bin/bash

tarih >> zaman damgası.txt

0 çıkışı

Bu metni bir düzenleyiciye kopyalayın, “local.sh” olarak kaydedin ve ardından yürütülebilir hale getirmek için chmod kullanın.

 chmod +x yerel.sh 

Bir betiği çalıştırılabilir yapmak için chmod kullanma

Yerel makinemizde betiği şu şekilde başlatacağız:

 ssh [email protected] 'bash -s' < local.sh 

SSH üzerinden uzak bir sunucuda çalıştırmak için yerel bir komut dosyası başlatma

İşte bu nasıl çalışıyor.

  • ssh [email protected] : Uzak makineye yaptığımız SSH bağlantısı. Bu, ssh komutunu, uzak sunucuda önceden var olan kullanıcı hesabını ve uzak sunucunun adresini kullanır.
  • 'bash -s' : Bu, Bash'in standart girdi akışından komutları okumasına neden olur. Bash'in yönlendirilmiş veya yönlendirilmiş girişi okumasını sağlar.
  • < local.sh : Komut dosyasını Bash'e yönlendiriyoruz.

Komut dosyası çalıştığında, yerel makinenin komut istemine geri döneriz. Uzak makinemize atlayarak, “timestamp.txt” dosyasının içine bakmak için cat kullanabiliriz.

 kedi zaman damgası.txt 

Son ve şu anda yalnızca bağlantının zaman damgasını görebiliriz. Yerel komut dosyasını birkaç kez daha çalıştırmak, uzak dosyaya karşılık gelen zaman damgalarını ekler.

 kedi zaman damgası.txt 

Tabii ki, gerçek dünya durumunda, senaryonuz daha faydalı bir şey yapar. Ancak önemsiz örneğimiz bile, uzak bir sunucuda yerel bir komut dosyasının yürütüldüğünü gösteriyor.

Argümanları Komut Dosyasına Geçmek

Komut satırı bağımsız değişkenlerini komut dosyasına iletebilirsiniz. Komut dosyamızı üç komut satırı parametresi bekleyecek şekilde değiştireceğiz. Bunlar, zaman damgasıyla birlikte “timestamp.txt” dosyasına yönlendirilir.

Bu betiği “local2.sh” olarak kaydedin ve chmod ile çalıştırılabilir hale getirin.

 #!/bin/bash

echo "$1 $2 $3" >> timestamp.txt
tarih >> zaman damgası.txt

0 çıkışı

Kullanmamız gereken komut, birkaç değişiklikle önceki örneğe benzer.

 ssh [email protected] "bash -s" -- < local2.sh "Nasıl Yapılır\ Geek" "Linux" "Makaleler" 

SSH üzerinden uzak bir sunucuda çalıştırmak için komut satırı parametreleriyle yerel bir komut dosyası başlatma

Çift tire “ -- ” Bash'e aşağıdakilerin ssh komutu için komut satırı parametreleri olarak kabul edilmemesi gerektiğini söyler. Komut dosyası için üç parametre, her zamanki gibi komut dosyası adını takip eder. “Nasıl Yapılır\ Geek” parametresindeki boşluktan çıkmak için ters eğik çizgi “ \ ” kullandığımızı unutmayın.

Parametrelerimizin uzak sunucuda doğru şekilde alındığını ve işlendiğini cat ile kontrol edebiliriz.

 kedi zaman damgası.txt 

Komut dosyasına ait parametrelerin uzak sunucuda alındığını ve doğru şekilde işlendiğini kontrol etme

Bir Komut Dosyasının Bir Bölümünü Uzaktan Çalıştırma

Uzak sunucularda hangi eylemlerin gerekebileceğini belirlemek için bazı yerel işlemler yapması gereken bir komut dosyanız varsa, sizin için uzak eylemleri gerçekleştirmek üzere doğrudan bu komut dosyasına bir bölüm ekleyebilirsiniz.

Linux'ta Bash'de "Buradaki Belgeler" Nasıl Kullanılır
İLGİLİ Linux'ta Bash'te "Buradaki Belgeler" Nasıl Kullanılır

Bunu buradaki belgeleri kullanarak başarabiliriz. Burada belgeler, bir komut dosyasının etiketli bir bölümünden satırları bir komuta yönlendirmemize izin verir. Yerel işleme, buradaki belgenin üstünde ve altında gerçekleştirilebilir.

Bu, burada bir belge içeren “local3.sh” betiğidir.

 #!/bin/bash

# yerel işleme burada yapılabilir

# uzaktan işlem burada yapılır
ssh -T [email protected] << _remote_commands

# uzaktan çalıştırılacak komutlar buraya eklenecek
cd /home/dave/Belgeler
# vb.

# Son olarak, zaman damgası dosyasını güncelleyin
echo "Script3.sh:" $(tarih) >> /home/dave/timestamp.txt

# bu, yeniden yönlendirmenin sonunu belirten etikettir
_remote_commands

# burada daha fazla yerel işlem yapılabilir

0 çıkışı

ssh komutunu, öncekiyle aynı bağlantı ayrıntılarıyla kullanıyoruz. “fedora-36.local” adlı uzak bir sunucuda “dave” kullanıcısı olarak bağlanıyoruz. Ayrıca -T (sözde terminal tahsisini devre dışı bırak) seçeneğini kullanıyoruz. Bu, uzak sunucunun bu bağlantı için etkileşimli bir terminal sağlamasını engeller.

<< ” yönlendirmesinin ardından bir etiket adı gelir. Bu örnekte, “_remote_commands” kullanıyoruz. Bu etiketle ilgili özel bir şey yok, sadece bir etiket.

Yönlendirmeyi takip eden satırlarda görünen tüm komutlar SSH bağlantısı üzerinden gönderilir. Etiketle karşılaşıldığında yeniden yönlendirme durur. Komut dosyasının yürütülmesi daha sonra etiketi takip eden satırla devam eder.

Karma yerel/uzaktan işleme komut dosyamızı çalıştıralım.

 ./local3.sh 

Yerel ve uzaktan işlemenin bir karışımıyla script3.sh'yi başlatma

Beklendiği gibi, “timestamp.txt” dosyasında yeni bir giriş görüyoruz.

 kedi zaman damgası.txt 

Erişiminizi Genişletin

Yerel olarak yazılan, depolanan ve bakımı yapılan komut dosyalarını uzaktan çalıştırabilmek, uygun bir yönetim aracı sağlar. Bir komut dosyasının tam olarak aynı sürümünün tüm uzak sunucularınızda çalıştığını bilmek, yönetimi çok daha kolaylaştırır.

İLGİLİ: Kokpit Web Arayüzü ile Linux Sunucuları Nasıl Yönetilir