|
|
��� �������� �������� �� ��������� ������: English Castellano Deutsch Francais Italiano Nederlands Russian Turkce Polish |
����� Erdal Mutlu <erdal(at)linuxfocus.org> �� ������: Erdal - ���� �� �������� ���������� LF. � ��������� ����� �� �������� ��������� ��������������� � Linotype Library. ������ ������� ������� Linux � ��������������� ���, �� ����� �������� � ���������� ������������ � ���� �����. ������� �� �������: Eugene S. Saenko <caspar(at)pisem.net> ����������:
|
������:
���� ��� ���������� ���������������� ������� ���������� Linux/Unix ������, ��� ���������
����� ������� ��� ������������� ��������� ���������. � �������� ������������ ������ ��
������ ���� ��������, ��� ��� ���������� ��������� ���� � �� ��, ��� ������� �������� ��
������ �������. �������� �� ������������ � �������� ������������� ���� ���������. ���
�������� ����� ��� ������������ �������� ���������� ��������� ������������������ Linux/Unix
������. � ���� ������ � ������, ��� ��� ����� ������� � ������� ������ ssh.
����� ��������������� ���� ������� ���������� ��������� ����� ���������������� � ��������. ���������� � ���������������� � �������� ��. � ������ ���� � ����� ����� (Katja and Guido Socher) � LinuxFocus Shell Programming. ���, �����, ����������� ������ ������ ssh, ����� ��� ssh-keygen, ssh-add, ssh, scp ��� sftp. ������� ��������� ���������� ��������� SSH ��� Linux: OpenSSH, ���������� ��� ��� �����������. ������� � �������� ����������� (man pages).
scp /path/to/the/file/file1 user@remote_host:/remotedir/newfile
� ���� ������� ���� file1 ���������� �� ���������� �������� �� ��������� ��������� (remote_host ����� ���� ��� IP ��� ��� ���������� ����������) � ������� /remotedir ��� ����� ������ newfile. �������� ����������� � �������������� ��� ������ 'user'. � ������ ������� �������������� � ���� ������������ ����� ��������������� �����, ���� ����� ����������. ����� �� �������� ����� ��� �����. � ���� ������ ���� ����� ���������� ��� ������ ������. ������, ��� ��������, ��� ��� ����������� ���� ����� �������������.scp user@remote_host:/remotedir/file /path/to/local/folder/newfile
�������, �����, ����� ������� ������� ������� scp. ������ ���� '-r' �� ������ ���������� �������� ����������.scp -r user@remote_host:/remotedir .
��� ������� �������� ������� 'remotedir' � ��� ��� ����������� � ����� � ���������� ���������� � ������� ������� ������� ��� ��� �� ������.����������: ��������������, ��� �� ��������� ���������� ����������� ����� sshd.
ssh [email protected] df -H
��� ����� ������ �� ��������� ��������� �����������. �������� ���������� ����� ����� ����������. �������� ������� (� ���� ������� 'df -H') ��� ���������� �� ��������� ����������. ����� ������� ����� ��������� �� ����� ���������.ssh-keygen -b 1024 -t dsa
� ��� ����� ��������� ��� ���������� �����. ��� ���������� ����� ������ �� ��, ��� � ���������� ����� � �������� '.pub'. ����� '-b 1024' ��� ���������� ��� ������������ �����. ���� ��� �������� �� �������, ����� ������������ �������� �� ���������. '-t dsa' ������ ��� ������������ �����. ��������� ��������: 'rsa1' ��� ��������� ������ 1 � 'rsa' ��� 'dsa' ��� ��������� ������ 2. � �� ������������ ������������� ������ 2 ��������� SSH. �� ���� � ��� ���� ������ �������, �������������� ������ �������� ������ 1, ��� ���� ������� '-t rsa1' ��� �������� ������ ���� ������. ������ '-1' ��� '-2' �� ������ ��������� ssh �������� ������ 1 ��� 2 ��������������.
����� ��������������� ������, ��� ���� ���������� ���� ��������� ���� �� ��������� ���������.
���������� ����� ���������� ����� ������ ���� ����������� ��� ��������� � ����
$HOME/.ssh/authorized_keys ��� $HOME/.ssh/authorized_keys2. ������ ����������� � ��
���������� ����� ��� ��������� ������ ���������. ��� ��������� ������ 1 ������������
authorized_keys, � ��� ��������� ������ 2 ������������ authorized_keys2. ���� �� ���������
���������� ���� ��������� ����, � ������ �� ���, ����� �� ������������ � ����� ����������,
����� ��������� ���� ��������� ����� (passphrase), � � ������ ������, ����� �������� ������
���������� ������������. �� ������ ���������� ����������� � ����� ������� ������
�������������� �������������� �� ���������� �����, �������������� ���������������� ���� sshd.
��� �����
/etc/ssh/sshd_config � ������������ ���������, ������� ��� ���� ��������
'PasswordAuthentication'. �������� ���� �������� �� no (PasswordAuthentication no) � ������������� sshd.
�� ����� ������� ��� ������. � ��� ���� ���������� ������ ����������� � ���������� ������ �� ��������� ��������. �� ������������� ��������� ������ �� �� ������ ������� �� �������, �� ��������� ����. ����� �� ������ �� ������ ����������������. ������� ����� ���� �� ������� � ������ ������ ��������� ������, �� ��� �� ����� ������� ����. ����� �������� ������ ������ (key-agent) ����� �� ���� ������ � ����� ��������� ������. ssh-agent - ��� ���������, ��������������� ��� �������� ��������� ������, ������������ ��� �������������� �� ���������� �����. ���� ��������� ����� ������:
ssh-agent $BASH
� �������� ���� ��������� �����, ������� ������� ������������ssh-add .ssh/id_dsa
���ssh-add .ssh/identity
id_dsa - ��� ���� ���������� ����� DSA, � identity - ���� ���������� ����� RSA1. ��� - ����� ������ �� ���������, ������ ��� ��������� ������ � ������� ssh-keygen. �������, � ��� ����� ��������� ��������� �����, ������ ��� ssh-add ������� ��� ���� � ������ ������. ������ ����������� ������ ����� �������� � ������� �������:ssh-add -l
������ ��� ����������� � �������, �������� ��� ���� � �������������� �����, ��� �� �������� ������� ������ ������! � �������� �������������� ����������� ssh-agent.
��� ������������� ssh-agent ��������� ���� ��������, �� ����� ������������ ������ � ���������, � ������� �� ��� �������. ����� ������������ ssh-agent � ������ ������������ ���� ��������� �������� ����������� ������� ������. � ������� ����� ��������� ������ ��� ������� ������:
#!/bin/sh # # Erdal mutlu # # ������ ssh-agent ��� ������������� � �������� ��������. 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
����������� ���� ������ ��������� ������� ����� agent_info � �������� �������� ������������, � ������� ������ ����������� ssh ����� ������������. � ����� ������ ��� ������� '.ssh/'. ���� ���� ����������, ������������ �������� �������������� � ������������� ����� � ������� ���������� � ���, ��� ����� �����������. ���� � ������������ �� ������� ssh-agent, �� ������ ������� ���� agent_info � ������������� ������. ������ ��������� ssh-agent � �������� ������ ��� ������ � ���� agent_info. ��� ����������, � ����������, ����� �������������� ��������� ssh. ��������� ������ ������������ ��� ��������� ���� ������� � ����� ����� �������, ��� ������ �������� ����� ����� ������ ��� � ������ � ����.
���� ����� ������� � ����������� �� ������ ��������� � ���� ���� �����. �� ����� ���� �� ������ ��������� ���� agent_info, ����� ������� ssh �����, ��� ���������� ��� �����:
source ~/.ssh/agent_info ��� . ~/.ssh/agent_info
� �������� ���� ����� � ������� ssh-add. ����� �������� � ���� .bashrc ��������� ����� ���, ����� ������ ��� ��� �������� ������ ��������� ���������� ���� agent_info:
if [ -f .ssh/agent_info ]; then . .ssh/agent_info fi
��������: �� ������ ����������� ���������, �� ������� ����������� ssh-agent � ������ �������������, ������� � ����� �����. �����, ���� ���-������ ������� ������ � ����� ������� ������, �� ������� ������ �� ���� ��������, � �������� �� ��������� � ������� ������ ssh. �� ��� ���������� �������!
������ ���� ���������, ��� �� ���������� ���������������� ��������� �� ����� ���������� ��������������. ���� ������� � ���, ����� ��������� ��������� ��������� ������ �� ������������ ��������� ������ � ����������� ��������� ����� �� ��� � ���� ������. ��� ��, ��� ����� ���������� ���������� ��������� ���������������. ��� ���� ������:
#!/bin/sh # ��������� � �������������� Secure SHELL � ������ SSH # Erdal MUTLU # 11.03.2001 ################################################################## # ������� ################################################################## ### ����������� ������ � ������ ���������� �� ������ 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") : ### � ���������� ���������� �� ��������� echo "$file1 --> ${host}:${file2}" scp $file1 root@${host}:${file2} ;; "r2l") : ### � ���������� ���������� �� ��������� echo "${host}:${file2} --> localhost:${file2}" scp root@${host}:${file1} ${file2} ;; *) echo "���������� ����������� ����������� : ${direction}" echo "������ ���� local ��� remote." ;; esac done fi } ### ���������� ������ �� ��������� ����������� execute_commands() { if [ $commands_file != "commands_empty.txt" ];then cat $commands_file | grep -v "#" | while read -r line do command_str="${line}" echo "�������� $command_str ..." ssh -x -a root@${host} ${command_str} & wait $! echo "��������� $command_str OK." done fi } ### �������-�������� (wrapper function) ��� ������� execute_commands � copy_files 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 : ����������� ����� : ${mode}" ;; esac echo "host=$host ok." echo "------------------------------------------------------------------" done } ################################################################## ### ��������� ���������� ����� ################################################################## if [ $# -ne 4 ]; then echo "������������� : $0 mode host_file files_file commands_file" echo "" echo "����� 1 ��� 2 " echo " 1 : ������� ���������� �����, ����� ��������� �������." echo " 2 : ������� ��������� �������, ����� ���������� �����." echo "���� ���� files.txt ���������� files_empty.txt �� �� �� ��������������." echo "���� ���� commands.txt ���������� commands_empty.txt �� �� �� ��������������." 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 "���� ������ : $host_file �� ����������!" exit 1 fi if [ $files_file != "files_empty.txt" -a ! -f $files_file ]; then echo "���� ������ : $files_file �� ����������!" exit 1 fi if [ $commands_file != "commands_empty.txt" -a ! -f $commands_file ]; then echo "���� ������ : $commands_file �� ����������!" exit 1 fi #### ��� ����������� ����� doit
������� ������� ������ ainstal.sh (automated installation -- ������������������ ���������) � ���������� ��������� ��� ��� ����������. �� ������� ���������:
./ainstall.sh
������������� : ./ainstall.sh mode host_file files_file commands_file ����� 1 ��� 2 1 : ������� ���������� �����, ����� ��������� �������. 2 : ������� ��������� �������, ����� ���������� �����. ���� ���� files.txt ���������� files_empty.txt �� �� �� ��������������. ���� ���� commands.txt ���������� commands_empty.txt �� �� �� ��������������. |
� ������������ � ���� ����������, ���� �� �� ������ ��������� �������, ����� ��������� commands.txt ��� commands_empty.txt, � ���� �� ������ ���������� ������� ������, ����� ��������� files_file ��� files_empty.txt. ������, ����, ����� ������ ��������� ��������� ������, � � ������ ������� ������ ��������� ��������� ������.
����� ���, ��� ���� ���������� ���������� �������, ����� ������ ��� �������������:
�����������, �� �������� � ���� ��������� DNS ������ � ������ �� �������� ��� � ����
/etc/resolv.conf. ��� �������� �����������, ��� �� ���� ����� ����������� ����������
���� resolv.conf. � ���� ������ ������������, ��� ��� ���� �������, ��� ����������� �����
���� resolv.conf �� ��� ����������.
������, ��� ��� ����������� - ��� ������ ������. ������� �� ��� � ���� hosts.txt. ������
����� ����� �����, ��� ������ ������ �������� ��� ��� IP ������ ������ �����. ��� ������:
############################################################################# #### ������ ������ �������� ���� ��� ��� IP ����� �����. ������, #### ������������ �� ����� # ��� ��� ���������� ������������. ############################################################################# helvetica.fonts.de optima.fonts.de zaphino vectora #10.10.10.162 10.10.10.106 193.103.125.43 10.53.103.120 |
��� ����� �� �������, ����� ��������� ��������� ����������������� ����� ��� ������ �����, ������������ ��� ����������. ����� ����, ��� ����������� ����, � ������� ����� �������� ����� ������, ������� ���� ��������. �������� ��� ���� ��������:
�����, ������� ���� ��������, ����������� � ������ �����. ������� ������� ���� ���� files_file.txt. ������ files_file.txt �����: ������ ������ �������� ���������� � ����������� ������ ������ �����. �������� ��� ����������� �����������: l2r (local to remote - � ���������� �� ���������) � r2l (remote to local - � ���������� �� ���������). l2r - ��� ����� ���� ���������� � ���������� ����� �� ���������. r2l - ����� ���� � ���������� ����� ���������� �� ���������. ����� ��������� ����� ����������� ������� ��� ����� �����. ���� ����������� ��������� ��� �����������. ������ ���� ���������� �� ������ � ������������ � �������� ������ �����������. ��� ����� ��� ���������� ����� ������ ���� ��������� �����������������, ����� ���� ����� ���������� � �������� ������� ������������ root. ��� ��� files_file.txt :
############################################################################ # ��������� ����� ������ : # - �������� ����� : l2r (localhost to remote - � ���������� ����� �� ���������) # � r2l (remote computer to local - � ���������� ���������� �� ���������). # r2l file1 file2 # �������� ����������� ����� file1 � ���������� (����� ����������� � # ����� hosts.txt) ���������� �� ��������� ��� ������ file2. # l2r file1 file2 # �������� ����������� ����� file1 � ���������� ����� �� # ��������� (����� ����������� � ����� hosts.txt) ��������� ��� # ������ file2 # file1 � file2 - ��� ����� �� ��������������� ������. # # ����������: ������� �������� local � remote ��������� ����������� # �������� �����������. ############################################################################ l2r resolv.conf /etc/resolv.conf |
��� ������, � ������� � ���� �������� ��� ���������. ������ � ������� ��� �������� � ������ ���� files_file.txt, ������� ���������. ��� �������, �� ������� ������� ��� ����������������. � ���� ������� �� ����� ����������� ���� resolv.conf �� ��������� ��������� ��� ������ /etc/resolv.conf. � ���������������� ����� ����� ����������� ����� �� ������� ���������� � ������� ������� ����� ��������� � ������ ����� � ����������� ����������� /etc/resolv.conf. �������, ������� ���� ���������, ���������� � ��������� ����. ������� ������� ��� commands_file.txt. ��� ��� ���� commands_file.txt:
########################################################################### # ��������� ����� ����� : ������ ������ �������� �������, ������� ���� # ���������. ������ ������� ��������������� ��������. ########################################################################### chown root.root /etc/resolv.conf chmod 644 /etc/resolv.conf cat /etc/resolv.conf |
���� ������ �������� �������, ������� ������ ���� ��������� �� ������ ����������, ������������� � ����� hosts.txt. ������� ����������� ���������������, ��� ������, ��� ������� ����������� ������ �������, ����� ������ � ��� �����.
������, ������ � ��� ���� ��� �����, ����������� ��� ����� �������� �������. ������������, ��� ��������, ��� ������� �����, ������� ����������, ����� �� ���� ������: commands_file.txt ��� files_file.txt ������ �������������� � ������ �������. ����� �������� �����, ������������� � ����� files_file.txt file, � ����� ��������� ��� ������� �� ������� ����������, ��� ����� 1. ��� ��������, ��������� �������, � ����� �������� �����, ��� ����� 2. ������ ����� ��������� ������ � ������������ �����������, ��� ���:
./ainstall.sh 1 hosts.txt files_file.txt commands_file.txt
��������� �����: ������ ��� ����� files.txt � ������� � files_ � �������� �������� ������������ ���, ��������, files_resolvconf.txt. �������� �� ������� � ������� hosts.txt � commands.txt.
������ ������ ����� ���������� ��������� � ����� �������. ��� ������� ��������� ��������� ���������� ���������� �, ���� ��� �� ����� �������, ������ ��������� �� �������������. ��� ���������� ���������� ���������� �� �������� ������������� ��������������� ����������. �����, ���� ���������� ���� '~/.ssh/agent_info', �� �����������. ���� ���� �������� ���������� � ���������� � ��� ������ ssh. ���� �� �� ����������� �������, ��� �������� ������ ������ ��� ��������� ����� �������, ��� �������� ������� ����������:). ����� ������ ���� (hosts, files � commands) ����������� �� �������������. ����, �����, ����������� �������� �� files_empty.txt � commands_empty.txt. ���� �� ������� ����� ���, �� �������� �� ������������� �� �����. � ������� ��� ����� ������� ��� ��������� ���� ������. ������ ���� ������:
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 ��� $files_file ��� $commands_file �� ����������" exit fi
� ���� ������ � ���� ������ ���� ���� ����� � �������: files_empty.txt � commands_empty.txt.
�� � ���� �� ���� �������, ��������� � ������ ������� ������ � ����� ��������.
� ����� ������������ ����� ������� 'doit'. ��� ������� ��������� ����. � ���� ������� �������
���� � ��������� 'cat' � 'while', ������� ��� ������� �� ������, ������������� �
'$hosts_file', ��������, � ������������ � 'mode', ������� copy_files � execute_commands.
����� ������� �������������� ������ ���� � �������. ���������� 'host' �������� ��� ��� IP
����� �������� �����.
������� ���������� ������� copy_files. ��� ������� ������� ���������, ����� �� ����
������ ��� 'files_empty.txt'. ���� ��, �� ������ �� ��������. ���� ���, �� � ������ ������
'$files_file' ���������� 'direction', 'file1' � 'file2' �������� ����������� �����������,
����� ������� � ������� �����, ��������������. ����������� ������������ � ������� scp �
������������ � ���������� 'direction'.
�, �������, ������� ���������, ��� �������� ������� execute_commands. ��� ������� �������
���������, ����� �� ���� ������ ��� 'commands_empty.txt'. ���� ��, �� ������ �� ��������.
���� ���, �� ������ �� ������ � '$commands_file' ����������� � ������� ssh �� ���������
���������� � ������� ������. ����� ������ ������� ssh ���������� ������� wait � ����������
'$!'. ��� ������� ������������ ��, ��� ��� ������� ����������� ������ ���� �� ������.
������ ��������� '$!' ������������� ������������� �������� ��������� �������, ����������� �
������� ������.
��� ���-��. ������, �� ������ ��?
����� ������������ ����� ������� ������������� ����� �������. ���� ������� � ���, ����� ������� ��������� ����� ���������������� ������ ���� ����� ����������� ��� ��������. � ���� ����� � ������� ��������� ������, ������������ ainstall.sh :
#!/bin/sh server_dir=${HOME}/erdal/sh/ServerBackups if [ ! -d $server_dir ]; then echo "������� : $server_dir �� ����������." 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. � ���� �������� ������ ���� ��� �����: files_getbackup.txt � ll_servers.txt. ��� ���� 'files_getbackup.txt' :
r2l /root/backup.tgz backup.tgz
'll_servers.txt' �������� ����� ��� IP ������, ������� ���������� �������������. ������� �����, �������������� � ����� 'll_servers.txt', ������ ��������������� ������� � ����� �� ������, � ������� ������ ���� ���� commands_make_backups.txt, ���������� ������� ��� �������� ������ /root/backup.tgz �� ���������������� ������ ����� �����. � ������� ��� ������ backup. ��� ��������� ����� ����� ����� ����� ��������� � ���� ��������. ���� ll_servers.txt ��������:
fileserver dbserver 10.10.10.1 appserver |
��������� ������������ �������� '$servers' ������ ���� �����:
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:
tar cfz /root/backup.tgz /etc/samba /etc/atalk /etc/named.conf /var/named/zones
���� ���� commands_make_backup.txt ������������ ��� �������������� ���������������� ������ samba, atalk � nameserver � ������ ���.
tar cfz /root/backup.tgz /etc/httpd /usr/local/apache
���� ���� commands_make_backup.txt ������������ ��� �������������� ������������ � ������ ������� apache.
tar cfz /root/backup.tgz /etc/squid /etc/named.conf
���� ���� commands_make_backup.txt ������������ ��� �������������� ������������ ������-������� squid � ���������� ������� DNS.
� ������� ����� ������� �� ������, ����������� ����� commands_make_backup.txt � ����� �����������, ������ ��������� ����� ������������ ����� ��������.
|
Webpages maintained by the LinuxFocus Editor team
© Erdal Mutlu, FDL LinuxFocus.org |
Translation information:
|
2003-01-27, generated by lfparser version 2.31