写出运维常用python工具脚本
以下是运维常用 Python 工具脚本的简要说明和示例:
- 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))
- 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']))
- 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!')
- 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}"
}
}
- 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
- 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')

浙公网安备 33010602011771号