Python运维脚本实例有哪些小结可以分享?

2026-06-09 18:172阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1122个文字,预计阅读时间需要5分钟。

Python运维脚本实例有哪些小结可以分享?

一、ps+ 可查看进程的内存占用大小,写一个脚本计算所有进程所占用内存的和。

bash#!/bin/bash

使用ps和aux列出所有进程,过滤掉RSS列total_memory=$(ps aux | grep -v RSS | awk '{sum +=$6} END {print sum}')

echo 所有进程所占用内存总和为:${total_memory} KB

注意:ps -ef与ps aux效果相同。

Python运维脚本实例有哪些小结可以分享?

一、ps 可以查看进程的内存占用大小,写一个脚本计算一下所有进程所占用内存大小的和。

(提示,使用ps aux 列出所有进程,过滤出RSS那列,然后求和)

注:ps -ef 与 ps aux 效果一样使用随意

import os list = [] sum = 0 str1 = os.popen('ps aux','r').readlines() for i in str1: str2 = i.split() new_rss = str2[5] list.append(new_rss) for i in list[1:-1]: num = int(i) sum = sum + num print '%s:%s' %(list[0],sum)

二、一键部署lvs与keepalived

注:部署keepalived配置文件,会自动将lvs部署好,不必单独搭建,但是要下载好ipvsadm

这里单独搭建了lvs

#提前配置好免密钥登陆,与apache服务 import pexpect import os ds_ip = '192.168.102.143' rs1_ip = '192.168.102.144' rs2_ip = '192.168.102.145' vip = '192.168.102.250' ds_cmd = ['ipvsadm -C', 'ipvsadm -A -t {vip}:80 -s rr'.format(vip=vip), 'ipvsadm -a -t {vip}:80 -r {rs1_ip}:80 -g'.format(vip=vip, rs1_ip=rs1_ip), 'ipvsadm -a -t {vip}:80 -r {rs2_ip}:80 -g'.format(vip=vip,rs2_ip=rs2_ip), 'ifconfig ens33:0 {vip} broadcast {vip} netmask 255.255.255.255 up'.format(vip=vip), 'route add -host {vip} dev ens33:0'.format(vip=vip) ] # for ds_cmd in ds_cmd: rs1_cmd = [ 'ansible rs1 -m shell -a "ifconfig lo:0 {vip} broadcast {vip} netmask 255.255.255.255 up" &>/dev/null'.format(vip=vip), 'ansible rs1 -m shell -a "route add -host {vip} dev lo:0" &>/dev/null'.format(vip=vip), 'ansible rs1 -m shell -a "echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore" &>/dev/null', 'ansible rs1 -m shell -a "echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce" &>/dev/null', 'ansible rs1 -m shell -a "echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore" &>/dev/null', 'ansible rs1 -m shell -a "echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce" &>/dev/null', 'service mirrors.ustc.edu.cn/mariadb/yum/10.3/centos7-amd64/') config.set('mariadb', 'gpgkey', 'mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB') config.set('mariadb', 'gpgcheck', '1') config.write(open('/etc/yum.repos.d/mariadb.repo','w')) def mariadb(): a = os.system('yum install MariaDB -y &> /dev/null') if a == 0: b = os.system('systemctl start mariadb &> /dev/null') if b == 0: print('mariadb启动成功') child = pexpect.spawn('mysql_secure_installation') child.expect('enter for none') child.sendline('') child.expect('Y/n') child.sendline('y') child.expect('New') child.sendline(DBPASSWORD) child.expect('Re-enter') child.sendline(DBPASSWORD) child.expect('successfully') child.sendline('') child.sendline('') child.sendline('') child.sendline('') child.interact() child.close() def db1(): config = configparser.ConfigParser() config.read("/etc/my.cnf.d/server.cnf", encoding="utf-8") config.set('mysqld', 'server-id', '1') config.set('mysqld', 'log-bin', 'mysql-bin') config.write(open('/etc/my.cnf.d/server.cnf','w')) b = os.system('systemctl restart mariadb') if b == 0: # os.system('mysql -uroot -p%s' % DBPASSWORD) # os.system("CREATE USER 'slave'@'%' IDENTIFIED BY 'slave';") # os.system("GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%';") # os.system('flush privileges;') # os.system('show master status') child = pexpect.spawn('mysql -uroot -p1') child.expect('none') child.sendline("CREATE USER 'slave'@'%' IDENTIFIED BY 'slave';") child.expect('none') child.sendline("GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%';") child.expect('none') child.sendline('flush privileges;') child.expect('none') child.sendline('show master status;') child.interact() child.close() def main(): repo() mariadb() db1() if __name__ == '__main__': main()

从服务器

import pexpect import os import configparser # HOSTNAME_DB1='db1' # HOSTNAME_DB2='db2' DB1 = '192.168.102.143' # DB2 = '192.168.254.27' DBPASSWORD = '1' def repo(): os.system('touch /etc/yum.repos.d/mariadb.repo') with open('/etc/yum.repos.d/mariadb.repo','w',encoding='utf8') as f: f.write('[mariadb]') config = configparser.ConfigParser() config.read("/etc/yum.repos.d/mariadb.repo", encoding="utf-8") config.set('mariadb', 'name', 'MariaDB') config.set('mariadb', 'baseurl', 'mirrors.ustc.edu.cn/mariadb/yum/10.3/centos7-amd64/') config.set('mariadb', 'gpgkey', 'mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB') config.set('mariadb', 'gpgcheck', '1') config.write(open('/etc/yum.repos.d/mariadb.repo','w')) def mariadb(): a = os.system('yum install MariaDB -y') if a == 0: b = os.system('systemctl start mariadb &> /dev/null') if b == 0: print('mariadb启动成功') child = pexpect.spawn('mysql_secure_installation') child.expect('enter for none') child.sendline('') child.expect('Y/n') child.sendline('y') child.expect('New') child.sendline(DBPASSWORD) child.expect('Re-enter') child.sendline(DBPASSWORD) child.expect('successfully') child.sendline('') child.sendline('') child.sendline('') child.sendline('') def db2(): config = configparser.ConfigParser() config.read("/etc/my.cnf.d/server.cnf", encoding="utf-8") config.set('mysqld', 'server-id', '2') config.write(open('/etc/my.cnf.d/server.cnf','w')) b = os.system('systemctl restart mariadb') if b == 0: bin = 'mysql-bin.000001' pos = 765 # os.system('mysql -uroot -p%s' % DBPASSWORD) # os.system('''mysql -uroot -p%s -e "CHANGE MASTER TO MASTER_HOST='%s', MASTER_USER='slave', MASTER_PASSWORD='slave', MASTER_LOG_FILE='%s', MASTER_LOG_POS=%s;"''' % (DBPASSWORD,DB1,bin,pos)) # os.system("mysql -uroot -p%s -e 'start slave;'" % DBPASSWORD) child = pexpect.spawn('mysql -uroot -p%s' % DBPASSWORD) child.expect('none') child.sendline("CHANGE MASTER TO MASTER_HOST='%s', MASTER_USER='slave', MASTER_PASSWORD='slave', MASTER_LOG_FILE='%s', MASTER_LOG_POS=%s;" % (DB1,bin,pos)) child.expect('none') child.sendline( 'start slave;' ) child.interact() child.close() def main(): repo() mariadb() db2() if __name__ == '__main__': main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。

本文共计1122个文字,预计阅读时间需要5分钟。

Python运维脚本实例有哪些小结可以分享?

一、ps+ 可查看进程的内存占用大小,写一个脚本计算所有进程所占用内存的和。

bash#!/bin/bash

使用ps和aux列出所有进程,过滤掉RSS列total_memory=$(ps aux | grep -v RSS | awk '{sum +=$6} END {print sum}')

echo 所有进程所占用内存总和为:${total_memory} KB

注意:ps -ef与ps aux效果相同。

Python运维脚本实例有哪些小结可以分享?

一、ps 可以查看进程的内存占用大小,写一个脚本计算一下所有进程所占用内存大小的和。

(提示,使用ps aux 列出所有进程,过滤出RSS那列,然后求和)

注:ps -ef 与 ps aux 效果一样使用随意

import os list = [] sum = 0 str1 = os.popen('ps aux','r').readlines() for i in str1: str2 = i.split() new_rss = str2[5] list.append(new_rss) for i in list[1:-1]: num = int(i) sum = sum + num print '%s:%s' %(list[0],sum)

二、一键部署lvs与keepalived

注:部署keepalived配置文件,会自动将lvs部署好,不必单独搭建,但是要下载好ipvsadm

这里单独搭建了lvs

#提前配置好免密钥登陆,与apache服务 import pexpect import os ds_ip = '192.168.102.143' rs1_ip = '192.168.102.144' rs2_ip = '192.168.102.145' vip = '192.168.102.250' ds_cmd = ['ipvsadm -C', 'ipvsadm -A -t {vip}:80 -s rr'.format(vip=vip), 'ipvsadm -a -t {vip}:80 -r {rs1_ip}:80 -g'.format(vip=vip, rs1_ip=rs1_ip), 'ipvsadm -a -t {vip}:80 -r {rs2_ip}:80 -g'.format(vip=vip,rs2_ip=rs2_ip), 'ifconfig ens33:0 {vip} broadcast {vip} netmask 255.255.255.255 up'.format(vip=vip), 'route add -host {vip} dev ens33:0'.format(vip=vip) ] # for ds_cmd in ds_cmd: rs1_cmd = [ 'ansible rs1 -m shell -a "ifconfig lo:0 {vip} broadcast {vip} netmask 255.255.255.255 up" &>/dev/null'.format(vip=vip), 'ansible rs1 -m shell -a "route add -host {vip} dev lo:0" &>/dev/null'.format(vip=vip), 'ansible rs1 -m shell -a "echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore" &>/dev/null', 'ansible rs1 -m shell -a "echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce" &>/dev/null', 'ansible rs1 -m shell -a "echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore" &>/dev/null', 'ansible rs1 -m shell -a "echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce" &>/dev/null', 'service mirrors.ustc.edu.cn/mariadb/yum/10.3/centos7-amd64/') config.set('mariadb', 'gpgkey', 'mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB') config.set('mariadb', 'gpgcheck', '1') config.write(open('/etc/yum.repos.d/mariadb.repo','w')) def mariadb(): a = os.system('yum install MariaDB -y &> /dev/null') if a == 0: b = os.system('systemctl start mariadb &> /dev/null') if b == 0: print('mariadb启动成功') child = pexpect.spawn('mysql_secure_installation') child.expect('enter for none') child.sendline('') child.expect('Y/n') child.sendline('y') child.expect('New') child.sendline(DBPASSWORD) child.expect('Re-enter') child.sendline(DBPASSWORD) child.expect('successfully') child.sendline('') child.sendline('') child.sendline('') child.sendline('') child.interact() child.close() def db1(): config = configparser.ConfigParser() config.read("/etc/my.cnf.d/server.cnf", encoding="utf-8") config.set('mysqld', 'server-id', '1') config.set('mysqld', 'log-bin', 'mysql-bin') config.write(open('/etc/my.cnf.d/server.cnf','w')) b = os.system('systemctl restart mariadb') if b == 0: # os.system('mysql -uroot -p%s' % DBPASSWORD) # os.system("CREATE USER 'slave'@'%' IDENTIFIED BY 'slave';") # os.system("GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%';") # os.system('flush privileges;') # os.system('show master status') child = pexpect.spawn('mysql -uroot -p1') child.expect('none') child.sendline("CREATE USER 'slave'@'%' IDENTIFIED BY 'slave';") child.expect('none') child.sendline("GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%';") child.expect('none') child.sendline('flush privileges;') child.expect('none') child.sendline('show master status;') child.interact() child.close() def main(): repo() mariadb() db1() if __name__ == '__main__': main()

从服务器

import pexpect import os import configparser # HOSTNAME_DB1='db1' # HOSTNAME_DB2='db2' DB1 = '192.168.102.143' # DB2 = '192.168.254.27' DBPASSWORD = '1' def repo(): os.system('touch /etc/yum.repos.d/mariadb.repo') with open('/etc/yum.repos.d/mariadb.repo','w',encoding='utf8') as f: f.write('[mariadb]') config = configparser.ConfigParser() config.read("/etc/yum.repos.d/mariadb.repo", encoding="utf-8") config.set('mariadb', 'name', 'MariaDB') config.set('mariadb', 'baseurl', 'mirrors.ustc.edu.cn/mariadb/yum/10.3/centos7-amd64/') config.set('mariadb', 'gpgkey', 'mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB') config.set('mariadb', 'gpgcheck', '1') config.write(open('/etc/yum.repos.d/mariadb.repo','w')) def mariadb(): a = os.system('yum install MariaDB -y') if a == 0: b = os.system('systemctl start mariadb &> /dev/null') if b == 0: print('mariadb启动成功') child = pexpect.spawn('mysql_secure_installation') child.expect('enter for none') child.sendline('') child.expect('Y/n') child.sendline('y') child.expect('New') child.sendline(DBPASSWORD) child.expect('Re-enter') child.sendline(DBPASSWORD) child.expect('successfully') child.sendline('') child.sendline('') child.sendline('') child.sendline('') def db2(): config = configparser.ConfigParser() config.read("/etc/my.cnf.d/server.cnf", encoding="utf-8") config.set('mysqld', 'server-id', '2') config.write(open('/etc/my.cnf.d/server.cnf','w')) b = os.system('systemctl restart mariadb') if b == 0: bin = 'mysql-bin.000001' pos = 765 # os.system('mysql -uroot -p%s' % DBPASSWORD) # os.system('''mysql -uroot -p%s -e "CHANGE MASTER TO MASTER_HOST='%s', MASTER_USER='slave', MASTER_PASSWORD='slave', MASTER_LOG_FILE='%s', MASTER_LOG_POS=%s;"''' % (DBPASSWORD,DB1,bin,pos)) # os.system("mysql -uroot -p%s -e 'start slave;'" % DBPASSWORD) child = pexpect.spawn('mysql -uroot -p%s' % DBPASSWORD) child.expect('none') child.sendline("CHANGE MASTER TO MASTER_HOST='%s', MASTER_USER='slave', MASTER_PASSWORD='slave', MASTER_LOG_FILE='%s', MASTER_LOG_POS=%s;" % (DB1,bin,pos)) child.expect('none') child.sendline( 'start slave;' ) child.interact() child.close() def main(): repo() mariadb() db2() if __name__ == '__main__': main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。