Ada beberapa mesin linux jarak jauh, dan saya perlu menulis skrip shell yang akan menjalankan kumpulan perintah yang sama di setiap mesin. (Termasuk beberapa operasi sudo). Bagaimana ini bisa dilakukan dengan menggunakan skrip shell?
Anda dapat melakukannya dengan ssh, misalnya:
#!/bin/bash
USERNAME=someUser
HOSTS="host1 host2 host3"
SCRIPT="pwd; ls"
for HOSTNAME in ${HOSTS} ; do
ssh -l ${USERNAME} ${HOSTNAME} "${SCRIPT}"
done
Saat melakukan ssh'ing ke mesin jarak jauh, cara menangani saat meminta autentikasi sidik jari RSA.
Anda dapat menambahkan StrictHostKeyChecking=no
opsi untuk ssh:
ssh -o StrictHostKeyChecking=no -l username hostname "pwd; ls"
Ini akan menonaktifkan pemeriksaan kunci host dan secara otomatis menambahkan kunci host ke daftar host yang dikenal. Jika Anda tidak ingin host ditambahkan ke file host yang dikenal, tambahkan opsi -o UserKnownHostsFile=/dev/null
.
Perhatikan bahwa ini menonaktifkan pemeriksaan keamanan tertentu , misalnya perlindungan terhadap serangan man-in-the-middle. Oleh karena itu, fitur ini tidak boleh diterapkan di lingkungan yang sensitif terhadap keamanan.
Instal sshpass menggunakan, apt-get install sshpass
kemudian edit skrip dan letakkan IP, nama pengguna, dan kata sandi mesin linux Anda dalam urutan masing-masing. Setelah itu jalankan skrip itu. Itu dia ! Skrip ini akan menginstal VLC di semua sistem.
#!/bin/bash
SCRIPT="cd Desktop; pwd; echo -e 'PASSWORD' | sudo -S apt-get install vlc"
HOSTS=("192.168.1.121" "192.168.1.122" "192.168.1.123")
USERNAMES=("username1" "username2" "username3")
PASSWORDS=("password1" "password2" "password3")
for i in ${!HOSTS[*]} ; do
echo ${HOSTS[i]}
SCR=${SCRIPT/PASSWORD/${PASSWORDS[i]}}
sshpass -p ${PASSWORDS[i]} ssh -l ${USERNAMES[i]} ${HOSTS[i]} "${SCR}"
done