8455澳门新_8455新葡萄娱乐【官网】

8455澳门新我写了这个脚本,第1章 ansible软件概念

  日常运维中,我们会存在每日备份的现象,针对这一种情况可能会要求监控文件是否存在。比较笨拙的方法就是登录上服务器到某个路径下查看文件是否存在,除此之外,我们可以利用shell或者python来编写监控文件是否存在的脚本来减少工作量。当然,作为一个同样是小白的我,编写的脚本可以略显简单,希望大神们可以指点指点(^_^)

第1章 ansible软件概念说明

写 python 文件时,每个文件开头都必须注明版本和编码。每次我 touch 文件之后粘贴这两句话让我不胜其烦。

这两天搞脚本,花费不少时间。

1、shell编写监控文件是否存在的脚本

python语言是运维人员必会的语言,而ansible是一个基于Python开发的自动化运维工具 (saltstack)。其功能实现基于SSH远程连接服务;ansible可以实现批量系统配置、批量软件部署、批量文件拷贝、批量运行命令等功能

由于我没有安装 python 的 IDE 工具,也没有为 vim 安装相应的插件。主要是为了练习自己的编码能力,而不希望过于依赖工具,所以为了解决这个问题,我写了这个脚本。

Python和Shell都可以获取文本内容,网上许多资料介绍的都不具体。简单的使用Python和Shell写了脚本。

  我们可以利用CRT或者xshell等工具编写:

ansible软件相关参考链接信息:

#!/bin/bash
if [ -n "$1" ]; then
 if [ -f "$1" ]; then
 echo $1 '文件已经存在,不能重复创建'
 else
 echo '#!/usr/bin/env python3' > $1
 echo '# -*- coding: UTF-8 -*-' >> $1
 echo $1 '文件创建成功'
 fi
else
 echo '请添加新建 Python 文件名参数'
fi

做一些笔记沉淀一下。

  以下是shell中判断文件是否存在,若不存在,则自动创建的方法。(当然,能用英文最好用英文写注释,本人英文水平太差...)

http://docs.ansible.com/ansible/intro_installation.html
http://www.ansible.com.cn/
http://docs.ansible.com/modules_by_category.html
http://www.ansible.cn/docs/

将脚本保存在 ~/.bin 目录下,命名为 newpy 文件,然后将 ~/.bin 添加到系统环境变量中,然后就可以在命令行中输入

1、Python实现:

#!/bin/bash
#判断/export/home/wlan/AUTH这个路径下是否每天都会生成AUTH_*.xml文件
#文件名称
filename=/root/AUTH_1_1_`date +%Y%m%d`.xml
if [ ! -f $filename ];then
        touch $filename
        echo "file mk success"
else
        echo "exist"
fi

1.1 软件特点概述

newpy test.py
#-*- encoding:UTF-8 -*-
filehandler = open('f.txt','r') #以读方式打开文件,rb为二进制方式(如图片或可执行文件等)
print filehandler.read()  #读取整个文件
filehandler.close()   #关闭文件句柄

 

01.不需要单独安装客户端(no agents),基于系统自带的sshd服务,sshd就相当于ansible的客户端

来创建一个自带注释的 python 脚本文件了。

2、Shell实现:

2、python编写铰孔文件是否存在的脚本(这个写了两个系统的实现,其实都差不多)

02.不需要服务端(no servers)

如果需要更多的功能,可以不断丰富这个 shell 脚本文件。暂时没想到,就这么着吧~如果你有更好的方法,请给我留言哦~

#!/bin/bash
#定义了要读取文件的路径
MY_FILE=/usr/loca/hrnm/switch_info 
while read MY_LINE
do
#输出读到的每一行的结果
echo $MY_LINE
done < $MY_FILE

  1)Windows上:可以利用pycharm工具,当然,前提是环境都配置好了,python环境搭建可以百度一下哈

03.需要依靠大量的模块实现批量管理

以上这篇shell命令行,一键创建 python 模板文件脚本方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

以上这篇python和shell获取文本内容的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

#判断文件是否存在,若不存在则创建
#导入模块
import os
import datetime

#文件名称
filenameHead = "C:\xxx"
filenameFoot = ".txt"
nowTime = datetime.datetime.now().strftime("%Y%m%d")

if os.path.isfile( filenameHead + nowTime + filenameFoot ):
    print("文件已存在")
else:
    file = open ( filenameHead + nowTime + filenameFoot,"w" )
    file.close ()
    print("文件已创建")

04.配置文件/etc/ansible/ansible.cfg(无需配置)

您可能感兴趣的文章:

  • python+influxdb+shell编写区域网络状况表
  • Python设置在shell脚本中自动补全功能的方法
  • python和shell监控linux服务器的详细代码
  • Python下调用Linux的Shell命令的方法
  • python和shell获取文本内容的方法
  • python 执行shell命令并将结果保存的实例
  • 利用Python+Java调用Shell脚本时的死锁陷阱详解
  • 使用Python生成Shell命令,批量执行程序代码解析
  • python SSH模块登录,远程机执行shell命令实例解析
  • 用Python shell简化开发

您可能感兴趣的文章:

  • python+influxdb+shell编写区域网络状况表
  • Python设置在shell脚本中自动补全功能的方法
  • python和shell监控linux服务器的详细代码
  • Python下调用Linux的Shell命令的方法
  • python 执行shell命令并将结果保存的实例
  • shell命令行,一键创建 python 模板文件脚本方法
  • 利用Python+Java调用Shell脚本时的死锁陷阱详解
  • 使用Python生成Shell命令,批量执行程序代码解析
  • python SSH模块登录,远程机执行shell命令实例解析
  • 用Python shell简化开发

  2)Linux上:同样是使用CRT等工具,只不过文件结尾都是.py的格式,具体的可以自己实现一下看看

1.2 企业级生产场景批量管理-自动化管理方案

#确认字符类型
#-*- coding:utf-8 -*- 
#导入文件用来判断文件是否存在的模块
import os  
#导入获取时间的模块            
import datetime        
#变量,获取当前时间
nowtime = datetime.datetime.now().strftime("%Y%m%d")  
#变量,定义文件所在路径 
path = "/home/tnms2/python/"
#变量,定义文件前缀                           
fileHead = "xxx"     
#变量,定义文件后缀                                  
fileFoot = ".txt"                                      

#判断文件是否存在
if os.path.isfile( path + fileHead + nowtime + fileFoot ):
        print( "The " + fileHead + nowtime + fileFoot + " exist" )
#若不存在,则创建文件
else:
         #创建文件的语法 
        file = open( path + fileHead + nowtime + fileFoot,"w" )
        file.close()
        print( "The " + fileHead + nowtime + fileFoot + " touch successed" )

01.最简单/最常用/最强大的选择是ssh key+shell/pssh方案,一般中小型企业会用(50-100台以下规模企业)

以上都是可以判断文件是否存在的脚本,恩,算是脚本吧,虽然看着比较简单。如果想要每天都能看到,咱们可以设置一个定时任务并将执行结果打印出来,这样每天只需要登录服务器查看打印出来的文件即可。

a.利用ssh key执行命令,并将命令放在脚本里面

#设置定时任务
corntab -e
#每天九点自动执行脚本并且将结果追加到file_exist.log中
00 9 * * * python /export/home/wlan/file_exist.py >> /export/home/wlan/file_exist.log 

b.利用ssh key执行命令,将命令放在脚本里面,并加上相应循环语句或判断语句

 

02.sina cfengine/puppet较早的批量管理工具(现在基本上没有企业用)

 

03.门户级别比较流行的,puppet批量管理工具(复杂/笨重)

  

04.saltstack批量管理工具;特点:简单,功能强大(配置复杂)---赶集网/小米/ CDN公司

批量管理路线:ssh key-->cfengine-->puppet-->saltstack/ansible

注意:使用ansible软件的前提是ssh key公钥分发完成

1.3 实现集群规模架构一键部署自动化-步骤说明

01.5台服务器先配置好(kickstart,cobbler无人值守安装),高级实现云计算(按需分配,动态调整)-openstack,kvm

02.linux基本优化,包括ssh服务(可以自动化实现)

03.创建密钥信息(自动化免交互创建)

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa >/dev/null 2>&1

04.进行批量分发密钥(sshpass,expect自动化实现)

05.ansible软件安装(自动化实现)

06.网络服务自动化安装(ansible实现)

搭建yum仓库,定制rpm包

第2章 ansible软件实践部署

ansible软件部署安装需求

  1. 需要有epel源

系统yum源(base epel--pip gem)

sshpass---epel

  1. ssh+key免密码环境必须部署完成

2.1 ansible地址规划

服务器名称

网卡eth0

网卡eth1

用途说明

m01

10.0.0.61

172.16.1.61

批量管理服务器

nfs01

10.0.0.31

8455澳门新,172.16.1.31

nfs共享存储服务器

backup

10.0.0.41

172.16.1.41

rsync备份服务器

web01

10.0.0.8

172.16.1.8

web服务器

说明:无特殊说明,子网掩码均为255.255.255.0,一个C类网段254台机器规模

2.2 ①部署ssh+key免密码登录方式

利用非交互式工具实现批量分发公钥与批量管理服务器

 sshpass -p123456 ssh-copy-id -i ~/.ssh/id_dsa.pub "-o StrictHostChecking=no 172.16.1.41"
 sshpass -p123456 ssh -o StrictHostChecking=no root@172.16.1.41 "uptime"
 sshpass -p123456 scp -o StrictHostChecking=no /etc/hosts root@172.16.1.41:~
 <- -p:指定ssh连接用户的密码
 <- -o:StrictHostChecking=no 避免第一次登录出现公钥检查

2.3 ②受控端安装ansible相关管理软件

保留yum安装的软件

sed -i.bak 's#keepcache=0#keepcache=1#g' /etc/yum.conf 2 grep keepcache /etc/yum.conf 

客户端配置

yum install libselinux-python -y

说明:由于初始我们关闭了selinux安全管理软件,故这里需要操作此步骤。不装这个软件只能关闭selinux,但是无论什么情况也不要开启,工作环境下视情况而定

2.4 ③管理端m01安装ansible软件

yum install ansible -y

2.4.1 查看版本信息

 [root@m01 ~]# ansible --version
 ansible 2.3.2.0
 config file = /etc/ansible/ansible.cfg #告知ansible软件配置文静路径
 configured module search path = Default w/o overrides
 python version = 2.6.6 (r266:84292, Aug 18 2016, 15:13:37) [GCC 4.4.7 20120313 (Red Hat 4.4.7-17)]

2.4.2 查看软件相关安装信息

[root@m01 ~]# rpm -ql ansible|egrep -v '/usr/share/|/usr/lib'
/etc/ansible
/etc/ansible/ansible.cfg #ansible配置文件
/etc/ansible/hosts  #定义ansible可以管理的主机信息
/etc/ansible/roles  #主要在自动化部署多台主机时应用
/usr/bin/ansible
/usr/bin/ansible-playbook #执行ansible剧本命令

2.4.3 软件安装目录信息

[root@m01 ~]# tree /etc/ansible/
 /etc/ansible/
 ├── ansible.cfg #ansible配置
 ├── hosts #被ansible管理的主机名单(分组)
 └── roles 

2.5 ④配置/etc/ansible/hosts文件

编辑ansible的主机配置文件hosts,添加主机组banana

cp /etc/ansible/hosts{,.bak}
[root@m01 ~]# vim /etc/ansible/hosts #配置文件编写举例
[banana] #定义组名称
172.16.1.8
172.16.1.31
172.16.1.41
[root@m01 ~]# tail /etc/ansible/hosts

2.6 ⑤实践测试

[root@m01 ~]# ansible banana -m command -a "hostname" #-m指定命令的模块 -a指定参数(action)
172.16.1.31 | SUCCESS | rc=0 >> #主机IP|请求状态|返回值(0即成功,否则失败)
nfs01       #命令输出结果
172.16.1.8 | SUCCESS | rc=0 >>
web01
172.16.1.41 | SUCCESS | rc=0 >>
backup

2.6.1 ansible命令输出信息说明

输出内容为绿色,表示执行成功,仅查询但没有发生任何改变

输出内容为黄色,表示执行成功,但对受控主机产生了影响,发生了配置改变

本文由8455澳门新发布于每日更新,转载请注明出处:8455澳门新我写了这个脚本,第1章 ansible软件概念

相关阅读