|
|
Bu makalenin farkl� dillerde bulundu�u adresler: English Castellano Deutsch Francais Italiano Nederlands Russian Turkce Polish |
taraf�ndan Erdal Mutlu <erdal(at)linuxfocus.org> Yazar hakk�nda: Erdal, LF'nin T�rk edit�rlerinden birisidir. �u anda Sistem y�neticisi olarak Linotype Library'de �al��maktad�r. �niversite y�llar�ndan beri bir Linux hayran�d�r ve bu ortamda �al��maktan ve uygulama geli�tirmekten ho�lanmaktad�r. T�rk�e'ye �eviri: Erdal Mutlu <erdal(at)linuxfocus.org> ��erik:
|
�zet:
E�er, y�netmekte olan Linux/Unix bilgisayarlar�n�z�n say�s� �ok ise, baz�
i�leri otomatik yapmak i�in kabuk programlar�na gereksiniminiz olacakt�r.
G�nl�k �al��malar�n�z s�ras�nda yapt���n�z i�lemler her sistem i�in ayn� veya hemen
hemen ayn� oldu�unu fark etmi�sinizdir. Belkide bu i�leri otomatik olarak
yapman�n yollar�n� da d���nm��s�n�zd�r. Bu durum �zellikle benzer �ekilde
yap�land�r�lm�� �ok say�daki Linux/UNIX sistemleriniz varsa ge�erlidir.
Bu yaz�da bunu yapmak i�in ssh ara�lar�n� kullanan bir y�ntemi size
tan�taca��m.
Bu yaz�y� takip edebilmek i�in kabuk programlama ile ilgili temel bilgiye sahip olman�z gerekmektedir. Kabuk programlama ile ilgili daha fazla bilgi LF'nin Katja ve Guido Socher taraf�ndan yaz�lm�� Kabuk programlama yaz�s�n� okuyabilirsiniz. Ayr�ca, ssh-keygen, ssh-add, scp, sftp gibi ssh ara�lar� hakk�nda da bilgi sahibi olman�z gerekmektedir. SSH protokol�n�n Linux i�in serbest yaz�l�m �er�evesinde geli�tirilmi� ara�lar�n� OpenSSH'dan bulubilirisniz. Ayr�ca, bunlar�n man sayfalar� da vard�r.
scp /path/to/the/file/file1 user@remote_host:/remotedir/newfile
Bu �rnekte yerel bilgisayardaki file1 dosyas� remote_host (Bu IP adresi de olabilir.) ad�ndaki bilgisayar�n /remotedir dizinine newfile yeni ismiyle kopyalanmaktad�r. E�er, 'user' olarak girdi�iniz ge�i�s�zc��� do�ru ve kopyalamak i�in gerekli haklara sahip iseniz, kopyalama i�lemi ger�ekle�tirilecektir. �sterseniz hedef dosya ismin vermeyebilirsiniz. Bu durumda dosya ayn� isimle kopyalanacakt�r. K�sacas�, kopyalama s�ras�nda dosya ad�n� de�i�tirmek m�mk�n olmaktad�r.scp user@remote_host:/remotedir/file /path/to/local/folder/newfile
scp komutunun �ok kullan��l� bir �zelli�i daha var. Bir dizini t�m i�eri�i ile birlikte, yani t�m dosyalar� ve dizinleri ile birlikte kopyalamak i�in '-r' se�ene�i kullan�lmaktad�r.scp -r user@remote_host:/remotedir .
Yukar�daki komut, remote_host adl� bilgisayarda bulunan remotedir dizini ve i�erdi�i t�m dosya ve dizinleri ile birlikte bulundu�umuz dizin alt�na ayn� adla kopyalamaktad�r. Not:Burada remote_host adl� bilgisayarda sshd servisinin �al��t��� varsay�lm��t�r.ssh [email protected] df -H
Komutun kullan�m� uaktaki bilgisayara eri�im ile �ok benze�mektedir. Tek fark, bilgisayara ad�ndan sonra �al��t�r�lacak komutun (�rne�imizde 'df -H') yaz�lmas�d�r. Komutun ��kt�s� yerel bilgisayarda g�r�nt�lenecektirssh-keygen -b 1024 -t dsa
Komutu �al��t�r�ld���nda �zel (private) anahtar� i�in dosya ad� girmeniz gerekecektir. Genel anahtar�n sakland��� dosya ad�n�, �zel anahtar dosya ad�na '.pub' eklenmesi ile olu�turulmaktad�r. '-b 1024' anahtarda yer alan bit say�s�d�r. E�er, b�yle bir de�er belirtmezseniz benimsenmi� de�er kullan�lacakt�r. '-t dsa' ile anahtar tipi belirlenmektedir. 1 s�r�m numaral� protokol i�in 'rsa1', 'rsa' veya 'dsa' ise 2 s�r�m nolu protokol i�in olan se�eneklerdir. Size tavsiyen SSH'n�n 2 s�r�ml� protokul�n� kullanman�zd�r. Ancak, sisteminizde �ok eski sunucular varsa, ki bunlar sadece 1 nolu protokol� destekliyorlard�r, o zaman '-t rsa1' se�ene�i ile bir anahtar �ifti yaratman�z gerekecektir. ssh program�n� kullan�rken 1 veya 2 s�r�m nolu protokol�n kullan�lmas�n� sa�laman�z m�mk�nd�r. Bunun i�in s�ras�yla '-1' veya '-2' se�eneklerini kullanman�z gerekecektir.Anahtar�n�z� kullanabilmek i�in genel (public) olan�n� ba�lanaca��n�z bilgisayara y�klemeniz gerekecektir. Bunun i�in genel anahtar�n i�eri�i $HOME/.ssh/authorized_keys veya $HOME/.ssh/authorized_keys2 dosyas�na eklenmelidir. �ki protokol i�in olan anahtarlar�n�z� kar��t�rmamaya dikkat etmelisiniz. authorized_keys 1 s�r�m nolu SSH protokol�, authorized_keys2 ise 2 s�r�m nolu SSH protokol� i�in kullan�lamaktad�r. E�er, anahtarlar�n�z� d�zg�n bir �ekilde y�klediyseniz, o bilgisayara bir sonraki ba�lant�n�zda �ncelikle ge�i�c�mlesi girmeniz istenecektir. Yanl�� giri� yapman�z durumunda, ge�i�s�zc��� girmeniz istenebilir. sshd'nin /etc/ssh/sshd_config yap�land�rma dosyas�nda 'PasswordAuthentication no' de�i�ikli�ini yaparak o bilgisayara sadece anahtar kimliklendirilmesi kullan�larak giri� yap�lmas�n� sa�layabilirsiniz.
�u ana kadar her�ey tamamd�r. Ba�ka bir bilgisayarda uzaktan komut �al��t�rma ve oradan kendi bilgisayar�m�za veya kendi bilgisayar�m�zdan uzaktaki bilgisayara g�venli bir �ekilde dosya kopyalaman�n yollar�n� ��rendik. Ancak, i�leri otomatikle�tirmek i�in ge�i�s�zc��� veya ge�i�c�mlesi girmememiz gerekir. Yoksa, otomatikle�tirmeyi unutun. Bir ��z�m, herbir kabuk program� i�ine ge�i�s�zc���n� veya ge�i�c�mlesini yazmak olabilir. Daha iyi bir y�ntem ise, ssh-agent kullanmakt�r. ssh-agent, arka planda �al��an ve �zel anahtarlar� saklayarak sizin yerinize otomatik olarak kullanan bir ara�t�r. Program� a�a��daki gibi �al��t�rmak m�mk�nd�r:
ssh-agent $BASH
�zel anhtarlar�n�z� eklemek i�inssh-add .ssh/id_dsa
veyassh-add .ssh/identity
komutlar� kullan�labilir. id_dsa DSA tipli �zel anahtar, identity ise RSA1 tipli �zel anahtard�r. Bunlar, ssh-keygen program�n� kullan�rken benimsenmi� de�er olarak yarat�lan dosya isimleridir. ssh-add anahtarlar� ssh-agent'a eklemeden �nce ge�i�c�mlenizin girilmesini isteyecektir. Eklenmi� anahtarlarlar�n listesini a�a��daki komutla alabilirsiniz:ssh-add -l
E�er, anahtar�n�z� y�kledi�iniz bilgisayara tekrar ba�lan�rsan�z, hi�bir�ey girmeden ba�lant� sa�lanm�� olur! ssh-agent kimliklendirme i�lemini yerine getirmi� olacakt�r.
ssh-agent'� yukar�daki gibi kulland���n�zda, sadece �al��t�rd���n�z konsoldan kullanman�z m�mk�nd�r. E�er, herhangi bir konsoldan kullanmak istiyorsan�z, biraz daha fazla i�lem yapman�z gerekecektir. ssh-agent'� �al��t�ran k���k bir kabuk program� yazd�m:
#!/bin/sh # # Erdal mutlu # # Starting an ssh-agent for batch jobs usage. agent_info_file=~/.ssh/agent_info if [ -f $agent_info_file ]; then echo "Agent info file : $agent_info_file exists." echo "make sure that no ssh-agent is running and then delete this file." exit 1 fi ssh-agent | head -2 > $agent_info_file chmod 600 $agent_info_file exit 0
Yukar�daki kabuk program�, kullan�c�n�n ev dizinini alt�nda ssh ile ilgili dosyalar�n�n bulundu�u dizin, ki genelde bu '.ssh/' d�r, i�indeki agent_info dosyas�n�n varl���n� denetlemektedir. E�er, bu dosya varsa, kullan�c� dosyan�n varl��� hakk�nda uyar�lmakta ve ne yap�labilece�i hakk�nda k�sa bir mesaj g�r�nt�lenmektedir. E�er, kullan�c� ssh-agent program�n� �al��t�rmad�ysa, agent_info dosyas�n� silinmesi ve kabuk program�n�n tekrar �al��t�r�lmas� gerekmektedir. Kabuk program� ssh-agent'� �al��t�r�p, onun ��kt�s�n�n ilk iki sat�r�n� agent_info dosyas�na kaydetmektedir. Bu bilgi ssh ara�lar� taraf�ndan daha sonralar� kullan�lacakt�r. En sonunda ise, dosyay� sadece kullan�c�n�n okuyup yazablmesine y�nelik dosya haklar� chmod komutuyla de�i�tirilmektedir.
ssh-agent �al��t�rd���n�z andan itibaren anahtarlar�n�z� eklemeniz m�mk�nd�r. Ancak, daha �ncesinde agent_info dosyas�ndaki bilgileri ssh ara�lar�n�n ula�abilecek duruma getirmeniz gerekmektedir. Bunun i�in a�a��daki komutlardan birini kullanabilirsiniz:
source ~/.ssh/agent_info veya . ~/.ssh/agent_info
�imdi ssh-add ile �zel anahtarlar�n�z� ekleyebilirsiniz. A�a��daki sat�rlar� .bashrc dosyas�na ekleyerek, her yeni konsol a�t���n�zda agent_info bilgilerine ula�m�� olacaks�n�z:
if [ -f .ssh/agent_info ]; then . .ssh/agent_info fi
UYARI: ssh-agent ve otomatik y�kleme kabuk program�n� �al��t�raca��n�z bilgisayar�n g�venli�ini sa�lamak zorundas�n�z. Yoksa, sizin hesab�n�za ula�abilen herkes, anahtarlar�n�z ile ula�t���n�z t�m hesaplara ula�abilecektir. Her�eyin bir fiyat� var tabii!
Sistem y�netcisinin baz� i�lerini nas�l otomatikle�tirece�imizi anlatman�n zaman� geldi art�k. Program�n sa�layaca�� �ey, belli say�daki komutu belli bilgisayarlarda �al��t�rmak ve o bilgisayarlara veya o bilgisayarlardan yerel bilgisayara dosyalar kopyalamakt�r. Bu da zaten sistem y�neticisinin s�k�a yapt��� i�lerdendir. Kabuk program�n�n ��kt�s� a�a��dad�r:
#!/bin/sh # Installing anything using Secure SHELL and SSH agent # Erdal MUTLU # 11.03.2001 ################################################################## # Functions # ################################################################## ### Copy files between hosts copy_files() { if [ $files_file != "files_empty.txt" ];then cat $files_file | grep -v "#" | while read -r line do direction=`echo ${line} | cut -d " " -f 1` file1=`echo ${line} | cut -d " " -f 2` file2=`echo ${line} | cut -d " " -f 3` case ${direction} in "l2r") : ### From localhost to remote host echo "$file1 --> ${host}:${file2}" scp $file1 root@${host}:${file2} ;; "r2l") : ### From remote host to localhost echo "${host}:${file2} --> localhost:${file2}" scp root@${host}:${file1} ${file2} ;; *) echo "Unknown direction of copy : ${direction}" echo "Must be either local or remote." ;; esac done fi } ### Execute commands on remote hosts execute_commands() { if [ $commands_file != "commands_empty.txt" ];then cat $commands_file | grep -v "#" | while read -r line do command_str="${line}" echo "Executing $command_str ..." ssh -x -a root@${host} ${command_str} & wait $! echo "Execute $command_str OK." done fi } ### Wrapper function to execute_commands and copy_files functions doit() { cat $host_file | grep -v "#" | while read -r host do echo "host=$host processing..." case "${mode}" in "1") copy_files execute_commands ;; "2") execute_commands copy_files ;; *) echo "$0 : Unknown mode : ${mode}" ;; esac echo "host=$host ok." echo "------------------------------------------------------------------" done } ################################################################## ### Program starts here ################################################################## if [ $# -ne 4 ]; then echo "Usage : $0 mode host_file files_file commands_file" echo "" echo "mode is 1 or 2 " echo " 1 : first copy files and then execute commands." echo " 2 : first execute commands and then copy files." echo "If the name of files.txt is files_empty.txt then it is not processed." echo "If the name of commands.txt is commands_empty.txt then it is echo "not processed." exit fi mode=$1 host_file=$2 files_file=$3 commands_file=$4 agent_info_file=~/.ssh/agent_info if [ -f $agent_info_file ]; then . $agent_info_file fi if [ ! -f $host_file ]; then echo "Hosts file : $host_file does not exist!" exit 1 fi if [ $files_file != "files_empty.txt" -a ! -f $files_file ]; then echo "Files file : $files_file does not exist!" exit 1 fi if [ $commands_file != "commands_empty.txt" -a ! -f $commands_file ]; then echo "Commands file : $commands_file does not exist!" exit 1 fi #### Do everything there doit
Kabuk program�n� ainstal.sh (automated installation) ad� alt�nda kay�t edelim ve herhangi bir parametre vermeden �al��t�rmay� deneyelim. A�a��daki mesaj� elde ederiz:
./ainstall.sh
Usage : ./ainstall.sh mode host_file files_file commands_file mode is 1 or 2 1 : first copy files and then execute commands. 2 : first execute commands and then copy files. If the name of files.txt is files_empty.txt then it is not processed. If the name of commands.txt is commands_empty.txt then it is not processed. |
E�er, komut �al��tr�mak istemeyiyorsan�z, commands_file parametresi yerine commands_empty.txt verebilirsiniz ve e�er, dosya aktarmak istemiyorsan�z files_file parametresi yerine de files_empty.txt ismini verebilirsiniz.
Program� sat�r sat�r a��klamaya ge�meden �nce bir �rnek �zerinde
dural�m: Diyelim ki sisteminize ikinci bir DNS sunucu ekledi�inizde,
bilgisayarlar�n /etc/resolv.conf dosyas�na bilgisayar�n IP numaras�n�
eklemeniz gerekecektir. Kolayl�k olsun diye t�m bilgisayarlar�n�z�n ayn�
resolv.conf dosyas�na sahip oldu�unu varsay�l�m. Dolay�s�yla, yapmam�z
gereken tek �ey yeni bir resolv.conf dosyas�n� her bilgisayara
kopyalamakt�r.
�lk �nce hangi bilgisayarlara kopyalama yapaca��n�z� bilmeniz
gerekecektir. �lgili t�m bilgisayarlar� hosts.txt dosyas�na yazal�m.
Bu dosyan�n bi�imi, her sat�ra bir bilgisayar ad� veya IP numaras� gelecek
�ekilde bir listeden olu�maktad�r. ��te bir �rnek dosya:
########################################################################## #### Every line contains one hostname or IP address of a host. Lines that #### begin with or contain # character are ignored. ########################################################################## helvetica.fonts.de optima.fonts.de zaphino vectora #10.10.10.162 10.10.10.106 193.103.125.43 10.53.103.120 |
�rnekten g�r�ld��� gibi tam bilgisayar ad� verebildi�imiz gibi, sadece bilgisayar ad� vermek, yani alan k�sm� olmadan, m�mk�nd�r. Daha sonra hengi dosyalar�n aktar�laca��n� belirten bir dosyaya gereksinim olacakt�r. �ki olas�l�k vard�r:
Aktraca��m�z dosyalar� files_file.txt ad�nda bir dosyaya yazal�m. Dosyan�n bi�imi �u �ekildedir: Her sat�r sadece bir dosyan�n aktar�m� bilgisini i�ermektedir. Bilgiler �� s�tun halindedir ve bir bo�luk veya tab karakteri ile ayr�lmaktad�r. l2r (local to remote) yerel bilgisayardan uzaktaki bilgisayara ve r2l (remote to local) uzaktaki bilgisayardan yerel bilgisayara olarak iki olas� dosya aktar�m yolu vard�r. Aktar�m y�n�n� belirten kelimeden sonra iki dosya ad� gelmektedir. �lk gelen dosya aktar�m y�n�ne g�re di�eri �zerine kopyalanmaktad�r. Uzaktaki bilgisayar i�in verilen dosya ad� yoltan�m� ile verilmelidir, yoksa kopyalama root kullan�c�s�n�n ev dizinine olacakt�r. ��te bizim files_file.txt :
############################################################################ # The structure of this file is : # - The meaning of the fileds are : is l2r (localhost to remote) and r2l # (remote computer to local). # r2l file1 file2 # means copy file1 from remote (hosts specified in the # hosts.txt file) computer to localhost as file2. # l2r file1 file2 # means copy file1 from localhost to # remote (hosts specified in the hosts.txt file) computer as file2 # file1 and file2 are files on the corrsponding hosts. # # Note: the order of using local and remote specifies the direction # of the copy process. ############################################################################ l2r resolv.conf /etc/resolv.conf |
G�r�ld��� gibi dosyan�n ba��nda a��klama (�ngilizce olarak) yer almaktad�r. Bu a��klamay� genellikle her dosyan�n ba��na getiriyorum. Belgelendirme yapmak yerine b�yle bir ��z�m kullan�yorum. Bu basit ve g�zel bir ��z�md�r. �rne�imizde, resolv.conf dosyas�n� uzaktaki bilgisayarlar�n /etc dizine ayn� isimde kopyalayaca��z. G�stermek amac�yla, kopyalamadan sonra dosyan�n kullan�c� ve eri�im haklar�n� de�i�tiren komutlar ekledim. �al��t�r�lacak komutlar ayr� bir dosyaya yaz�lmaktad�r. Dosyan�n bi�imi her sat�r bir tek komut i�erecek �ekildedir. Komutlar�n yer ald��� dosyaya commands_file.txt ad�n� verelim:
########################################################################### # The structure of this file is : Every line contains a command to be # executed. Every command is treated seperately. ########################################################################### chown root.root /etc/resolv.conf chmod 644 /etc/resolv.conf cat /etc/resolv.conf |
Komutlar s�rayla �al��t�rl�lmaktad�r ve biri bitmeden di�er komuta ge�ilmemektedir.
Evet, program� �al��t�rmak i�in gerekli olan her�eye sahibiz art�k. Belirtilmesi gerek tek �ey 'mode' se�ene�idir. Bu, dosya aktar�m�m� ard�ndan komutlar m� �al��t�r�ls�n, yoksa komutlar �al��t�r�ld�ktan sonra dosyalar m� aktar�ls�n se�eneklerini belirtmeye ayaramaktad�r. �lk �nce dosyalar aktar�ls�n ve ard�ndan komutlar �al��t�r�ls�n se�ene�i mode=1 durumuna kar��l�k gelmektedir.�nce komutlar �al��t�r�ls�n ve ard�ndan dosyalar aktar�ls�n se�ene�i mode=2 durumuna kar��l�k gelmektedir. �imdi program� gerekli t�m se�enekler ile birlikte �al��t�rabiliriz:
./ainstall.sh 1 hosts.txt files_file.txt commands_file.txt
K���k bir �neri: files.txt dosya ad�n�n�n ba��na files_ (files_resolvconf.txt) ve commands.txt'nin ba��na commands_ (commands_resolvconf.txt) yazman�z� �neririm.
Program�n kendisini a��klama zaman� geldi art�k. Program, kendisine verilen parametre say�san� denetleyerek ba�lamaktad�r ve e�er bu say� 4 de�il ise, kullan�m mesaj� ekranda g�r�nt�lenerek sona ermektedir. E�er, parametre say�s� do�ru ise, herbiri ilgili de�i�kenlere atanmaktad�r. Ard�ndan, '~/.ssh/agent_info' dosyas�n�n varl��� denetlenmektedir ve e�er var ise, aktif hale getirilmektedir. E�er, ssh-agent'� kullanm�yorsan�z, ge�i�s�zc�klerini veya ge�i�c�mlelerini elle girmeniz gerekecek ki, bu durumda otomatile�tirmeden s�z edemeyiz. Daha sonra, dosyalar (hosts, files ve commands) var olup olmad��� denetlenmektedir. files_empty.txt ve commands_empty.txt isimleri �zel olarak denetlenmektedir. E�er, bunlar verilmi�se, dosyan�n varl���n�n denetlenmesi gerekmemektedir. Program�n bu k�sm�n� bu yaz�n�n yaz�m� s�ras�nda de�i�tirdim. Eski bu k�s�m a�a��daki gibiydi:
if [ -f $host_file -a -f $files_file -a -f $commands_file ]; then echo "$host_file $files_file $commands_file" doit else echo "$host_file or $files_file or $commands_file does not exist" exit fi
Bu durumda files_empty.txt veya commands_empty.txt dosyalar�n var olmas�
gerekir. Yapt���m b�t�n i�lemleri tek bir dizinde oldu�u i�in bu dosyalar�
bir kere yaratmak yeterli olmu�tu ve benim i�imi g�rm��t�.
Sonunda 'doit' fonksiyonu �al��t�r�lmaktad�r. Her�ey bu fonksiyon
i�erisinden y�netilmektedir. Fonksiyonda, '$hosts_file' dosyas� i�erisinde
yer alan her bilgisayar i�in copy_files ve execute_commands fonksiyonlar�
�al��t�r�lmakta�r. Bu i�lem 'cat' ve 'while'den olu�an bir d�ng�
i�erisinde olmaktad�r. Dolay�s�yla hebir bilgisayar i�in i� yerine
getirilmi� olur.
�imdi copy_files fonksiyonuna bir g�zatal�m. Bu fonksiyonda ilk �nce
'files_file' de�i�keninin de�erinin 'files_empty.txt' de�erine e�it olup
olmad���na bak�lmaktad�r. E�er, e�it ise, hi� bir �ey yap�lmamaktad�r.
E�er, de�il ise, '$files_file' dosyas�ndaki her sat�r i�in 'direction'
(y�n), 'file1' ve 'file2' de�i�kenlerine de�erleri atanmakta ve ard�ndan
aktar�m y�n�ne ('direction') g�re aktar�m i�lemi scp ile
yap�lmaktad�r.
Son olarak execute_commands foksiyonunu inceleyelim. Foksiyon ilk �nce
'commands_file' de�i�keninin de�erinin 'commands_empty.txt' olup
olmad���n� denetlemektedir. E�er, e�it ise, hi�bir i�lem yap�lmamaktad�r.
E�er, de�il ise, '$commands_file' dosyas�nda yer alan her komut arka
planda �al��t�rmaktad�r. Komutu �al��t�rd�ktan sonra wait komutu '$!'
parametresi ile �al��t�r�lmaktad�r. wait program�n� bu �ekilde
�al��t�rmakla her komutu ard���k olarak ve birinin di�erinden sonra
gelecek �ekilde �al��t�rmaktad�r. '$!' n�n de�eri en son arka planda
�al��t�r�lan program�n i�lem numaras�na e�it olmaktad�r.
��te bu kadar. Kolay, �yle de�il mi?
Yukar�daki program�n daha geli�mi� bir kullan�m �ekli a�a��daki programda uer almaktad�r. Buradaki ama�, bilgisayarlar�n�z�n yap�land�r�m dosyalar�n�n yede�ini almakt�r. Bunun i�in ainstall.sh program�n� kullanan basit bir kabuk program� yazd�m:
#!/bin/sh server_dir=${HOME}/erdal/sh/ServerBackups if [ ! -d $server_dir ]; then echo "Directory : $server_dir does not exists." exit 1 fi cd $server_dir servers=ll_servers.txt prog=${HOME}/erdal/sh/einstall_sa.sh cat $servers | grep -v "#" | while read -r host do echo $host > host.txt $prog 1 host.txt files_empty.txt servers/${host}/commands_make_backup.txt $prog 1 host.txt files_getbackup.txt commands_empty.txt mv -f backup.tgz servers/${host}/backup/`date +%Y%m%d`.tgz rm -f host.txt done exit 0
servers ad�nda bir dizine sahip olman�z gerekmektedir. Bu dizin i�inde files_getbackup.txt ve ll_servers.txt ad�nda iki dosya olmak zorundad�r. 'files_getbackup.txt' dosyas�n�n i�eri�i a�a��daki gibidir:
r2l /root/backup.tgz backup.tgz
'll_servers.txt' dosyas�nda yede�i al�nacak bilgisayarlar�n adlar� veya IP numaralar� yer almaktad�r. 'll_servers.txt' dosyas�nda yer alan her bilgisayar ad� veya IP numaras� i�in ayn� isimde 'servers' dizini alt�nda bir dizin olmas� gerekmektedir. Bu dizinlerde /root/backup.tgz ar�ivini olu�turmaya yarayan 'commands_make_backups.txt' dosyas� ve yedeklerin saklanaca�� 'backups' dizini olmak zorundad�r. E�er, 'll_servers.txt' dosyas� aia��daki gibi ise:
fileserver dbserver 10.10.10.1 appserver |
'$servers' dizin yap�s� a�a��daki gibi olmal�d�r:
servers |-- files_getbackup.txt |-- ll_servers.txt |-- make_server_backups.sh |-- 10.10.10.1 | |-- backup | `-- commands_make_backup.txt |-- appserver | |-- backup | `-- commands_make_backup.txt |-- dbserver | |-- backup | `-- commands_make_backup.txt |-- fileserver |-- backup `-- commands_make_backup.txt |
'commands_make_backups.txt' dosyas�na birka� �rnek a�a��da verilmi�tir:
tar cfz /root/backup.tgz /etc/samba /etc/atalk /etc/named.conf /var/named/zones
Yukar�daki dosyada samba, atalk ve isim sunucusu dosyalar�n�n yede�ini alan komut yer almaktad�r.
tar cfz /root/backup.tgz /etc/httpd /usr/local/apache
Yukar�daki dosyada apache sunucusunun yede�ini alan komut yer almaktad�r.
tar cfz /root/backup.tgz /etc/squid /etc/named.conf
Yukar�daki dosyada squid ve ikincil isim sunucular�n�n yede�ini alan komut yer almaktad�r.
Yukar�daki program� kullanarak ve gereksinimleriniz do�rultusunda 'commands_make_backup.txt' komutlar� olu�turarak sunucular�n�z�n yedeklerini alabilirsiniz.
|
G�rsely�re sayfalar�n�n bak�m�, LinuxFocus Edit�rleri taraf�ndan yap�lmaktad�r
© Erdal Mutlu, FDL LinuxFocus.org Buray� klikleyerek hatalar� rapor edebilir ya da yorumlar�n�z� LinuxFocus'a g�nderebilirsiniz |
�eviri bilgisi:
|
2002-12-24, generated by lfparser version 2.27