-
实验服务器两台:
192.168.77.189
192.168.77.190
-
服务器免密钥登录设置:
[root@192_168_77_189 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
95:cf:19:a5:ff:d0:bc:80:f5:de:5a:4c:b5:63:ae:c6 root@192_168_77_189
The key's randomart image is:
+--[ RSA 2048]----+
| . |
| . o |
| o o. .|
| . oo+.oo|
| S .+.o=+|
| ==+|
| . +=|
| E.o |
| ... |
+-----------------+
[root@192_168_77_189 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.77.190
root@192.168.77.190's password:
Now try logging into the machine, with "ssh '192.168.77.190'", and check in:.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
[root@192_168_77_189 ~]# ssh 192.168.77.190
Last login: Sun Jul 5 23:16:20 2015 from 192.168.77.100
[root@192_168_77_190 ~]# clear
[root@192_168_77_190 ~]#
[root@192_168_77_190 ~]#
[root@192_168_77_190 ~]# exit -
copy脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
#!/bin/bash #write by lixi #time by 2015-7-7 #run by sh auto.shell.sh /root /mnt if [ ! -f ip.txt ] ; then
echo -e "\033[32mplease create ip.txt files...\033[0m"
cat << EOF
192.168.149.128 192.168.149.129 EOF exit
fi if [ -z "$1" ] ; then
echo -e "\033[32mUsage $0 command,example{src_file|src_dir Des_dir\033[0m}"
exit
fi count=` cat ip.txt | wc -l`
rm -rf ip.txt.swp
i=0 while ((i<$count))
do i=` expr $i + 1`
sed "${i}s/^/&${i} /g" ip.txt >> ip.txt.swp
IP=` awk - v I= "$i" '{if(I==$1)print $2}' ip.txt.swp`
scp -r $1 root@${IP}:$2
#rsync -ap --delete $1 root@${IP}:$2 done |
以上脚本用rsync也可以,,,rsync同步两个文件一样,,,例如sh auto.shell.sh /opt/ /opt/保持两个服务器之间这个目录文件一样
4.批量远程服务器执行命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
#!/bin/bash # Auto run server commend # by lx 2015-7-7 if [ ! -f ip.txt ]; then
echo -e "\033[32mplease create ip.txt files...\033[0m"
cat << EOF
192.168.149.128 192.168.149.129 EOF exit
fi if [ -z "$*" ] ; then
echo -e "\033[32mUsage: $0 Commend,Example{rm /tmp/text.txt|mkdir /tmp/text2}\033[0m"
exit
fi count=` cat ip.txt | wc -l`
rm -rf ip.txt.swp
i=0
while ((i<$count))
do i=` expr $i + 1`
sed "${i}s/^/&${i} /g" ip.txt >>ip.txt.swp
IP=` awk - v I= "$i" '{if(I==$1)print $2}' ip.txt.swp`
ssh -q -l root $IP "$*; echo -e '-----------------------\nthe $IP Exec command :
$* success !'; sleep 2"
done |
1
2
3
4
5
6
7
|
root@192_168_77_189 ~] # sh auto_ssh.sh mkdir /tmp/text2
----------------------- the 192.168.77.190 Exec command :
mkdir /tmp/text2 success !
----------------------- the 192.168.77.189 Exec command :
mkdir /tmp/text2 success !
|
5.服务器之前文件同步:
#!/bin/bash
#by lixi 2015.7.7
#run by sh auto_rsync.sh flush
flush()
{
if
[ ! -f rsync.list ]; then
echo -e "\033[32mplease create rsync.list file...\033[0m"
cat << EOF
192.168.149.128 src_dir des_dir
192.168.149.129 src_dir des_dir
EOF
exit
fi
rm -rf rsync.list.swp ; cat rsync.list | grep -v "#" >rsync.list.swp
COUNT=`cat rsync.list.swp|wc -l`
NUM=0
while ((${NUM} < $COUNT))
do
NUM=`expr $NUM + 1`
Line=`sed -n "${NUM}p" rsync.list.swp`
SRC=`echo $Line |awk '{print $2}'`
DES=`echo $Line |awk '{print $3}'`
IP=`echo $Line |awk '{print $1}'`
rsync -ap --delete ${SRC}/ root@${IP}:${DES}/
done
}
restart()
{
rm -rf restart.list.swp ; cat restart.list | grep -v "#" >> restart.list.swp
COUNT=`cat restart.list.swp|wc -l`
NUM=0
while ((${NUM} < $COUNT))
do
NUM=`expr $NUM + 1`
Line=`sed -n "${NUM}p" restart.list.swp`
Command=`echo $Line |awk '{print $2}'`
IP=`echo $Line |awk '{print $1}'`
ssh -l root $IP "sh $Command; echo -e '----------------\nthe $IP Exec Commadn : sh $Command success !'"
done
}
case $1 in
flush )
flush
;;
restart )
restart
;;
* )
echo -e "\033[32mUsage: $0 command,example {flush|restart}\033[0m"
;;
esac
本文转自 Anonymous123 51CTO博客,原文链接:http://blog.51cto.com/woshitieren/1671863