写出运维常用python工具脚本

以下是运维常用 Python 工具脚本的简要说明和示例:

  1. Scapy:网络数据包捕获、处理和生成工具,可用于网络扫描、流量分析、攻击和制作协议测试工具等。

下面是 Scapy 的示例代码:

from scapy.all import *

# 发送 ICMP ECHO 请求并接收回应
ans, unans = sr(IP(dst="192.168.1.1")/ICMP())

# 取得第一个回应包
response = ans[0][1]

# 输出回应包的源地址和数据大小
print(response.src, len(response.load))
  1. Nmap:网络扫描工具,可用于端口扫描、服务探测、操作系统识别、漏洞扫描等操作。

下面是 Nmap 命令行的示例代码:

import nmap

# 创建 Nmap 扫描对象
nm = nmap.PortScanner()

# 扫描主机的指定端口范围
nm.scan('127.0.0.1', '22-80')

# 输出扫描结果
for host in nm.all_hosts():
    print('Host : %s (%s)' % (host, nm[host].hostname()))
    print('State : %s' % nm[host].state())

    for proto in nm[host].all_protocols():
        print('Protocol : %s' % proto)

        lport = nm[host][proto].keys()
        lport.sort()

        for port in lport:
            print('Port : %s\tState : %s' % (port, nm[host][proto][port]['state']))
  1. Metasploit:渗透测试框架,支持多种渗透测试和攻击场景,可用于测试系统和网络的安全性。

下面是 Metasploit 的示例函数:

from msfrpc import MsfRpcClient

# 创建 Metasploit 客户端连接
client = MsfRpcClient('my_password', ssl=False, host='127.0.0.1')

# 获取 Metasploit 模块
module = client.modules.use('exploit', 'windows/smb/ms09_050_smb2_negotiate_func_index')

# 设置模块属性
module['RHOST'] = '192.168.1.100'
module['LHOST'] = '192.168.1.101'
module['USERNAME'] = 'administrator'
module['PASSWORD'] = 'password'

# 运行模块
exploit = module.execute()

# 输出模块运行结果
if 'success' in exploit:
    print('Exploit succeeded!')
    print(exploit['session'])
else:
    print('Exploit failed!')
  1. ELK:日志管理工具,由 Elasticsearch、Logstash 和 Kibana 组成,可用于日志采集、存储和检索等操作。

下面是 Logstash 的示例配置文件:

input {
    file {
        path => "/var/log/nginx/access.log"
        start_position => "beginning"
     }
}

filter {
    grok {
        match => { "message" => "%{COMBINEDAPACHELOG}" }
    }
    geoip {
        source => "clientip"
  }
}

output {
    elasticsearch {
        hosts => ["localhost:9200"]
        index => "nginx-%{+YYYY.MM.dd}"
    }
}
  1. Ansible:自动化部署和配置管理工具,可用于自动配置服务器、部署应用程序、管理用户等操作。

下面是 Ansible 的示例 Playbook 文件:

- hosts: webservers
  vars:
    http_port: 80
    max_clients: 200
  tasks:
  - name: Install Apache web server
    yum:
      name: httpd
      state: latest
  - name: Configure Apache web server
    template:
      src: templates/httpd.conf.j2
      dest: /etc/httpd/conf/httpd.conf
    notify:
      - restart apache
  - name: Start Apache web server
    service:
      name: httpd
      state: started
  handlers:
    - name: restart apache
      service:
        name: httpd
        state: restarted
  1. Zabbix:自动监测和预警系统,可用于监测服务状态、预警系统异常、收集和展示指标数据等操作。

下面是 Zabbix 的示例监测脚本:

import socket

# 检查端口是否开放
def check_port(host_ip, port):
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.settimeout(2)
    try:
        s.connect((host_ip, port))
        s.shutdown(1)
        return True
    except:
        return False

# 检查 Redis 服务是否正常
if check_port('127.0.0.1', 6379):
    print('Redis service is running')
else:
    print('Redis service is down')
posted @ 2023-04-22 22:33  flytoyou  阅读(238)  评论(0)    收藏  举报