2019独角兽企业重金招聘Python工程师标准>>>

环境准备:

linux 操作系统

expect分发密钥

sublime绿色版本

第一阶段:分发密钥

选择一个目录里面新建一个.exp文件,里面内容为:

#!/usr/bin/expectif { $argc !=2 } {send_user "usege:expect 320.exp file host"  exit}#define varset file [lindex $argv 0] set host [lindex $argv 1]set password "123456"  spawn ssh-copy-id -i $file "s-linuxad@$host"  expect {  "yes/no" {send "yes\r";exp_continue}  "*password" {send "$password\r"}}expect eof

然后新建一个shell 脚本:

#!/bin/bash. /etc/init.d/functionsfor ip in `cat list` doexpect 320.exp ~/.ssh/id_dsa.pub $ip  if [ $? -eq 0 ];then  action "$ip" /bin/true  elseaction "$ip" /bin/falsefidone

新建一个list 文件,里面放入你要分发的密钥即可

[s-linuxad@T-Ansible-v-szzb scripts]$ cat list
172.31.1.32
172.31.1.221
10.0.5.146
10.0.100.10
10.0.100.11 

执行的时候可以选择把输出过程输出到一个文件里面:./start.sh >/tmp/file.txt 可以追溯回去

第二阶段  测试哪些密钥没有分发成功

利用ansible 的ping 模块来操作 主要编辑/etc/ansible/hosts的文件,一般150台服务器放一个模块

利用命令  ansible hosts -m ping >/tmp/file.xt

查看输出文件的内容

10.0.100.19 | UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).\r\n", "unreachable": true
}
10.0.5.146 | SUCCESS => {"changed": false, "ping": "pong"

文件中success则为分发密钥成功的,如果出现不是success 就是没有成功的

第三阶段   利用本地sublime 和python 选取没有分发成功的数据

去网站下sublime 和python  windows版本

https://www.python.org/

http://www.sublimetext.com/3

注:安装时勾选“Add to explorer context menu”,表示添加到鼠标的右键菜单

安装插件管理器 Package Control

使用 [Ctrl + `] (或View > Show Console menu) 打开Sublime Text控制台,将下面的Python代码粘贴到控制台后按回车。

import urllib.request,os,hashlib; h = '6f4c264a24d933ce70df5dedcf1dcaee' + 'ebe013ee18cced0ef93d5f746d80ef60'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)

用Package Control安装插件

按Ctrl+Shift+P调出命令面板
输入Install Package 选项并回车。
输入要安装的插件名,回车安装

安装 Anaconda 插件

利用Package Control安装Anaconda。安装后修改Anaconda配置文件:

Preferences > Package Settings > Anaconda > Settings – User

系统属性-环境变量

{  "pep8_ignore":["E501",],"complete_parameters": true,"anaconda_linting_behaviour": "save-only",// always"anaconda_gutter_theme": "hard","anaconda_linter_show_errors_on_save": true,"python_interpreter": "C:/Python35-32/python.exe","anaconda_linting": false,
}

其中"python_interpreter"改为自己电脑的python的路径。保存后重启sublime

添加脚本.py,注意本地要保存的扩展名是.py的

import re
import os result_path = 'D:\\tmp\\'os.chdir('D:\\tmp\\ansible-ping')
ip_files = os.listdir(os.getcwd())
print(ip_files)bfor ip_file in ip_files:with open(ip_file) as f:c = f.read()ip_list = re.findall(r'([\d\.]+).*[^SUCCESS] =>', c)with open(os.path.join(result_path, ip_file), 'w') as f:ip_list = map(lambda x: x+os.linesep, ip_list)f.writelines(ip_list)

最后执行的结果:

转载于:https://my.oschina.net/u/3635512/blog/1647996

知识点033-利用expect和shell分发密钥之后用ansible统计哪些没有分发成功相关推荐

  1. linux获取目标主机shell,expect案例-批量获取主机并分发密钥

    2019年录制SHell新课地址 贴切企业脚本编写思路讲解,带你玩Shell脚本编程实战. 本套课程从实际项目案例出发,近100个Shell实例讲解,由浅入深,循序渐进,带你玩转Shell编程的方方面 ...

  2. expect实现自动分发密钥、网站度量术语

    1.优化ssh命令 sed -ir '13 iPort 52113\nPermitRootLogin no\nPermitEmptyPasswords no\n UseDNS no\nGSSAPIAu ...

  3. linux备份华为交换机,利用expect脚本实现备份华为交换机配置之(一)

    在平常工作中需要定期备份交换机配置,如果一个个手动备份,工作量十分巨大,那有没有什么好的工具来减轻我们备份的工作量呢?经过查找资料,发现可以利用expect脚本来实现,expect可以与shell相互 ...

  4. Ubuntu16.04利用expect模拟键盘输入实现自动化交互

    在Linux的日常使用中,经常会有自动化交互的需要,如SSH,手动的操作繁琐.效率地下,使用expect工具可以模拟键盘输入,实现自动输入.自动交互. 1,安装  sudo apt install e ...

  5. SQL语句利用日志写shell

    outfile被禁止,或者写入文件被拦截: 在数据库中操作如下:(必须是root权限) show variables like '%general%'; #查看配置 set global genera ...

  6. shell实例第18讲:利用gzexe加密shell脚本

    利用gzexe加密shell脚本 gzexe_test.sh内容如下: #!/bin/bashecho "gzexe test!" 结果: 使用gzexe加密shell脚本命令:g ...

  7. ssh密钥分发之二:使用sshpass配合ssh-kopy-id编写脚本批量分发密钥:

    使用sshpass配合ssh-kopy-id编写脚本批量分发密钥:首先sshpass是一个ssh连接时的免交互工具,首先要安装一下: yum install sshpass -y接下来我们就可以使用s ...

  8. html四边形的的框怎么编写,html知识点之利用css四边形切角并且加上边框

    html知识点之利用css四边形切角并且加上边框 html知识点之利用css四边形切角并且加上边框 前言 这几个月做了很多前端工作,其中一个需求还是蛮头疼,UI给的图上面的四边形是一个带斜边的,直接用 ...

  9. linux 脚本 expected,使用expect实现shell中scp自动输入密码

    使用expect实现shell中scp自动输入密码 前段时间有一个需求,要实现一个自动备份脚本,因为不需要全部备份,所以没有使用rsync,在这里使用scp.因为scp需要输入用户密码,在网上查了好多 ...

最新文章

  1. 编程模式 之美 -- 抽象工厂模式
  2. linux系统命令学习系列-文件和目录管理
  3. java pathinfo,nginx下支持PATH_INFO的方法实例详解
  4. How to log time in Linux? (C Programming)
  5. jdbctemplate 开启事务_Spring(四):事务管理
  6. linux ntp时间服务器配置
  7. S3C2440c语言汇编传参点灯
  8. 大一新生HTML期末作业,网页制作作业(大一学生作品)
  9. python spss modeler 比较_非常值得收藏的 IBM SPSS Modeler 算法简介
  10. 2020-03-11
  11. Android项目猜纸牌游戏之一 界面设计和资源文件的设计
  12. 笔记本高分屏字体模糊_高分屏字体模糊win10怎么办_Win10系统高分屏字体模糊解决方法...
  13. angularjs controller中使用filer
  14. 组织级项目管理和项目集、项目组合管理
  15. 在线24点计算器工具
  16. 优化单页面的技巧和文章不被收录原因
  17. matlab wdencmp函数,图像的小波阈值降噪_小波降噪函数 - 全文
  18. 面对气势汹汹的瑞丽算法,SEO应该怎样做
  19. 如何利用积分系统提升社群活跃度与留存率?
  20. mfc通过ado链接oracle,VS2013环境下MFC通过ADO连接Oracle数据库 四步搞定

热门文章

  1. 将SQL for xml path('')中转义的字符正常显示
  2. 我和我的Android
  3. MOOON-server新消息处理接口
  4. EF Code First执行SQL语句及存储过程
  5. PEInfo编程思路讲解01 - 工具篇01|解密系列
  6. 单链表中一个插入操作的分析
  7. 推荐一些算法方面的好书
  8. 工具用途_机械加工中研磨加工刀具(砂轮)﹑治工具及其用途
  9. 应该知道关于Python的随机模型 以及使用范围例子洗牌 特别长 1米
  10. linux share目录 多个机器访问,如何在linux下网上邻居访问另一台机windows共享的目录?(急)...