Centos7 安装并使用 fabric

版权声明:仅供学习参考 转载请标明出处。 https://blog.csdn.net/xujiamin0022016/article/details/81545676

Centos7 安装并使用 fabric

安装fabric

先安装pip

########################### 安装pip ###########################

cd /tmp/

 

#ssh远程复制

#!/bin/bash

passwd='hengtian@123'

/usr/local/bin/expect <<-EOF

set timeout -1

spawn scp -r 172.16.129.72:/ftp/www/distribute-0.6.10.tar.gz  /tmp/

expect {

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

"*password:" { send "$passwd\r" }

}

 

expect "*]" 

EOF

tar xf distribute-0.6.10.tar.gz

cd distribute-0.6.10

python setup.py install

cd /tmp/

 

#!/bin/bash

passwd='hengtian@123'

/usr/local/bin/expect <<-EOF

set timeout -1

spawn scp -r [email protected]:/ftp/www/pip-1.5.4.tar.gz /tmp/

expect {

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

"*password:" { send "$passwd\r" }

}

 

expect "*]" 

EOF

 

tar -xzvf pip-1.5.4.tar.gz

cd pip-1.5.4

python setup.py install

cd /usr/bin/

touch pip

chgrp root pip

chmod 755 pip

cat > /usr/bin/pip <<EOF

#!/usr/bin/python

# EASY-INSTALL-ENTRY-SCRIPT: 'pip==1.5.4','console_scripts','pip'

__requires__ = 'pip==1.5.4'

import sys

from pkg_resources import load_entry_point

 

if __name__ == '__main__':

    sys.exit(

        load_entry_point('pip==1.5.4', 'console_scripts', 'pip')()

    )

EOF

 

 

安装完成之后 使用pip list查看版本

pip 安装fabric 1.14.0 

报错

pip 版本过低 需要升级pip版本 这边升级到10.0.0

pip install pip==10.0.1

 

升级成功pip list 查看

 

 

 

pip 安装fabric

sshkeygen.py

#!/bin/python

#coding=utf-8

# Author:jiaminxu

# Email:[email protected]

# Description: 对虚拟机进行免密的操作  建立信任

# Notes:手动修改登录账号 密码 虚拟机ip 会将172.16.129.72和172.16.130.24的公钥加入到对应虚拟机的authorized_keys中

# usage:fab -f sshkeygen.py  remote_update  fab -f sshkeygen.py  -l

from fabric.api import *

 

env.user = 'root'

env.hosts = ['10.6.11.120','10.6.11.233']

 

env.password = ‘pass'

 

#@runs_once 只执行一次

@task

def local_update():

    with lcd("/tmp"):

        local("touch a123.txt")

 

 

@task

def remote_update():

    with cd("/root"):

        run("test -d /root/.ssh && test -e /root/.ssh/authorized_keys && echo '.ssh/authorized_keys exist' ||   yes |ssh-keygen -t dsa -P '' -f /root/.ssh/id_dsa && touch /root/.ssh/authorized_keys && chmod 644 /root/.ssh/authorized_keys")

        run("echo ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA0KV3lxiiz7bDSLLK7qSnF34Sm54pXRDnZDWJH22TyDlUt6WvOuP9ETiElSnTDDNFrGQ7+itroPWK1Stvp0RKomA9U3bRUWB1bYwBWC90FRW785IsnfLYX0S9ArWelipdn5yPjjmLadlEEkbOheUMw9B4gZNw/YsD/LRa2Ds+CExC/IHJzcHWhxiN75WhnEgxfuMYggZIdKwOINnAHvdKrKUncd4Sw26zsVF9yxrJo1Lr1IZry5X14CiXrZkI+zV9cJ05Fo3tZ7H/VLTdAeQztL9jPQsD3vey4zm7WCf5+guDhUbCXhFvTq/QyP/wE9f02sxJnuwhE54Uy19eMV77/Q== root@vdle-commerce85 >> //root/.ssh/authorized_keys ")

        run("echo ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAmwYLVcH0sZ0Aso8L5j8Ytsa/Jg+D1qrnXs5LEGRk+SRCnTxL8OQdxi9CVrlzvMN7sZMQ0qpAVUT+RA8xB05y/6Jn8ry76m1n3URuZx9wmQLro146xc2YbqgKehLPtbR9UFZNztzv9UCSSPPiznr+242U+hB/+IgrWQGE91+JLTojInyUD5m1VASVn9IxUuJgr5qfaSNDgWAmrqUXwVO89POIABMjCz+wK32X2Z4xmcJeZ7rW+cGC43eJ+9rKxsnXX1hYKEvO+OdKmL3zSAz6Rgf0ECIDZhKMpbb3Z5ZTavnGqDwiUNDTD0ggLRFasR3mn+RgOaNoV6pKcrsYDK6Tsw== [email protected] >> /root/.ssh/authorized_keys ")

        run("yum -y install libselinux-python")

@task

def deploy():

    local_update()

    remote_update()

 

 

 

查看脚本中所有模块

 

执行remote_update

fab -f sshkeygen.py  remote_update

 

 

会在对应虚拟机中创建authorized_keys(如果不存在的话),再将172.16.129.72和172.16.130.24的公钥加入到对应虚拟机的authorized_keys中

执行成功(这边直接贴一个之前虚拟机  执行成功的图)

添加 免密成功后,首次登陆还是会需要交互 

如果不希望 在ssh过程中弹出 图中所示交互界面 可以做如下配置

 

 

方法1

cat > ~/.ssh/config << EOF

Host *

    StrictHostKeyChecking no

EOF

方法二

修改/etc/ssh/ssh_config

#StrictHostKeyChecking ask    去掉#之后把ask 改成no 即可

 

 

猜你喜欢

转载自blog.csdn.net/xujiamin0022016/article/details/81545676