python 通过调用api进行免密登录

需求:新加了一台机器,IP:192.168.1.132 ,使用自动化工具实现免密登录。

思路:通过saltstack的salt-run执行本地模块,该模块使用ansible进行秘钥的相关操作。

在salt-master端编写:cat /srv/salt/_runners/keyminion.py

#导入模块import codecs
import json
import commands

#定义名字def publicKey(ipaddr):#传入IP地址,因为ansible操作远程主机是需要IP,密码(密码在代码中指定)        #编写文件,文件内容为IP,密码
    with codecs.open('/etc/ansible/{0}.txt'.format(ipaddr), 'w') as f:
        f.write("{0} ansible_ssh_pass=123456".format(ipaddr))
    resultBean = dict()        #定义命令,ansible -i 指定刚才的文件,-m script 在本地执行脚本,-a '/srv/salt/_shell/pub_key.sh 脚本路径
    cmd = "ansible -i /etc/ansible/{0}.txt all -m script -a '/srv/salt/_shell/pub_key.sh'".format(ipaddr)
        #执行命令
    status, output = commands.getstatusoutput(cmd)
    if status == 0:
        resultBean['code'] = 0
        resultBean['message'] = 'success'
        resultBean['data'] = output
        return json.dumps(resultBean)

cat /srv/salt/_shell/pub_key.sh

#!/bin/bash
source /etc/profile#创建秘钥目录
mkdir /root/.ssh#设置权限
chmod 700 /root/.ssh#进入该目录并下载秘钥文件,此处是在salt-master端安装了nginx,将文件放入了HTML目录中。
cd /root/.ssh
yum install -y wget
wget 192.168.1.131/authorized_keys#修改权限
chmod 600 authorized_keys

执行:

[root@sixgod _runners]# salt-run keyminion.publicKey 192.168.1.132






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值