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 即可