一键自动化批量安装服务脚本

一键自动化给多台服务器安装vsftpd服务

 

1.ip规划,这里根据自己ip灵活调整

管理机 172.16.1.61

服务器 172.16.1.31、172.16.1.41

 

2.管理机切换到root用户,安装expect(非交互式工具,只需要在管理机上安装 yum install expect -y)

 

3.添加用户(所有机器)

useradd huang123

echo '123456' | passwd --stdin huang123

id huang123

 

4.sudo提权(所有机器)

echo "huang123 ALL=NOPASSWD:ALL" >> /etc/sudoers

visudo -c

su - huang123

 

5.具体步骤(以下代码及相关操作在管理机上执行)

a.创建秘钥对(管理机)

b.分发公钥到服务器

c.复制安装文件到服务器

d.执行安装过程

 

代码位于管理机用户huang123家目录的scripts文件夹下(没有scripts自己创建)

创建秘钥对 create_sshkey.sh

#!/bin/sh

. /etc/init.d/functions

/usr/bin/ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa > /dev/null 2>&1

if [ $? -eq 0 ];then

action "create dsa" /bin/true

else

action "create dsa" /bin/false

exit

fi

 

分发秘钥对 send_sshkey.sh

#!/bin/sh

. /etc/init.d/functions

for ip in 41 31

do

/usr/bin/expect ~/scripts/send_sshkey.exp ~/.ssh/id_dsa.pub 172.16.1.$ip

if [ $? -eq 0 ];then

action "$ip" /bin/true

else

action "$ip" /bin/false

fi

done

说明:这里 ~/.ssh/id_dsa.pub和172.16.1.$ip为具体执行分发任务的send_sshkey.exp所需参数

 

分发秘钥对具体执行方法 send_sshkey.exp

#!/usr/bin/expect

if { $argc != 2 } {

send_user "usage:expect send_sshkey.exp file host\n"

exit

}

 

#define var

set file [lindex $argv 0]

set host [lindex $argv 1]

set password "123456"

spawn /usr/bin/ssh-copy-id -i $file "-p 22 huang123@$host"

expect {

"yes/no" {send "yes\r";exp_continue}

"password" {send "$password\r"}

}

expect eof

 

安装 install.sh

for m in 31 41

do

/usr/bin/scp -P 22 ~/scripts/exec.sh [email protected].$m:~

/usr/bin/ssh -p 22 -t [email protected].$m sudo bash ~/exec.sh

done

 

安装具体执行方法 exec.sh

yum install vsftpd -y

 

#执行

sh create_ssh.sh

#创建成功后在用户huang123家目录有一个.ssh的隐藏文件(使用ls -al查看)

sh send_sshkey.sh

#分发公钥到服务器 send_sshkey.sh,成功后在服务器huang123家目录下多了一个.ssh的隐藏文件

sh install.sh

#成功可以看到具体的安装过程

 

文件结构如下图所示:

一键自动化批量安装服务脚本_第1张图片

你可能感兴趣的:(Linux)