1、批量文件重命名神器在工作中，我们常常需要对大量文件进行批量重命名，Python帮你轻松搞定！ import os def batch_rename(path, prefix='', suffix=''): for i, filename in enumerate(os.listdir(path)): new_name = f"{prefix}{i:03d}{suffix}{os.path.splitext(filename)[1]}" old_file = os.path.join(path, filename) new_file = os.path.join(path, new_name) os.rename(old_file, new_file) # 使用示例： batch_rename('/path/to/your/directory', 'file_', '.txt')2、自动发送邮件通知告别手动发送，用Python编写定时发送邮件的自动化脚本。import smtplib from email.mime.text import MIMEText def send_email(to_addr, subject, content): smtp_server = 'smtp.example.com' username = 'your-email@example.com' password = 'your-password' msg = MIMEText(content) msg['Subject'] = subject msg['From'] = username msg['To'] = to_addr server = smtplib.SMTP(smtp_server, 587) server.starttls() server.login(username, password) server.sendmail(username, to_addr, msg.as_string()) server.quit() # 使用示例： send_email('receiver@example.com', '每日报告提醒', '今日报告已生成，请查收。')3、定时任务自动化执行使用Python调度库，实现定时执行任务的自动化脚本。import schedule import time def job_to_schedule(): print("当前时间：", time.ctime(), "任务正在执行...") # 定义每天9点执行任务 schedule.every().day.at("09:00").do(job_to_schedule) while True: schedule.run_pending() time.sleep(1) # 使用示例： # 运行此脚本后，每天上午9点会自动打印当前时间及提示信息4、数据库操作自动化简化数据库管理，Python帮你自动化执行CRUD操作。import sqlite3 def create_connection(db_file): conn = None try: conn = sqlite3.connect(db_file) print(f"成功连接到SQLite数据库：{db_file}") except Error as e: print(e) return conn def insert_data(conn, table_name, data_dict): keys = ', '.join(data_dict.keys()) values = ', '.join(f"'{v}'" for v in data_dict.values()) sql = f"INSERT INTO {table_name} ({keys}) VALUES ({values});" try: cursor = conn.cursor() cursor.execute(sql) conn.commit() print("数据插入成功！") except sqlite3.Error as e: print(e) # 使用示例： conn = create_connection('my_database.db') data = {'name': 'John Doe', 'age': 30} insert_data(conn, 'users', data) # 在适当时候关闭数据库连接 conn.close()5、网页内容自动化抓取利用BeautifulSoup和requests库，编写Python爬虫获取所需网页信息。import requests from bs4 import BeautifulSoup def fetch_web_content(url): response = requests.get(url) if response.status_code == 200: soup = BeautifulSoup(response.text, 'html.parser') # 示例提取页面标题 title = soup.find('title').text return title else: return "无法获取网页内容" # 使用示例： url = 'https://example.com' web_title = fetch_web_content(url) print("网页标题：", web_title)6、数据清洗自动化使用Pandas库，实现复杂数据处理和清洗的自动化。import pandas as pd def clean_data(file_path): df = pd.read_csv(file_path) # 示例：处理缺失值 df.fillna('N/A', inplace=True) # 示例：去除重复行 df.drop_duplicates(inplace=True) # 示例：转换列类型 df['date_column'] = pd.to_datetime(df['date_column']) return df # 使用示例： cleaned_df = clean_data('data.csv') print("数据清洗完成，已准备就绪！")7、图片批量压缩用Python快速压缩大量图片以节省存储空间。from PIL import Image import os def compress_images(dir_path, quality=90): for filename in os.listdir(dir_path): if filename.endswith(".jpg") or filename.endswith(".png"): img = Image.open(os.path.join(dir_path, filename)) img.save(os.path.join(dir_path, f'compressed_{filename}'), optimize=True, quality=quality) # 使用示例： compress_images('/path/to/images', quality=80)8、文件内容查找替换Python脚本帮助你一键在多个文件中搜索并替换指定内容。import fileinput def search_replace_in_files(dir_path, search_text, replace_text): for line in fileinput.input([f"{dir_path}/*"], inplace=True): print(line.replace(search_text, replace_text), end='') # 使用示例： search_replace_in_files('/path/to/files', 'old_text', 'new_text')9、日志文件分析自动化通过Python解析日志文件，提取关键信息进行统计分析。def analyze_log(log_file): with open(log_file, 'r') as f: lines = f.readlines() error_count = 0 for line in lines: if "ERROR" in line: error_count += 1 print(f"日志文件中包含 {error_count} 条错误记录。") # 使用示例： analyze_log('application.log')10、数据可视化自动化利用Matplotlib库，实现数据的自动图表生成。import matplotlib.pyplot as plt import pandas as pd def visualize_data(data_file): df = pd.read_csv(data_file) # 示例：绘制柱状图 df.plot(kind='bar', x='category', y='value') plt.title('数据分布') plt.xlabel('类别') plt.ylabel('值') plt.show() # 使用示例： visualize_data('data.csv')11、邮件附件批量下载通过Python解析邮件，自动化下载所有附件。import imaplib import email from email.header import decode_header import os def download_attachments(email_addr, password, imap_server, folder='INBOX'): mail = imaplib.IMAP4_SSL(imap_server) mail.login(email_addr, password) mail.select(folder) result, data = mail.uid('search', None, "ALL") uids = data[0].split() for uid in uids: _, msg_data = mail.uid('fetch', uid, '(RFC822)') raw_email = msg_data[0][1].decode("utf-8") email_message = email.message_from_string(raw_email) for part in email_message.walk(): if part.get_content_maintype() == 'multipart': continue if part.get('Content-Disposition') is None: continue filename = part.get_filename() if bool(filename): file_data = part.get_payload(decode=True) with open(os.path.join('/path/to/download', filename), 'wb') as f: f.write(file_data) mail.close() mail.logout() # 使用示例： download_attachments('your-email@example.com', 'your-password', 'imap.example.com')12、定时发送报告自动化根据数据库或文件内容，自动生成并定时发送日报/周报。import pandas as pd import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart def generate_report(source, to_addr, subject): # 假设这里是从数据库或文件中获取数据并生成报告内容 report_content = pd.DataFrame({"Data": [1, 2, 3], "Info": ["A", "B", "C"]}).to_html() msg = MIMEMultipart() msg['From'] = 'your-email@example.com' msg['To'] = to_addr msg['Subject'] = subject msg.attach(MIMEText(report_content, 'html')) server = smtplib.SMTP('smtp.example.com', 587) server.starttls() server.login('your-email@example.com', 'your-password') text = msg.as_string() server.sendmail('your-email@example.com', to_addr, text) server.quit() # 使用示例： generate_report('data.csv', 'receiver@example.com', '每日数据报告') # 结合前面的定时任务脚本，可实现定时发送功能13、自动化性能测试使用Python的 locust 库进行API接口的压力测试。from locust import HttpUser, task, between class WebsiteUser(HttpUser): wait_time = between(5, 15) # 定义用户操作之间的等待时间 @task def load_test_api(self): response = self.client.get("/api/data") assert response.status_code == 200 # 验证返回状态码为200 @task(3) # 指定该任务在总任务中的执行频率是其他任务的3倍 def post_data(self): data = {"key": "value"} response = self.client.post("/api/submit", json=data) assert response.status_code == 201 # 验证数据成功提交后的响应状态码 # 运行Locust命令启动性能测试： # locust -f your_test_script.py --host=http://your-api-url.com14、自动化部署与回滚脚本使用Fabric库编写SSH远程部署工具，这里以部署Django项目为例：from fabric import Connection def deploy(host_string, user, password, project_path, remote_dir): c = Connection(host=host_string, user=user, connect_kwargs={"password": password}) with c.cd(remote_dir): c.run('git pull origin master') # 更新代码 c.run('pip install -r requirements.txt') # 安装依赖 c.run('python manage.py migrate') # 执行数据库迁移 c.run('python manage.py collectstatic --noinput') # 静态文件收集 c.run('supervisorctl restart your_project_name') # 重启服务 # 使用示例： deploy( host_string='your-server-ip', user='deploy_user', password='deploy_password', project_path='/path/to/local/project', remote_dir='/path/to/remote/project' ) # 对于回滚操作，可以基于版本控制系统实现或创建备份，在出现问题时恢复上一版本的部署。
对于刚入门网络安全的小伙伴而言，对于各种工具的使用算是头疼的了。不是工具的运行环境有问题，就是工具的使用命令记不住。故而为大家介绍一款综合渗透扫描工具。关于TscanPlus 是一款综合性网络安全检测和运维工具，旨在快速资产发现、识别、检测，构建基础资产信息库，协助甲方安全团队或者安全运维人员有效侦察和检索资产，发现存在的薄弱点和攻击面。安装本我们直接在Windows平台下运行。双击exe文件即可，无需安装。我们在作者的 项目地址 ： https://github.com/TideSec/TscanPlus/releases 下载对应的包即可。主要功能端口扫描 端口扫描是前期信息收集的重要手段。为了简单明了，作者提供了常见的web端口、top100、常见RCE端口等等。并且在扫描结果中，从Banner信息中可以得到相关服务的名称。URL探测 这个功能主要检测该站长都是利用了哪些框架，如WP Typecho DZ php mysql等常见的程序类型和系统服务。子域名查找 子域名查找也是我们在信息收集中重要的环节之一。以通过旁站漏洞来获取系统Shell。漏洞检测 作者提供了约400多个已知漏洞。输入目标后可快速检测常见的漏洞。密码破解 支持常见的SSH PDP MYSQL FTP等常见服务的密码破解。目录扫描 通过目录扫描，可以发现站点的一些敏感目录，如站点后台地址等。辅助功能作者为了方便初学者学习，在里面集成了常见的 CS MSF NC等工具上线的命令。原文出处：https://mp.weixin.qq.com/s/U3Hm5DoqWdTOUS8GSabRdw
这篇文章主要介绍了Python脚本利用adb进行手机控制的方法，文中通过示例代码介绍的非常详细，对大家的学习或者工作具有一定的参考学习价值，需要的朋友们下面随着小编来一起学习学习吧一. adb 相关命令：关闭adb服务：adb kill-server启动adb服务 adb start-server查询当前运行的所有设备 adb devices可能在adb中存在多个虚拟设备运行 可以指定虚拟设备运行 -s 虚拟设备名称重启设备 adb reboot --指定虚拟设备 adb -s 设备名称 reboot查看日志 adb logcat 清除日志 adb logcat -c进入linux shell下 adb shell 其中常用的linux命令 cd cat 等等 输入su可以获取超级管理员名称了 要确定是否有哪些命令 进入 system/bin目录 就知道了传入文件到设备中 adb push 本地文件 远程目录从设备中拷贝文件到本地 adb -s emulator-5556 pull /data/config.ini d:/显示当前运行的全部模拟器： adb devices安装应用程序： adb install -r 123.apk获取模拟器中的文件： adb pull 向模拟器中写文件： adb push 进入模拟器的shell模式： adb shell卸载apk包： adb shell cd data/app rm 123.apk exit adb uninstall 123.apk adb install -r 123.apk查看adb命令帮助信息： adb help删除系统应用： adb remount （重新挂载系统分区，使系统分区重新可写）。 adb shell cd system/app rm 123.apk获取管理员权限： adb root19、复制文件：复制一个文件或目录到设备：adb push 如：adb push update.zip /sdcard/从设备上复制一个文件或目录：adb pull 如：adb pull /sdcard/update.zip.20、取得当前运行设备的实例的列表及每个实例的状态：adb devices21：这条命令模拟android手机在屏幕坐标（X,Y）处进行了点击操作。adb shell input tap22：这条命令模拟Android手机从屏幕坐标（X1,Y1）滑动到坐标（X2,Y2）的操作。adb shell input swipe 23:Luiautomator dump dump: creates an XML dump of current UI hierarchy 这个命令是用来成成当前界面的UI层次，并用XML格式进行展示 。这样就可以获取各个组件的位置了注：如果PC要想同时控制多台Android手机，必须在adb 后面添加-s例如：adb -s 13b6e4c4 shell input tap 400 400表示对13b6e4c4这台Android手机进行在屏幕上（400,400）坐标位置进行模拟的点击事件。24.能看到设备信息就代表设备已经连接成功了，接下来的命令就是adb install 路径+包名.apk例如我的安装包放在桌面，那么命令就是adb install C:\Users\hyh\Desktop\XXX.apk* adb shell uiautomator dump /mnt/sdcard/window_dump.xml 获得手机当前界面的UI信息，生成window_dump.xml* adb shell input text “123” 输入text举例：1、打开cmd，进入到当前文件夹中，输入命令 adb devices 查看当前与电脑连接的设备（前提是，手机打开usb调试模式），可以查看已连接成功的手机。2、 若手机成功连接，输入命令 adb shell input tap 100 100 , 表示点击屏幕上坐标为（100，100）的点，如果不知道需要点击的点的具体位置的话可以在手机开发者模式中设置。二. adb 模拟按键：比如使用 adb shell input keyevent 命令，不同的 keycode 能实现不同的功能，完整的 keycode 列表详见 KeyEvent，摘引部分我觉得有意思的如下:Keycode含义3HOME 键4返回键5打开拨号应用6挂断电话24增加音量25降低音量26电源键27拍照（需要在相机应用里）64打开浏览器82菜单键85播放/暂停86停止播放87播放下一首88播放上一首122移动光标到行首或列表顶部123移动光标到行末或列表底部126恢复播放127暂停播放164静音176打开系统设置187切换应用207打开联系人208打开日历209打开音乐210打开计算器220降低屏幕亮度221提高屏幕亮度223系统休眠224点亮屏幕231打开语音助手276如果没有 wakelock 则让系统休眠input 命令的一些用法举例电源键命令：adb shell input keyevent 26执行效果相当于按电源键。菜单键命令：adb shell input keyevent 82HOME 键命令：adb shell input keyevent 3返回键命令adb shell input keyevent 4音量控制增加音量：adb shell input keyevent 24降低音量：adb shell input keyevent 25静音：adb shell input keyevent 164媒体控制播放/暂停：adb shell input keyevent 85停止播放：adb shell input keyevent 86播放下一首：adb shell input keyevent 87播放上一首：adb shell input keyevent 88恢复播放：adb shell input keyevent 126暂停播放：adb shell input keyevent 127点亮/熄灭屏幕可以通过上文讲述过的模拟电源键来切换点亮和熄灭屏幕，但如果明确地想要点亮或者熄灭屏幕，那可以使用如下方法。点亮屏幕：adb shell input keyevent 224熄灭屏幕：adb shell input keyevent 223三、使用python脚本自动运行cmd 命令1.在adb文件夹下建立一个python文件import os os.system('adb shell input tap 100 100');运行脚本，发现与在命令行输入相同语句有同样的效果。2、也可以使用subprocess.Popen，最简单使用方式如下，设置shell=True，就不会弹出cmd框process = subprocess.Popen('adb shell input tap 14 1402',shell=True)程序实例：#coding:utf-8 #程序功能：可以实现抖音个人页面视频的自动点击，从而自动增加访问量 #思路：抖音主页中两个视频切换点击，可以实现访问量的增加 #使用ADB程序，视频的屏幕坐标可以使用adb shell uiautomator dump命令，获取该页面xml源码后查得 #下述是小米MIX2抖音主页第一个视频和第二个视频的坐标位置 #缺点：运行时不能移动屏幕，后续可以采用获取模块ID号的方式去点击相应的位置 import time import subprocess i = 0 #每次操作的间隔时间取决于手机配置，配置越高时间越短 sleep_time = 0.5 while 1: #用popen设置shell=True不会弹出cmd框 process = subprocess.Popen('adb shell input tap 14 1402',shell=True) time.sleep(sleep_time) process = subprocess.Popen('adb shell input keyevent KEYCODE_BACK', shell=True) time.sleep(sleep_time) process = subprocess.Popen('adb shell input tap 375 1402', shell=True) time.sleep(sleep_time) process = subprocess.Popen('adb shell input keyevent KEYCODE_BACK', shell=True) time.sleep(sleep_time) #os.system('adb shell input tap 14 1402') #os.system('adb shell input keyevent KEYCODE_BACK') #os.system('adb shell input tap 375 1402') i+=1 print str(i) + 'clicks have been completed'实现原理Hierarchy Viewer：获得当前手机实时的UI信息，方便用于手机的自动化测试；python中的subprocess.Popen() 或 Python os模块：调用系统命令；uiautomator工具：获取界面控件信息；adb命令：对手机进行操作；原文出处： Python脚本利用adb进行手机控制的方法