python自动获取网站关闭清单脚本

news2025/4/15 4:44:55

1.网站关闭清单

在这里插入图片描述

2.网站关闭脚本

02nginx_close.sh

#!/bin/bash

#echo "13 test.com"
#ssh root@192.168.120.145 "/data/shells/02nginx_close.sh > /dev/null 2>&1 &"

#echo "14 test1.com"
#ssh root@192.168.179.5 "/data/shells/02nginx_close.sh > /dev/null 2>&1 &"

#echo "15 test2.com"
#scp -r /data/nginx.bak/192.168.162.1/2020/vhosts/test2.confguanbi root@192.168.162.1:/data/app/nginx/conf/vhosts/test2.conf
#scp -r /data/nginx.bak/192.168.162.2/2020/vhosts/test2.confguanbi root@192.168.162.2:/data/app/nginx/conf/vhosts/test2.conf
#scp -r /data/nginx.bak/192.168.162.9/2020/vhosts/test2.confguanbi root@192.168.162.9:/data/app/nginx/conf/vhosts/test2.conf
#scp -r /data/nginx.bak/192.168.162.10/2020/vhosts/test2.confguanbi root@192.168.162.10:/data/app/nginx/conf/vhosts/test2.conf


#echo "16 test3.com"
#scp -r /data/nginx.bak/192.168.162.1/2020/vhosts/test3.confguanbi root@192.168.162.1:/data/app/nginx/conf/vhosts/test3.conf
#scp -r /data/nginx.bak/192.168.162.2/2020/vhosts/test3.confguanbi root@192.168.162.2:/data/app/nginx/conf/vhosts/test3.conf
#scp -r /data/nginx.bak/192.168.162.9/2020/vhosts/test3.confguanbi root@192.168.162.9:/data/app/nginx/conf/vhosts/test3.conf
#scp -r /data/nginx.bak/192.168.162.10/2020/vhosts/test3.confguanbi root@192.168.162.10:/data/app/nginx/conf/vhosts/test3.conf



echo "ssh"
ssh root@192.168.162.1 "/data/nginx_reload.sh"
ssh root@192.168.162.2 "/data/nginx_reload.sh"
ssh root@192.168.162.9 "/data/nginx_reload.sh"
ssh root@192.168.162.10 "/data/nginx_reload.sh"



if [ $? != 0 ];then
    echo "scp failed..."
else
    echo "scp success..."
fi

3.网站开启脚本

03nginx_kaiqi.sh

#!/bin/bash

#echo "13 test.com"
#ssh root@192.168.120.145 "/data/shells/03nginx_kaiqi.sh > /dev/null 2>&1 &"

#echo "14 test1.com"
#ssh root@192.168.179.5 "/data/shells/03nginx_kaiqi.sh > /dev/null 2>&1 &"

#echo "15 test2.com"
#scp -r /data/nginx.bak/192.168.162.1/2020/vhosts/test2.conf root@192.168.162.1:/data/app/nginx/conf/vhosts/test2.conf
#scp -r /data/nginx.bak/192.168.162.2/2020/vhosts/test2.conf root@192.168.162.2:/data/app/nginx/conf/vhosts/test2.conf
#scp -r /data/nginx.bak/192.168.162.9/2020/vhosts/test2.conf root@192.168.162.9:/data/app/nginx/conf/vhosts/test2.conf
#scp -r /data/nginx.bak/192.168.162.10/2020/vhosts/test2.conf root@192.168.162.10:/data/app/nginx/conf/vhosts/test2.conf


#echo "16 test3.com"
#scp -r /data/nginx.bak/192.168.162.1/2020/vhosts/test3.conf root@192.168.162.1:/data/app/nginx/conf/vhosts/test3.conf
#scp -r /data/nginx.bak/192.168.162.2/2020/vhosts/test3.conf root@192.168.162.2:/data/app/nginx/conf/vhosts/test3.conf
#scp -r /data/nginx.bak/192.168.162.9/2020/vhosts/test3.conf root@192.168.162.9:/data/app/nginx/conf/vhosts/test3.conf
#scp -r /data/nginx.bak/192.168.162.10/2020/vhosts/test3.conf root@192.168.162.10:/data/app/nginx/conf/vhosts/test3.conf



echo "ssh"
ssh root@192.168.162.1 "/data/nginx_reload.sh"
ssh root@192.168.162.2 "/data/nginx_reload.sh"
ssh root@192.168.162.9 "/data/nginx_reload.sh"
ssh root@192.168.162.10 "/data/nginx_reload.sh"



if [ $? != 0 ];then
    echo "scp failed..."
else
    echo "scp success..."
fi

4.python代码思路

1.按照表格列,获取网站清单,生成2个表格(全程开放.xls 全程关闭.xls 限时开放.xls)

2.获取3个表格中的网站名称,生成list

3.通过获取的网站名称,在shells脚本中获取关闭和开启的命令,生成新的脚本

4.拼接自己想要的脚本内容

5.代码内容

5.1.按照表格列,获取网站清单,生成2个表格(全程开放.xls 全程关闭.xls 限时开放.xls)

全程开放

import xlrd
import os
import xlwt

# -*- coding:utf-8 -*-
data = xlrd.open_workbook('test.xls')  # 打开xls文件
table = data.sheets()[0]  # 打开第一张表
nrows = table.nrows  # 获取表的行数

# 用于存储符合条件的数据
filtered_data = []

# 循环逐行提取数据并筛选
for i in range(nrows):
    if i == 0:  # 跳过第一行
        continue
    row_data = table.row_values(i)
    if row_data[7] == 1:  # 如果第一个元素等于'R4'
        filtered_data.append(row_data)

# 对 filtered_data 中的数据按照第9个元素排序
filtered_data_sorted1 = sorted(filtered_data, key=lambda x: x[7], reverse=True)



#删除多余的列
for inner_list in filtered_data_sorted1:
    del inner_list[0]

for inner_list in filtered_data_sorted1:
    del inner_list[1]


for inner_list in filtered_data_sorted1:
    del inner_list[1]
for inner_list in filtered_data_sorted1:
    del inner_list[1]

for inner_list in filtered_data_sorted1:
    del inner_list[1]
for inner_list in filtered_data_sorted1:
    del inner_list[1]

for inner_list in filtered_data_sorted1:
    del inner_list[1]
for inner_list in filtered_data_sorted1:
    del inner_list[1]

for inner_list in filtered_data_sorted1:
    del inner_list[1]
# 输出排序前的数据
print(filtered_data_sorted1)

# 关闭文件
data.release_resources()

# 创建一个新的 Excel 文件
output_workbook = xlwt.Workbook()

# 添加一个工作表
output_sheet = output_workbook.add_sheet('Sheet1')

# 设置单元格左对齐
style = xlwt.XFStyle()
alignment = xlwt.Alignment()
alignment.horz = xlwt.Alignment.HORZ_LEFT
style.alignment = alignment

# 将筛选出的数据写入到新文件中,左对齐
for i, row in enumerate(filtered_data_sorted1):
    for j, value in enumerate(row):
        output_sheet.write(i, j, value, style)

# 保存文件
output_workbook.save('全程开启.xls')

限时开放

import xlrd
import os
import xlwt

# -*- coding:utf-8 -*-
data = xlrd.open_workbook('test.xls')  # 打开xls文件
table = data.sheets()[0]  # 打开第一张表
nrows = table.nrows  # 获取表的行数

# 用于存储符合条件的数据
filtered_data = []

# 循环逐行提取数据并筛选
for i in range(nrows):
    if i == 0:  # 跳过第一行
        continue
    row_data = table.row_values(i)
    if row_data[8] == 1:  # 如果第一个元素等于'R4'
        filtered_data.append(row_data)

# 对 filtered_data 中的数据按照第9个元素排序
filtered_data_sorted1 = sorted(filtered_data, key=lambda x: x[8], reverse=True)

#删除多余的列
for inner_list in filtered_data_sorted1:
    del inner_list[0]

for inner_list in filtered_data_sorted1:
    del inner_list[1]

for inner_list in filtered_data_sorted1:
    del inner_list[1]
for inner_list in filtered_data_sorted1:
    del inner_list[1]

for inner_list in filtered_data_sorted1:
    del inner_list[1]
for inner_list in filtered_data_sorted1:
    del inner_list[1]

for inner_list in filtered_data_sorted1:
    del inner_list[1]
for inner_list in filtered_data_sorted1:
    del inner_list[1]
for inner_list in filtered_data_sorted1:
    del inner_list[1]
# 输出排序前的数据
print(filtered_data_sorted1)

# 关闭文件
data.release_resources()

# 创建一个新的 Excel 文件
output_workbook = xlwt.Workbook()

# 添加一个工作表
output_sheet = output_workbook.add_sheet('Sheet1')

# 设置单元格左对齐
style = xlwt.XFStyle()
alignment = xlwt.Alignment()
alignment.horz = xlwt.Alignment.HORZ_LEFT
style.alignment = alignment

# 将筛选出的数据写入到新文件中,左对齐
for i, row in enumerate(filtered_data_sorted1):
    for j, value in enumerate(row):
        output_sheet.write(i, j, value, style)

# 保存文件
output_workbook.save('限时开启.xls')

全程关闭

import xlrd
import os
import xlwt

# -*- coding:utf-8 -*-


# 要删除的文件列表
files_to_delete = ["./test.xls", "./全程关闭.xls", "./全程开启.xls", "./限时开启.xls"]

# 遍历文件列表,删除文件
for file_path in files_to_delete:
    if os.path.exists(file_path):
        os.remove(file_path)
        print(f"{file_path} 已删除。")
    else:
        print(f"{file_path} 不存在。")

folder_path = r'./'

# 获取目录下所有文件
file_list = os.listdir(folder_path)

# 遍历文件列表
for file_name in file_list:
    # 检查文件是否以 .xls 结尾
    if file_name.endswith('.xls'):
        # 构造新文件名
        new_file_name = os.path.join(folder_path, 'test.xls')
        # 重命名文件
        os.rename(os.path.join(folder_path, file_name), new_file_name)

data = xlrd.open_workbook('test.xls')  # 打开xls文件
table = data.sheets()[0]  # 打开第一张表
nrows = table.nrows  # 获取表的行数

# 用于存储符合条件的数据
filtered_data = []

# 循环逐行提取数据并筛选
for i in range(nrows):
    if i == 0:  # 跳过第一行
        continue
    row_data = table.row_values(i)
    if row_data[9] == 1:  # 如果第一个元素等于1
        filtered_data.append(row_data)  # 追加插入

# 对 filtered_data 中的数据按照第9个元素排序
filtered_data_sorted1 = sorted(filtered_data, key=lambda x: x[9], reverse=True)



#删除多余的列
for inner_list in filtered_data_sorted1:
    del inner_list[0]

for inner_list in filtered_data_sorted1:
    del inner_list[1]

for inner_list in filtered_data_sorted1:
    del inner_list[1]
for inner_list in filtered_data_sorted1:
    del inner_list[1]

for inner_list in filtered_data_sorted1:
    del inner_list[1]
for inner_list in filtered_data_sorted1:
    del inner_list[1]

for inner_list in filtered_data_sorted1:
    del inner_list[1]
for inner_list in filtered_data_sorted1:
    del inner_list[1]
for inner_list in filtered_data_sorted1:
    del inner_list[1]
# 输出排序前的数据
print(filtered_data_sorted1)

# 关闭文件
data.release_resources()

# 创建一个新的 Excel 文件
output_workbook = xlwt.Workbook()

# 添加一个工作表
output_sheet = output_workbook.add_sheet('Sheet1')

# 设置单元格左对齐
style = xlwt.XFStyle()
alignment = xlwt.Alignment()
alignment.horz = xlwt.Alignment.HORZ_LEFT
style.alignment = alignment

# 将筛选出的数据写入到新文件中,左对齐
for i, row in enumerate(filtered_data_sorted1):
    for j, value in enumerate(row):
        output_sheet.write(i, j, value, style)



# 保存文件
output_workbook.save('全程关闭.xls')

5.2.获取3个表格中的网站名称,生成list

全程关闭

import xlrd
import os
import xlwt

# -*- coding:utf-8 -*-
data = xlrd.open_workbook('全程关闭.xls')  # 打开xls文件
table = data.sheets()[0]  # 打开第一张表
nrows = table.nrows  # 获取表的行数

# 用于存储符合条件的数据
filtered_data = []

# 循环逐行提取数据并筛选
for i in range(nrows):
    row_data = table.row_values(i)
    if row_data[0] != 1:  
        filtered_data.append(row_data)

print(filtered_data)

# list中套list;如何转换成只有一个list [[1, 2, 3], [4, 5], [6]]
flat_list = [item for sublist in filtered_data for item in sublist]

print(flat_list)  # 输出: [1, 2, 3, 4, 5, 6]

全程开启

import xlrd
import os
import xlwt

# -*- coding:utf-8 -*-
data = xlrd.open_workbook('全程开启.xls')  # 打开xls文件
table = data.sheets()[0]  # 打开第一张表
nrows = table.nrows  # 获取表的行数

# 用于存储符合条件的数据
filtered_data = []

# 循环逐行提取数据并筛选
for i in range(nrows):
    row_data = table.row_values(i)
    if row_data[0] != 1:  
        filtered_data.append(row_data)

print(filtered_data)

# list中套list;如何转换成只有一个list [[1, 2, 3], [4, 5], [6]]
flat_list = [item for sublist in filtered_data for item in sublist]

print(flat_list)  # 输出: [1, 2, 3, 4, 5, 6]

限时开启

import xlrd
import os
import xlwt

# -*- coding:utf-8 -*-
data = xlrd.open_workbook('限时开启.xls')  # 打开xls文件
table = data.sheets()[0]  # 打开第一张表
nrows = table.nrows  # 获取表的行数

# 用于存储符合条件的数据
filtered_data = []

# 循环逐行提取数据并筛选
for i in range(nrows):
    row_data = table.row_values(i)
    if row_data[0] != 1:  
        filtered_data.append(row_data)

print(filtered_data)

# list中套list;如何转换成只有一个list [[1, 2, 3], [4, 5], [6]]
flat_list = [item for sublist in filtered_data for item in sublist]

print(flat_list)  # 输出: [1, 2, 3, 4, 5, 6]

5.3.通过获取的网站名称,在shells脚本中获取关闭和开启的命令,生成新的脚本

全程关闭

import read_qcgb
import os


def delete_files_in_directory(directory):
    for file in os.listdir(directory):
        file_path = os.path.join(directory, file)
        try:
            if os.path.isfile(file_path):
                os.remove(file_path)
            elif os.path.isdir(file_path):
                delete_files_in_directory(file_path)  # 递归删除子目录中的文件
                os.rmdir(file_path)  # 删除空的子目录
        except Exception as e:
            print(f"Failed to delete {file_path}. Reason: {e}")

# 要删除文件的目录路径
target_directory = './shells/qcgb/'

# 调用函数删除目录中的所有文件
delete_files_in_directory(target_directory)


# -*- coding:utf-8 -*-
filename = '02nginx_close.sh'  # 将这里的your_file.sh替换为你的文件名

output_filename = './shells/qcgb/02nginx_close.sh'
keywords = read_qcgb.flat_list
with open(filename, 'r', encoding='utf-8') as file:
    lines = file.readlines()

with open(output_filename, 'w', encoding='utf-8') as output_file:  # 'w' 表示写入模式
    # 遍历所有行
    i = 0
    while i < len(lines):
        # 从第二个字符开始截取并去除两端空白
        current_line = lines[i][1:].strip()

        # 检查当前行是否包含任意一个关键词
        if any(keyword in current_line for keyword in keywords):
            output_file.write(current_line + '\n')  # 写入当前行

            # 进入内部循环,写入后续的非空行
            j = i + 1
            while j < len(lines):
                # 从第二个字符开始截取并去除两端空白
                next_line = lines[j][1:].strip()

                if next_line:  # 如果下一行非空
                    output_file.write(next_line + '\n')
                    j += 1
                else:  # 如果遇到空行,跳出循环
                    break

            # 更新外层循环的索引,跳过已处理的行
            i = j
        else:
            i += 1




filename1 = '03nginx_kaiqi.sh'  # 将这里的your_file.sh替换为你的文件名

output_filename1 = './shells/qcgb/03nginx_kaiqi.sh'
keywords1 = read_qcgb.flat_list
with open(filename1, 'r', encoding='utf-8') as file:
    lines = file.readlines()

with open(output_filename1, 'w', encoding='utf-8') as output_file:  # 'w' 表示写入模式
    # 遍历所有行
    i = 0
    while i < len(lines):
        # 从第二个字符开始截取并去除两端空白
        current_line = lines[i][1:].strip()

        # 检查当前行是否包含任意一个关键词
        if any(keyword in current_line for keyword in keywords1):
            output_file.write(current_line + '\n')  # 写入当前行

            # 进入内部循环,写入后续的非空行
            j = i + 1
            while j < len(lines):
                # 从第二个字符开始截取并去除两端空白
                next_line = lines[j][1:].strip()

                if next_line:  # 如果下一行非空
                    output_file.write(next_line + '\n')
                    j += 1
                else:  # 如果遇到空行,跳出循环
                    break

            # 更新外层循环的索引,跳过已处理的行
            i = j
        else:
            i += 1



#第一行新增#!/bin/bash
with open('./shells/qcgb/02nginx_close.sh', 'r+') as file:
    content = file.read()
    file.seek(0, 0)
    file.write('#!/bin/bash\n\n' + content)

#最后一行新增
with open('./shells/qcgb/02nginx_close.sh', 'a') as file:
    file.write('''\necho "ssh"
ssh root@192.168.162.1 "/data/nginx_reload.sh"
ssh root@192.168.162.2 "/data/nginx_reload.sh"
ssh root@192.168.162.9 "/data/nginx_reload.sh"
ssh root@192.168.162.10 "/data/nginx_reload.sh"



if [ $? != 0 ];then
    echo "scp failed..."
else
    echo "scp success..."
fi


''')




#第一行新增#!/bin/bash
with open('./shells/qcgb/03nginx_kaiqi.sh', 'r+') as file:
    content = file.read()
    file.seek(0, 0)
    file.write('#!/bin/bash\n\n' + content)

#最后一行新增
with open('./shells/qcgb/03nginx_kaiqi.sh', 'a') as file:
    file.write('''\necho "ssh"
ssh root@192.168.162.1 "/data/nginx_reload.sh"
ssh root@192.168.162.2 "/data/nginx_reload.sh"
ssh root@192.168.162.9 "/data/nginx_reload.sh"
ssh root@192.168.162.10 "/data/nginx_reload.sh"



if [ $? != 0 ];then
    echo "scp failed..."
else
    echo "scp success..."
fi


''')


with open('./shells/qcgb/02nginx_close.sh', 'r', newline='') as fin:
    data = fin.read()

with open('./shells/qcgb/02nginx_close.sh', 'w', newline='\n') as fout:
    fout.write(data)


with open('./shells/qcgb/03nginx_kaiqi.sh', 'r', newline='') as fin:
    data = fin.read()

with open('./shells/qcgb/03nginx_kaiqi.sh', 'w', newline='\n') as fout:
    fout.write(data)

全程开启

import read_qckq
import os


def delete_files_in_directory(directory):
    for file in os.listdir(directory):
        file_path = os.path.join(directory, file)
        try:
            if os.path.isfile(file_path):
                os.remove(file_path)
            elif os.path.isdir(file_path):
                delete_files_in_directory(file_path)  # 递归删除子目录中的文件
                os.rmdir(file_path)  # 删除空的子目录
        except Exception as e:
            print(f"Failed to delete {file_path}. Reason: {e}")

# 要删除文件的目录路径
target_directory = './shells/kq/'

# 调用函数删除目录中的所有文件
delete_files_in_directory(target_directory)


# -*- coding:utf-8 -*-
filename = '02nginx_close.sh'  # 将这里的your_file.sh替换为你的文件名

output_filename = './shells/kq/02nginx_close.sh'
keywords = read_qckq.flat_list
with open(filename, 'r', encoding='utf-8') as file:
    lines = file.readlines()

with open(output_filename, 'w', encoding='utf-8') as output_file:  # 'w' 表示写入模式
    # 遍历所有行
    i = 0
    while i < len(lines):
        # 从第二个字符开始截取并去除两端空白
        current_line = lines[i][1:].strip()

        # 检查当前行是否包含任意一个关键词
        if any(keyword in current_line for keyword in keywords):
            output_file.write(current_line + '\n')  # 写入当前行

            # 进入内部循环,写入后续的非空行
            j = i + 1
            while j < len(lines):
                # 从第二个字符开始截取并去除两端空白
                next_line = lines[j][1:].strip()

                if next_line:  # 如果下一行非空
                    output_file.write(next_line + '\n')
                    j += 1
                else:  # 如果遇到空行,跳出循环
                    break

            # 更新外层循环的索引,跳过已处理的行
            i = j
        else:
            i += 1




filename1 = '03nginx_kaiqi.sh'  # 将这里的your_file.sh替换为你的文件名

output_filename1 = './shells/kq/03nginx_kaiqi.sh'
keywords1 = read_qckq.flat_list
with open(filename1, 'r', encoding='utf-8') as file:
    lines = file.readlines()

with open(output_filename1, 'w', encoding='utf-8') as output_file:  # 'w' 表示写入模式
    # 遍历所有行
    i = 0
    while i < len(lines):
        # 从第二个字符开始截取并去除两端空白
        current_line = lines[i][1:].strip()

        # 检查当前行是否包含任意一个关键词
        if any(keyword in current_line for keyword in keywords1):
            output_file.write(current_line + '\n')  # 写入当前行

            # 进入内部循环,写入后续的非空行
            j = i + 1
            while j < len(lines):
                # 从第二个字符开始截取并去除两端空白
                next_line = lines[j][1:].strip()

                if next_line:  # 如果下一行非空
                    output_file.write(next_line + '\n')
                    j += 1
                else:  # 如果遇到空行,跳出循环
                    break

            # 更新外层循环的索引,跳过已处理的行
            i = j
        else:
            i += 1



#第一行新增#!/bin/bash
with open('./shells/kq/02nginx_close.sh', 'r+') as file:
    content = file.read()
    file.seek(0, 0)
    file.write('#!/bin/bash\n\n' + content)

#最后一行新增
with open('./shells/kq/02nginx_close.sh', 'a') as file:
    file.write('''\necho "ssh"
echo "ssh"
ssh root@192.168.162.1 "/data/nginx_reload.sh"
ssh root@192.168.162.2 "/data/nginx_reload.sh"
ssh root@192.168.162.9 "/data/nginx_reload.sh"
ssh root@192.168.162.10 "/data/nginx_reload.sh"



if [ $? != 0 ];then
    echo "scp failed..."
else
    echo "scp success..."
fi

''')




#第一行新增#!/bin/bash
with open('./shells/kq/03nginx_kaiqi.sh', 'r+') as file:
    content = file.read()
    file.seek(0, 0)
    file.write('#!/bin/bash\n\n' + content)

#最后一行新增
with open('./shells/kq/03nginx_kaiqi.sh', 'a') as file:
    file.write('''\necho "ssh"
echo "ssh"
ssh root@192.168.162.1 "/data/nginx_reload.sh"
ssh root@192.168.162.2 "/data/nginx_reload.sh"
ssh root@192.168.162.9 "/data/nginx_reload.sh"
ssh root@192.168.162.10 "/data/nginx_reload.sh"



if [ $? != 0 ];then
    echo "scp failed..."
else
    echo "scp success..."
fi

''')


with open('./shells/kq/02nginx_close.sh', 'r', newline='') as fin:
    data = fin.read()

with open('./shells/kq/02nginx_close.sh', 'w', newline='\n') as fout:
    fout.write(data)


with open('./shells/kq/03nginx_kaiqi.sh', 'r', newline='') as fin:
    data = fin.read()

with open('./shells/kq/03nginx_kaiqi.sh', 'w', newline='\n') as fout:
    fout.write(data)

显示开放

import read_xskq
import os


def delete_files_in_directory(directory):
    for file in os.listdir(directory):
        file_path = os.path.join(directory, file)
        try:
            if os.path.isfile(file_path):
                os.remove(file_path)
            elif os.path.isdir(file_path):
                delete_files_in_directory(file_path)  # 递归删除子目录中的文件
                os.rmdir(file_path)  # 删除空的子目录
        except Exception as e:
            print(f"Failed to delete {file_path}. Reason: {e}")

# 要删除文件的目录路径
target_directory = './shells/xskq/'

# 调用函数删除目录中的所有文件
delete_files_in_directory(target_directory)


# -*- coding:utf-8 -*-
filename = '02nginx_close.sh'  # 将这里的your_file.sh替换为你的文件名

output_filename = './shells/xskq/02nginx_close.sh'
keywords = read_xskq.flat_list
with open(filename, 'r', encoding='utf-8') as file:
    lines = file.readlines()

with open(output_filename, 'w', encoding='utf-8') as output_file:  # 'w' 表示写入模式
    # 遍历所有行
    i = 0
    while i < len(lines):
        # 从第二个字符开始截取并去除两端空白
        current_line = lines[i][1:].strip()

        # 检查当前行是否包含任意一个关键词
        if any(keyword in current_line for keyword in keywords):
            output_file.write(current_line + '\n')  # 写入当前行

            # 进入内部循环,写入后续的非空行
            j = i + 1
            while j < len(lines):
                # 从第二个字符开始截取并去除两端空白
                next_line = lines[j][1:].strip()

                if next_line:  # 如果下一行非空
                    output_file.write(next_line + '\n')
                    j += 1
                else:  # 如果遇到空行,跳出循环
                    break

            # 更新外层循环的索引,跳过已处理的行
            i = j
        else:
            i += 1




filename1 = '03nginx_kaiqi.sh'  # 将这里的your_file.sh替换为你的文件名

output_filename1 = './shells/xskq/03nginx_kaiqi.sh'
keywords1 = read_xskq.flat_list
with open(filename1, 'r', encoding='utf-8') as file:
    lines = file.readlines()

with open(output_filename1, 'w', encoding='utf-8') as output_file:  # 'w' 表示写入模式
    # 遍历所有行
    i = 0
    while i < len(lines):
        # 从第二个字符开始截取并去除两端空白
        current_line = lines[i][1:].strip()

        # 检查当前行是否包含任意一个关键词
        if any(keyword in current_line for keyword in keywords1):
            output_file.write(current_line + '\n')  # 写入当前行

            # 进入内部循环,写入后续的非空行
            j = i + 1
            while j < len(lines):
                # 从第二个字符开始截取并去除两端空白
                next_line = lines[j][1:].strip()

                if next_line:  # 如果下一行非空
                    output_file.write(next_line + '\n')
                    j += 1
                else:  # 如果遇到空行,跳出循环
                    break

            # 更新外层循环的索引,跳过已处理的行
            i = j
        else:
            i += 1



#第一行新增#!/bin/bash
with open('./shells/xskq/02nginx_close.sh', 'r+') as file:
    content = file.read()
    file.seek(0, 0)
    file.write('#!/bin/bash\n\n' + content)

#最后一行新增
with open('./shells/xskq/02nginx_close.sh', 'a') as file:
    file.write('''\necho "ssh"
echo "ssh"
ssh root@192.168.162.1 "/data/nginx_reload.sh"
ssh root@192.168.162.2 "/data/nginx_reload.sh"
ssh root@192.168.162.9 "/data/nginx_reload.sh"
ssh root@192.168.162.10 "/data/nginx_reload.sh"



if [ $? != 0 ];then
    echo "scp failed..."
else
    echo "scp success..."
fi

''')




#第一行新增#!/bin/bash
with open('./shells/xskq/03nginx_kaiqi.sh', 'r+') as file:
    content = file.read()
    file.seek(0, 0)
    file.write('#!/bin/bash\n\n' + content)

#最后一行新增
with open('./shells/xskq/03nginx_kaiqi.sh', 'a') as file:
    file.write('''\necho "ssh"
echo "ssh"
ssh root@192.168.162.1 "/data/nginx_reload.sh"
ssh root@192.168.162.2 "/data/nginx_reload.sh"
ssh root@192.168.162.9 "/data/nginx_reload.sh"
ssh root@192.168.162.10 "/data/nginx_reload.sh"



if [ $? != 0 ];then
    echo "scp failed..."
else
    echo "scp success..."
fi
''')


with open('./shells/xskq/02nginx_close.sh', 'r', newline='') as fin:
    data = fin.read()

with open('./shells/xskq/02nginx_close.sh', 'w', newline='\n') as fout:
    fout.write(data)


with open('./shells/xskq/03nginx_kaiqi.sh', 'r', newline='') as fin:
    data = fin.read()

with open('./shells/xskq/03nginx_kaiqi.sh', 'w', newline='\n') as fout:
    fout.write(data)

执行代码

main.py

import subprocess

# -*- coding:utf-8 -*-

# 找到全程关闭的清单
subprocess.run(["python", "01qcgb.py"])

# 找到全程开启的清单
subprocess.run(["python", "02qckq.py"])

# 找到限时开启的清单
subprocess.run(["python", "03xskq.py"])

# 查看符合 全程关闭的网站清单
subprocess.run(["python", "04find_qcgb.py"])

# 拼接脚本
subprocess.run(["python", "05find_kq.py"])

# 拼接脚本
subprocess.run(["python", "06find_xskq.py"])

代码写的比较low,欢迎大家多多指定

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1791667.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【python】 ModuleNotFoundError: No module named datasets

成功解决“ModuleNotFoundError: No module named datasets”错误的全面指南 在Python编程中&#xff0c;遇到ModuleNotFoundError: No module named datasets这样的错误通常意味着Python解释器无法找到名为datasets的模块。datasets是一个流行的Python库&#xff0c;常用于加载…

通信技术振幅键控(ASK)调制与解调硬件实验

一、实验目的 1. 掌握用键控法产生ASK信号的方法&#xff1b; 2. 掌握ASK非相干解调的原理。 二、实验内容 1. 观察ASK已调信号的波形&#xff1b; 2. 观察ASK解调信号的波形。 三、实验器材 1. 双踪示波器&#xff1b; 2. 通信原理实验箱信号源模块、③、④、⑦号模块。…

JVM之【字节码/Class文件/ClassFile 内容解析】

说在前面的话 Java语言:跨平台的语言(write once,run anywhere) 当Java源代码成功编译成字节码后&#xff0c;如果想在不同的平台上面运行&#xff0c;则无须再次编译这个优势不再那么吸引人了。Python、PHP、Perl、Ruby、Lisp等有强大的解释器。跨平台似乎已经快成为一门语言…

面试官:如何实现大文件切片上传?

公众号&#xff1a;程序员白特&#xff0c;关注我&#xff0c;每天进步一点点~ 前端上传文件很大时,会出现各种问题,比如连接超时了,网断了,都会导致上传失败,这个时候就需要将文件切片上传,下面我们就来学习一下如何使用vue实现大文件切片上传吧 大文件为什么要切片上传 前端…

跨域请求解决方法----不允许有多个 ‘Access-Control-Allow-Origin‘ CORS 头

后端配置了代码&#xff1a; spring:application:name: spzx-server-gatewaycloud:nacos:discovery:server-addr: localhost:8848gateway:discovery:locator:enabled: trueglobalcors:cors-configurations:[/**]:allowedOriginPatterns: "*"# 允许请求中携带的头信息…

word 无法自动检测拼写

word 有时候不能分辨是哪种语言,比如把英语错认为法语 。 例如&#xff1a;Interlaayer spacace,发现误认为是法语。 1、选中Interlaayer spacace 2、点击语言下拉按钮 选择设置校对语言 发现校对语言为法语 3、手动修改校对语言为英语&#xff0c;并点击确认。 4、发现现…

负压实验室设计建设方案

随着全球公共卫生事件的频发&#xff0c;负压实验室的设计和建设在医疗机构中的重要性日益凸显。负压实验室&#xff0c;特别是负压隔离病房&#xff0c;主要用于控制传染性疾病的扩散&#xff0c;保护医护人员和周围环境的安全。广州实验室装修公司中壹联凭借丰富的实验室装修…

RN:Error: /xxx/android/gradlew exited with non-zero code: 1

问题 执行 yarn android 报错&#xff1a; 解决 这个大概率是缓存问题&#xff0c;我说一下我的解决思路 1、yarn doctor 2、根据黄色字体提示&#xff0c;说我包版本不对&#xff08;但是这个是警告应该没事&#xff0c;但是我还是装了&#xff09; npx expo install --…

IO流,文件操作

参考 Java IO 基础知识总结 | JavaGuide 史上最骚最全最详细的IO流教程&#xff0c;没有之一&#xff01; - 宜春 - 博客园 零、io-流简介 IO 即 Input/Output&#xff0c;输入和输出。数据输入到计算机内存的过程即输入&#xff0c;反之输出到外部存储&#xff08;比如数据…

使用OpenPCDet实现VoxelNext进行训练和测试:实现NuScence数据集的全局感知结果可视化

在自动驾驶和机器人技术日益蓬勃发展的今天&#xff0c;3D目标检测技术成为关键的一环&#xff0c;它赋予机器以理解和响应周围环境的能力。本文将深入探讨如何使用开源的OpenPCDet框架训练先进的VoxelNeX模型&#xff0c;并在nuScenes数据集上进行训练、测试&#xff0c;最后实…

grpc接口调用

grpc接口调用 准备依赖包clientserver 参考博客&#xff1a; Grpc项目集成到java方式调用实践 gRpc入门和springboot整合 java 中使用grpc java调用grpc服务 准备 因为需要生成代码&#xff0c;所以必备插件 安装后重启 依赖包 <?xml version"1.0" encoding&…

计算机三级等级考试

计算机等级考试&#xff1a; 一&#xff1a;理论知识考试 100分考60分 1&#xff1a;题库 二&#xff1a;技能考试 100分考60分 1&#xff1a;写文档 项目概述 功能描述 数据库设计 UML 绘 图 用例图 与 包图&#xff08;两个图&#xff09; 2&…

MYSQL一、MYSQL的了解

一、MySQL概述 1、数据库相关概念 为了方便&#xff0c;我们一般把mysql数据库管理系统简称位mysql数据库 通过可以操作数据库管理系统&#xff0c;然后再通过数据库管理系统操作&#xff08;数据库&#xff09;和&#xff08;数据库里面的数据&#xff09; 2、当前主流的关系…

Etcd Raft架构设计和源码剖析1:宏观架构

Etcd Raft架构设计和源码剖析1&#xff1a;宏观架构 | Go语言充电站 序言 Etcd提供了一个样例contrib/raftexample&#xff0c;用来展示如何使用etcd raft。这篇文章通过raftexample介绍如何使用etcd raft。 raft服务 raftexample是一个分布式KV数据库&#xff0c;客户端可…

linux mtd分区应用操作sample之某分区擦除

什么是擦除? 把flash相关的区域数据bit置为1的过程 #include <mtd/mtd-user.h> #include <mtd/mtd-abi.h> struct erase_info_user {__u32 start; // 起点 __u32 length; //长度 块大小对齐 不然报参数失败 };struct erase_info_user64 {__u64 sta…

Android约束布局ConstraintLayout的使用

Android引入约束布局的目的是为了减少布局层级的嵌套&#xff0c;从而提升渲染性能。约束布局综合线性布局、相对布局、帧布局的部分功能&#xff0c;缺点也很明显&#xff0c;就是可能要多写几行代码。所以约束布局使用时&#xff0c;还得综合考虑代码量。提升性能也并不一定非…

postman教程-15-前置脚本

上一小节我们学习了Postman生成随机数的方法&#xff0c;本小节我们讲解一下Postman前置脚本的使用方法。 Postman中的前置脚本&#xff08;Pre-request Script&#xff09;允许你在发送请求之前运行JavaScript代码。这可以用于修改请求头、查询参数、请求体等&#xff0c;或者…

Spring自带定时任务@Scheduled注解

文章目录 1. cron表达式生成器2. 简单定时任务代码示例&#xff1a;每隔两秒打印一次字符3. Scheduled注解的参数3.1 cron3.2 fixedDelay3.3 fixedRate3.4 initialDelay3.5 fixedDelayString、fixedRateString、initialDelayString等是String类型&#xff0c;支持占位符3.6 tim…

SEO 与 PPC 之间的区别

按点击付费 &#xff08;PPC&#xff09;&#xff1a; PPC 是一种网络营销技术&#xff0c;广告商在每次点击广告时向网站支付一定金额&#xff0c;广告商只为符合条件的点击付费。Google 广告、Bing 和 Yahoo 广告基于按点击付费的概念。PPC是用于在搜索引擎首页上列出的最快方…

LeetCode刷题之HOT100之合并区间

雨下了一整天&#xff0c;中午早早就回去吃饭拿快递了&#xff0c;今天拿了很多快递。我的书回来啦哈哈&#xff0c;还有好多零食&#xff0c;爽歪歪啊&#xff0c;放在下面了&#xff0c;然后准备开始做题啦&#xff01; 图一&#xff1a;左一是xh送我的&#xff0c;非常精彩…