Nedávno som potreboval na väčšie množstvo serverov kopírovať ten istý súbor (resp. väčšie množstvo súborov) a rozmýšľal som ako to vymyslieť aby som sa nemusel pripájať na každý server osobitne napr. cez FileZilla klienta. Napadlo ma, že môžem využiť niektorý z linuxových nástrojov a spraviť na to jednoduchý bash skript.
Ak by som na to nepoužil bash skript, tak kopírovanie by fungovalo následovne.
- otvorím klienta FileZilla
- nájdem adresár odkiaľ chcem kopírovať
- prihlásim sa ku požadovanému serveru
- na servery nájdem adresár, kde budem kopírovať
- označím čo chcem kopírovať
- nakoniec skopírujem požadovaný subor/y
Až tak veľa práce s tým nie je. Avšak keď to musíme spraviť na 20 serveroch, tak hneď nás napadne myšlienka, prečo to máme robiť ručne. Najprv poďme zistiť či na strojoch máme nainštalované potrebne nástroje
ssh -V
OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.13, OpenSSL 1.0.1f 6 Jan 2014
sshpass -V
sshpass 1.05 (C) 2006-2011 Lingnu Open Source Consulting Ltd.
This program is free software, and can be distributed under the terms of the GPL
See the COPYING file for more information.
Ak nie, tak nainštalujeme OpenSSH a tak isto aj sshpass
sudo apt install ssh -y
sudo apt install sshpass -y
Najprv vytvoríme a pomenujeme náš skript napr. transfer.sh
nano transfer.sh
Skript bude obsahovať dve premenné. V premenných budú zadefinované cesty k súborom na zdrojovom a cieľovom stroji. V ďalšej časti skriptu pomocou sshpass zadáme prihlasovacie údaje na server a pomocou scp pošleme súbor/y na server.
#! /bin/sh
###variables###
fromdev="~/name/files/files.txt"
todev="/usr/share/"
sshpass -p "heslo" scp $fromdev root@10.8.0.102:/$todev
sshpass -p "heslo" scp $fromdev root@10.8.0.103:/$todev
Skriptu teraz pridelíme práva na spustenie a jednoduchým príkazom skript spustíme.
chmod 755 transfer.sh
./transfer.sh