python
python django ansible playbook自动化运维项目实战:资产管理 -凯发ag旗舰厅登录网址下载
一、资产管理,自动化发现、扫描
1、服务端资产探测、扫描发现
1)资产管理的资产:
2)抽象与约定:
2、探测协议和模块
1)探测协议
2)探测模块和工具
3)nmap工具探测使用
# ubuntu安装 sudo apt install nmap# linux安装 yum install nmap# python安装 pip install python-nmap ==0.61 # 探测ip为192.168.1.155是否存活``nmap ``-``n ``-``sp ``-``ep ``192.168``.``1.155` `# 探测ip段的存活ip``nmap ``-``n ``-``sp ``-``ep ``192.168``.``1.155``/``24` `# -ep:返回数据包括端口都显示4)python-nmap模块的使用
首先,在python环境下安装python-nmap模块,然后再使用python-nmap
import nmapnm = nmap.portscanner() # 端口服务、主机扫描 nm.scan(hosts='192.168.1.0/24',arguments='-n -sp -pe') # 对hosts网端进行扫描 nm.all_hosts() # 在局域网内只找已启用的ip运行结果
nm.scan(hosts='192.168.1.0/24',arguments='-n -sp -pe'): nm.all_hosts():3、python中的telnet模块判断ssh服务主机
1)ssh端口存活扫描
判断主机列表是否属于linux服务器:根据上面-抽象与约定
①、系统内部开通ssh服务端口的的为linux服务器
②、开放的ssh端口范围:22 , 2022 , 202
telnet 命令:判断端口是否存活
telnet 192.168.1.155 22输出结果:是linux服务器
telnetlib 模块:python模块,python自带
import telnetlib tm = telnetlib.telnet(host='192.168.1.155',port='22',timeout=4) tm.read_until('\n',timeout=5) #执行ip 端口扫描,遇到换行便结束# 返回结果: # 'ssh-2.0-openssh_6.7p1 raspbian-5 deb8u2\r\n'# 正则匹配,判断是否为linux服务器 import re re.search('ssh',tm.read_until('\n',timeout=5)) # 如果为true ,则说明是linux服务器小结:
4、主机登录探测
使用一系列的验证方式循环进行ssh登录,得到正确的登录方式:
1)使用ssh登录服务端:ssh -l root 192.168.1.155 -p 22 ,回车根据要求输入密码即可
sudo apt``-``get install openssh``-``server ``# ubuntu下ssh安装` `/``etc``/``init.d``/``ssh start ``# ssh 启动` `ssh ``-``l 用户名 本机ip ``-``p 端口 ``# ssh 登录2)使用秘钥公钥登录
①、编辑:vim /etc/ssh/sshd_config
找到如下内容,确认已启用:
rsaauthentication yes # 开启用户账号密码登录认证
pubkeyauthentication yes # 开启公钥私钥登录认证
②、给当前用户生成公钥秘钥
执行指令:ssh-kengen
系统会自动为你生成公钥/私钥 两个文件 ,放置的路径:/home/用户/.ssh/ 下 。 公钥:id_rsa.pub , 私钥:id_rsa
如果出现:enter passphrase(empty…)(输入加密串),可以不用理,直接回车
③、重命名或copy公钥文件:
mv id_rsa.pub authorized_keys # 重命名 ,必须命名为authorized_keys ,配置文件sshd_config中指定的 ,authorized_keys文件必须放在公钥的位置(home/用户/.ssh)
④、确保公钥文件权限600(rwx -111:7)
chmod 600 authorized_keys
⑤、将私钥copy到自己的客户端
如果是linux,则放到home/用户/.ssh 路径下
5、pexpect和paramiko模块
1)pexpect
①、安装:pip install pexpect
②、pexpect 的 run() 函数:
直接执行命令返回结果和状态
import pexpectpexpect.run("ls /tmp") # 直接执行命令,打印 tmp目录下的文件pexpect.run("ls /tmp",withexitstatua=1) #打印的数据末尾有个数字,‘0’代表成功,‘1’代表执行失败③、pexpect的spawn类
启动子程序,用丰富的方法实现对子程序的控制:
类的实例化
缓冲区内容匹配:正则匹配、pexpect.eof、pexpect.timeout(正则表达式中的符号在pexpect中只代表符号在pexpect中只代表符号在pexpect中只代表符号,没有其他意义。要表示结尾可以用:\r\n,代表行结束)
向子程序发送指令
脚本模拟ssh登录
终端会话
import pexpect# chk = pexpect.spawn('ls -l /tmp/') # 实例化ssh_k = pexpect.spawn('ssh root7.0.0.1 -p22') # 实例化ssh_k.expect('password:') # 缓冲区内容匹配:实例化后执行,匹配子程序的执行情况,结果为0表示匹配成功发送指令:
send() :默认多加一个回车符,sendline没有
sendline()
sendcontrol(char) :发送控制符
脚本模拟ssh登录
- pexpect实现ssh的自动化 用户密码 登录
- pexpect实现ssh的自动化 秘钥 登录
会话控制:
执行脚本模拟ssh登录时,登录成功执行了一个ssh.interact()方法,这个就是会话控制,模拟ssh登录成功,进入会话终端,可以进行登录服务器的终端操作
④、 pexpect模块缺陷
2)paramiko
一个基于python实现的ssh远程安全连接,用于ssh远程执行命令、文件传输等功能的ssh客户端模块
paramiko参考:https://www.cnblogs.com/eric15/articles/9185291.html
①、安装
pip install paramiko # 安装②、实现ssh 账号密码 登录
import paramiko# 创建ssh对象 ssh = paramiko.sshclient() # 允许连接不在know_hosts文件中的主机 ssh.set_missing_host_key_policy(paramiko.autoaddpolicy()) # 连接服务器 ssh.connect(hostname='c1.salt.com', port=22, username='wupeiqi', password='123')# 执行命令 stdin, stdout, stderr = ssh.exec_command('df') # 获取命令结果 stdin可以先远程服务端输入指令(stdin.write(),stdout获取远程机器输出结果,stderr接收错误信息) result = stdout.read()# 关闭连接 ssh.close()③、实现ssh的密钥登录
import paramikoprivate_key = paramiko.rsakey.from_private_key_file('/home/auto/.ssh/id_rsa')# 创建ssh对象 ssh = paramiko.sshclient() # 允许连接不在know_hosts文件中的主机 ssh.set_missing_host_key_policy(paramiko.autoaddpolicy()) # 连接服务器 ssh.connect(hostname='c1.salt.com', port=22, username='wupeiqi', pkey=private_key)# 执行命令 stdin, stdout, stderr = ssh.exec_command('df') # 获取命令结果 result = stdout.read()# 关闭连接 ssh.close()⑤、paramiko的应用和缺陷
6、通过操作系统获取主机资产信息
1)如何通过登录系统获取信息
①、通过系统获取哪些信息
②、为什么要获取这些信息 (主机资产信息的重要性和探测对象)
- 有利于识别资产设备
- 是资产的基本信息,是自动化平台的基石
探测主机类型(探测对象):非docker容器的类型主机实体
③、获取信息的linux命令介绍
1、主机资产(系统主机名、系统版本)获取方式
系统主机名获取:hostname 、 uname -a 、 cat /etc/sysconfig/network(最后一个命令,cat用于centos,不适用ubuntu) 等
系统版本获取:cat /etc/issue 、 cat /etc/redhat-release 、 uname 、 lsb_release
2、主机资产(mac地址信息)获取
linux系统:cat /sys/class/net/eht0/adress 、 ifconfig eth0 、 ip a
esxi:esxcfg-vmknic -l
应用:
linux:cat /sys/class/net/[^vtlsb]*/address
esxi:esxcfg-vmknic -l|awk ‘{print $8}’|grep ‘:’
通用于不同的操作系统:cat /sys/class/net/[^vtlsb]*/address||esxcfg-vmknic -l|awk ‘{print $8}’|grep ‘:’
3、主机资产(机器型号、sn序列号)获取
获取机器型号:dmidecode -s system-manufacturer 、 dmidecode -s system-product-name
获取sn序列号:dmidecode -s system-serial-number
7、yaml工程的配置文件读取
配置文件读取:yaml模块
是一种直观的能够被电脑识别的数据序列化格式,类似于xml。由于易于被解析,应用于工程中作程序读取的配置文件
安装:pip install pyyaml
使用:
import yamlmyconf = yaml.load(file('conf/scanhosts.yaml')) print(myconf['hostsinfo']['nets']) # 结果:[192.168.1]参考链接:
https://www.cnblogs.com/eric15/articles/9795725.html
总结
以上是凯发ag旗舰厅登录网址下载为你收集整理的的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得凯发ag旗舰厅登录网址下载网站内容还不错,欢迎将凯发ag旗舰厅登录网址下载推荐给好友。
- 上一篇:
- 下一篇: