Cara menjalankan skrip lokal di server Linux jarak jauh

Fatmawati Ahmad zaenuri / Shutterstock.com

Pemrograman tugas berulang meningkatkan efisiensi manajemen sistem. Ini bagus untuk mesin lokal, tetapi bagaimana jika Anda memantau server jarak jauh? Bisakah kamu mengendarainya? manis skrip aktif kendali jarak jauh komputer? Ya!

komunikasi jarak jauh

Administrasi sistem jarak jauh biasanya melibatkan koneksi ke komputer jarak jauh melalui file sorang percaya kamuKoneksi yang bagus. Koneksi SSH memberi Anda prompt perintah di komputer jarak jauh. Anda kemudian dapat melanjutkan secara langsung dan melakukan pemeliharaan sistem yang diperlukan.

Skrip shell membantu Anda dengan memungkinkan Anda merangkum serangkaian perintah ke dalam skrip yang dapat dijalankan sebagai program, dan untuk menggabungkan beberapa tindakan ke dalam satu pernyataan baris perintah.

Seiring waktu Anda akan menyesuaikan dan meningkatkan skrip Anda. Ketika Anda memiliki banyak komputer jarak jauh untuk dikelola, memperbarui salinan setiap skrip di setiap server akan membosankan dan membosankan. Ini menjadi tugas administratif itu sendiri dan menghilangkan penghematan waktu yang seharusnya didapat dengan menggunakan skrip.

Solusi ideal memungkinkan Anda menyimpan skrip di mesin lokal dan menjalankannya di mesin jarak jauh melalui koneksi SSH. Ini memberi Anda manajemen yang disederhanakan dengan serangkaian skrip pusat dan skrip terbaru yang sama yang berfungsi di semua komputer.

Bash dan SSH menyediakan cara untuk melakukan ini.

Koneksi SSH tanpa kata sandi

Cara terbaik untuk melakukannya adalah dengan menggunakan login tanpa kata sandi dengan kunci SSH. Dengan membuat kunci SSH di komputer lokal Anda dan mengirimkannya ke setiap komputer jarak jauh, Anda dapat terhubung ke komputer jarak jauh dengan aman dan mudah tanpa dimintai kata sandi setiap saat.

Meskipun dapat menakutkan bagi pengguna baru, kunci SSH tidak terlalu sulit. Mudah dibuat, mudah dipasang di server jarak jauh, dan mulus saat digunakan dengan SSH. Satu-satunya persyaratan adalah bahwa komputer jarak jauh memiliki daemon SSH sshd Anda menjalankan dan memiliki akun pengguna di komputer jarak jauh.

Jika Anda sudah menjalankan sistem dari jarak jauh, maka kedua persyaratan ini seharusnya sudah terpenuhi.

Untuk menghasilkan pasangan kunci SSH, masukkan:

ssh-keygen

Jika Anda memiliki akun bernama “dave” di komputer bernama “fedora-36.local”, Anda dapat mengirim kunci publik SSH Anda ke sana dan menginstalnya dengan perintah ini:

ssh-copy-id [email protected]

Sekarang ketika Anda terhubung ke SSH dengan cara biasa, otentikasi dilakukan menggunakan kunci SSH. Anda dimasukkan ke prompt perintah di server jauh tanpa diminta kata sandi.

ssh [email protected]

Jalankan skrip jarak jauh lokal

Untuk pengujian ini, server jarak jauh kami adalah mesin Linux yang disebut fedora-36.local. Kami mengonfigurasi kunci SSH dan menguji koneksi tanpa kata sandi kami ke server jarak jauh dari komputer lokal kami.

Skenario kami sangat sederhana. Menulis stempel waktu ke file bernama “timestamp.txt” di server jauh. Perhatikan bahwa skrip diakhiri dengan perintah keluar. Ini penting karena pada beberapa sistem lama, skrip dapat dijalankan hingga selesai sambil membiarkan koneksi SSH terbuka.

#!/bin/bash

date >> timestamp.txt

exit 0

Salin teks ini ke editor, simpan sebagai “local.sh” dan kemudian gunakan chmod Jadikan itu dapat dieksekusi.

chmod +x local.sh

Di mesin lokal kami, kami memulai skrip sebagai berikut:

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

Begini Cara kerjanya.

  • kamu [email protected]: Koneksi SSH yang akan kita buat dengan komputer jarak jauh. Ini digunakan ssh Perintah, akun pengguna di server jauh, dan alamat server jauh.
  • “bash -s”: Ini membuat Bash membaca perintah dari aliran input standar. Mengizinkan Bash membaca input yang diteruskan atau diteruskan.
  • : Kami mengarahkan skrip ke bash.

Saat skrip dijalankan, kami kembali ke prompt perintah komputer lokal. Pergi ke komputer jarak jauh, kita dapat menggunakan cat untuk mencari file timestamp.txt.

cat timestamp.txt

Kita dapat melihat stempel waktu koneksi terakhir – dan saat ini saja. Jika Anda menjalankan skrip lokal beberapa kali, stempel waktu yang sesuai akan ditambahkan ke file jarak jauh.

cat timestamp.txt

Tentu saja, dalam situasi dunia nyata, skrip Anda akan melakukan sesuatu yang lebih berguna. Tetapi bahkan contoh sederhana kami menunjukkan skrip lokal yang berjalan di server jauh.

Berikan argumen ke teks

Anda dapat meneruskan argumen baris perintah ke skrip. Kami akan mengubah skrip kami untuk mengharapkan tiga parameter baris perintah. Ini diarahkan ke file timestamp.txt dengan stempel waktu.

Simpan skrip ini sebagai local2.sh dan buat itu dapat dieksekusi chmod.

#!/bin/bash

echo "$1 $2 $3" >> timestamp.txt
date >> timestamp.txt

exit 0

Perintah yang perlu kita gunakan mirip dengan contoh sebelumnya, dengan beberapa perubahan.

ssh [email protected] "bash -s" -- < local2.sh "How-To Geek" "Linux" "Articles"

tanda hubung ganda--‘ memberi tahu Bash bahwa yang berikut ini tidak boleh dianggap sebagai parameter baris perintah untuk ssh Memerintah. Tiga parameter skrip mengikuti nama skrip seperti biasa. Perhatikan bahwa kami menggunakan garis miring terbalik”‘ pour échapper à l’espace dans le paramètre How-ToGeek.

Nous pouvons vérifier avec cat Bahwa parameter kami diterima dan diproses dengan benar di server jauh.

cat timestamp.txt

Jalankan bagian skrip dari jarak jauh

Jika Anda memiliki skrip yang perlu melakukan beberapa pemrosesan secara lokal untuk menentukan tindakan apa yang mungkin diperlukan di server jauh, Anda dapat menambahkan bagian langsung ke skrip ini yang melakukan tindakan jarak jauh untuk Anda.

Kita dapat mencapai ini dengan menggunakan dokumen-dokumen ini. Di sini, dokumen memungkinkan kami untuk mengarahkan ulang baris dari bagian skrip tertentu ke sebuah perintah. Pemrosesan lokal dapat terjadi di atas dan di bawah Heredoc.

Ini adalah skrip local3.sh yang berisi kode genetik.

#!/bin/bash

# local processing can done here

# remote processing is done here
ssh -T [email protected] << _remote_commands

# commands to be run remotely would be added here
cd /home/dave/Documents
# etc.

# Finally, update the timestamp file
echo "Script3.sh:" $(date) >> /home/dave/timestamp.txt

# this is the label that marks the end of the redirection
_remote_commands

# more local processing can be done here

exit 0

Kami menggunakan itu ssh Minta akses data yang sama seperti sebelumnya. Kami login sebagai pengguna “dave” di server jauh yang disebut “fedora-36.local”. Kami juga menggunakannya -T (Nonaktifkan pemetaan stasiun palsu). Ini mencegah server jauh menyediakan kios untuk koneksi ini.

pemindahan”<<“mengikuti nama a Label. Dalam contoh ini kita menggunakan “_remote_commands”. Tidak ada yang istimewa dari label ini, itu hanya label.

Semua perintah yang muncul di baris apa yang harus diikuti Pengalihan dikirim melalui koneksi SSH. Pengalihan berakhir ketika label ditemukan. Kemudian skrip melanjutkan mengeksekusi baris setelah label.

Mari kita jalankan skrip pemrosesan lokal/jauh campuran.

./local3.sh

Seperti yang diharapkan, kita melihat entri baru di file timestamp.txt.

cat timestamp.txt

Perluas jangkauan Anda

Kemampuan untuk menjalankan skrip yang ditulis, disimpan, dan dipelihara dari jarak jauh secara lokal menyediakan alat manajemen yang nyaman. Mengetahui bahwa semua server jarak jauh Anda menjalankan versi skrip yang sama membuat pengelolaan menjadi jauh lebih mudah.

terkait: Cara Mengelola Server Linux Menggunakan Antarmuka Web Cockpit

Baca Juga!

Beberapa kartu grafis RTX 4090 merekomendasikan catu daya yang lebih tinggi daripada instruksi Nvidia

Kesimpulan: Nvidia telah menetapkan rekomendasi catu dayanya sendiri untuk kartu grafis seri RTX 40 baru, …