有点好玩的python运维脚本

2024-06-10 16:28

本文主要是介绍有点好玩的python运维脚本,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

python运维脚本

    • 1. 常用端口扫描
    • 2. 文件整理

1. 常用端口扫描

在计算机网络中,端口是一个通信端点,允许不同的进程或服务通过网络连接和交换数据。端口通过数值来标识,并与特定的协议相关联。未采取适当安全措施而保持端口开放,可能会使网站容易受到网络攻击。

这个自动化脚本将以网站 URL 作为输入,检查该网站的任何开放端口。无论你是在红队执行任务,还是在蓝队坚守阵地,这个脚本都能成为你的一个有用工具。

#coding:utf-8
import sys
import socket
from prettytable import PrettyTable# Dictionary mapping common ports to vulnerabilities (Top 15)
vulnerabilities = {80: "HTTP (Hypertext Transfer Protocol) - Used for unencrypted web traffic",443: "HTTPS (HTTP Secure) - Used for encrypted web traffic",22: "SSH (Secure Shell) - Used for secure remote access",21: "FTP (File Transfer Protocol) - Used for file transfers",25: "SMTP (Simple Mail Transfer Protocol) - Used for email transmission",23: "Telnet - Used for remote terminal access",53: "DNS (Domain Name System) - Used for domain name resolution",110: "POP3 (Post Office Protocol version 3) - Used for email retrieval",143: "IMAP (Internet Message Access Protocol) - Used for email retrieval",3306: "MySQL - Used for MySQL database access",3389: "RDP (Remote Desktop Protocol) - Used for remote desktop connections (Windows)",8080: "HTTP Alternate - Commonly used as a secondary HTTP port",8000: "HTTP Alternate - Commonly used as a secondary HTTP port",8443: "HTTPS Alternate - Commonly used as a secondary HTTPS port",5900: "VNC (Virtual Network Computing) - Used for remote desktop access",# Add more ports and vulnerabilities as needed
}def display_table(open_ports):table = PrettyTable(["Open Port", "Vulnerability"])for port in open_ports:vulnerability = vulnerabilities.get(port, "No known vulnerabilities associated with common services")table.add_row([port, vulnerability])print(table)def scan_top_ports(target):open_ports = []top_ports = [21, 22, 23, 25, 53, 80, 110, 143, 443, 3306, 3389, 5900, 8000, 8080, 8443]  # Top 15 portsfor port in top_ports:try:sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)sock.settimeout(1)  # Adjust timeout as neededresult = sock.connect_ex((target, port))if result == 0:open_ports.append(port)sock.close()except KeyboardInterrupt:sys.exit()except socket.error:passreturn open_portsdef main():# target = sys.argv[1]target = 'pypi.org'open_ports = scan_top_ports(target)if not open_ports:print("No open ports found on the target.")else:print("Open ports and associated vulnerabilities:")display_table(open_ports)if __name__ == "__main__":main()

让我们扫描 pypi.org

Open ports and associated vulnerabilities:
+-----------+-----------------------------------------------------------------------+
| Open Port |                             Vulnerability                             |
+-----------+-----------------------------------------------------------------------+
|     80    | HTTP (Hypertext Transfer Protocol) - Used for unencrypted web traffic |
|    443    |          HTTPS (HTTP Secure) - Used for encrypted web traffic         |
+-----------+-----------------------------------------------------------------------+

当然我们也可以把端口列表指定范围

# top_ports = [21, 22, 23, 25, 53, 80, 110, 143, 443, 3306, 3389, 5900, 8000, 8080, 8443]  # Top 15 portstop_ports = [i for i in range(20,30)]
Open ports and associated vulnerabilities:
+-----------+----------------------------------------------------+
| Open Port |                   Vulnerability                    |
+-----------+----------------------------------------------------+
|     22    | SSH (Secure Shell) - Used for secure remote access |
+-----------+----------------------------------------------------+

这个指定端口范围不多说了^_^

2. 文件整理

这个自动化脚本可以在几分钟内帮助你整理文件夹。你只需指定需要清理的路径,该脚本会根据文件扩展名自动将所有文件分到不同的文件夹中。

不仅如此!它还可以通过比较文件的哈希值来检测和处理重复文件。

import os
import hashlib
import shutildef get_file_hash(file_path):with open(file_path, 'rb') as f:return hashlib.sha256(f.read()).hexdigest()def organize_and_move_duplicates(folder_path):# Create a dictionary to store destination folders based on file extensionsextension_folders = {}# Create the "Duplicates" folder if it doesn't existduplicates_folder = os.path.join(folder_path, 'Duplicates')os.makedirs(duplicates_folder)# Create a dictionary to store file hashesfile_hashes = {}# Iterate through files in the folderfor filename in os.listdir(folder_path):file_path = os.path.join(folder_path, filename)if os.path.isfile(file_path):# Get the file extension_, extension = os.path.splitext(filename)extension = extension.lower()  # Convert extension to lowercase# Determine the destination folderif extension in extension_folders:destination_folder = extension_folders[extension]else:destination_folder = os.path.join(folder_path,extension[1:])  # Remove the leading dot from the extensionif not os.path.exists(destination_folder):os.makedirs(destination_folder)extension_folders[extension] = destination_folder# Calculate the file hashfile_hash = get_file_hash(file_path)# Check for duplicatesif file_hash in file_hashes:# File is a duplicate, move it to the "Duplicates" foldershutil.move(file_path, os.path.join(duplicates_folder, filename))print("Moved duplicate file {%s} to Duplicates folder."%filename)else:# Store the file hashfile_hashes[file_hash] = filename# Move the file to the destination foldershutil.move(file_path, destination_folder)print("Moved {%s} to {%s}"%(file_path, destination_folder))if __name__ == "__main__":folder_path = raw_input("Enter the path to the folder to organize: ")organize_and_move_duplicates(folder_path)

在这里插入图片描述
不能说一点用没有,没啥太大用.

这篇关于有点好玩的python运维脚本的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1048668

相关文章

RedHat运维-Linux文本操作基础-AWK进阶

你不用整理,跟着敲一遍,有个印象,然后把它保存到本地,以后要用再去看,如果有了新东西,你自个再添加。这是我参考牛客上的shell编程专项题,只不过换成了问答的方式而已。不用背,就算是我自己亲自敲,我现在好多也记不住。 1. 输出nowcoder.txt文件第5行的内容 2. 输出nowcoder.txt文件第6行的内容 3. 输出nowcoder.txt文件第7行的内容 4. 输出nowcode

UE3脚本UnrealScript UC语法点滴

持续更新 目录 类定义修饰符  1.dependson(CLASSNAME) 2.config(ININAME) 3.native 4.notplaceable 5.inherits(CLASSNAME1[,CLASSNAME2,...]) 类对象实例创建 类默认属性设置 变量 1.声明 var local 2.修饰符 config  3.array 类型变量 以及

Python 字符串占位

在Python中,可以使用字符串的格式化方法来实现字符串的占位。常见的方法有百分号操作符 % 以及 str.format() 方法 百分号操作符 % name = "张三"age = 20message = "我叫%s,今年%d岁。" % (name, age)print(message) # 我叫张三,今年20岁。 str.format() 方法 name = "张三"age

【服务器运维】MySQL数据存储至数据盘

查看磁盘及分区 [root@MySQL tmp]# fdisk -lDisk /dev/sda: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical)

【服务器运维】CentOS6 minimal 离线安装MySQL5.7

1.准备安装包(版本因人而异,所以下面的命令中版本省略,实际操作中用Tab自动补全就好了) cloog-ppl-0.15.7-1.2.el6.x86_64.rpmcpp-4.4.7-23.el6.x86_64.rpmgcc-4.4.7-23.el6.x86_64.rpmgcc-c++-4.4.7-23.el6.x86_64.rpmglibc-2.12-1.212.el6.x86_64.r

【服务器运维】CentOS7 minimal 离线安装 gcc perl vmware-tools

0. 本机在有网的情况下,下载CentOS镜像 https://www.centos.org/download/ 1. 取出rpm 有的情况可能不需要net-tools,但是如果出现跟ifconfig相关的错误,就把它安装上。另外如果不想升级内核版本的话,就找对应内核版本的rpm版本安装 perl-Time-Local-1.2300-2.el7.noarch.rpmperl-Tim

一道经典Python程序样例带你飞速掌握Python的字典和列表

Python中的列表(list)和字典(dict)是两种常用的数据结构,它们在数据组织和存储方面有很大的不同。 列表(List) 列表是Python中的一种有序集合,可以随时添加和删除其中的元素。列表中的元素可以是任何数据类型,包括数字、字符串、其他列表等。列表使用方括号[]表示,元素之间用逗号,分隔。 定义和使用 # 定义一个列表 fruits = ['apple', 'banana

Python应用开发——30天学习Streamlit Python包进行APP的构建(9)

st.area_chart 显示区域图。 这是围绕 st.altair_chart 的语法糖。主要区别在于该命令使用数据自身的列和指数来计算图表的 Altair 规格。因此,在许多 "只需绘制此图 "的情况下,该命令更易于使用,但可定制性较差。 如果 st.area_chart 无法正确猜测数据规格,请尝试使用 st.altair_chart 指定所需的图表。 Function signa

python实现最简单循环神经网络(RNNs)

Recurrent Neural Networks(RNNs) 的模型: 上图中红色部分是输入向量。文本、单词、数据都是输入,在网络里都以向量的形式进行表示。 绿色部分是隐藏向量。是加工处理过程。 蓝色部分是输出向量。 python代码表示如下: rnn = RNN()y = rnn.step(x) # x为输入向量,y为输出向量 RNNs神经网络由神经元组成, python

python 喷泉码

因为要完成毕业设计,毕业设计做的是数据分发与传输的东西。在网络中数据容易丢失,所以我用fountain code做所发送数据包的数据恢复。fountain code属于有限域编码的一部分,有很广泛的应用。 我们日常生活中使用的二维码,就用到foutain code做数据恢复。你遮住二维码的四分之一,用手机的相机也照样能识别。你遮住的四分之一就相当于丢失的数据包。 为了实现并理解foutain