Я создаю с помощью gradio программу, которая подключается к коммутаторам через API и может выполнять различные операции.
Код работает нормально, но я бы хотел, чтобы выходной текстовый ящик «подавался» в реальном режиме. -time,
Это означает, что я не хочу видеть результаты после завершения всего цикла.
Я хочу, чтобы каждый раз, когда в файлах назначения появляется новая строка, чтобы видеть их вывод в выходном тексте область.
import gradio as gr
import ipaddress
import requests
from requests.auth import HTTPBasicAuth
###SWITCH###
def switch_ver(ip):
ip_addr = ip.split()
for i in ip_addr:
ip_addr = list(ipaddress.ip_network(i))
try:
basic=HTTPBasicAuth('some','password')
login = requests.post('http://'+i+':80/rest/v7/login-sessions', auth=basic)
get_ver = requests.get('http://'+i+':80/rest/v7/system/status')
get_ver = get_ver.json()
get_ver = get_ver['firmware_version']
get_ver = get_ver
with open('switches_good_results.txt', 'a+') as sw:
results = 'Switch version for {} is: {} \n'.format(i, get_ver)
sw.write(results)
#return 'Switch version for {} is: {} \n'.format(i, get_ver)
except requests.exceptions.ConnectTimeout:
timeout = 'Could not connect to switch: '+i+' REQUEST TIMED OUT\n'
with open('switches_bad_results.txt', 'a+') as sw:
sw.write(timeout)
with open('switches_good_results.txt','r') as switches_bad, open('switches_bad_results.txt', 'r') as switches_good:
summary = switches_bad.read() + switches_good.read()
return (summary),['switches_good_results.txt', 'switches_bad_results.txt']
###IPBlockerK###
def block_ip(ip):
ip_addr = ip.split()
for i in ip_addr:
ip_addr = list(ipaddress.ip_network(i))
with open('fortigate.txt', 'a+') as f:
f.write('ping ' + i + '\n')
if i in f.read():
return i + ' ' ' is a duplicate!'
with open('fortigate.txt', 'r') as f:
return f.read()
with gr.Blocks(title = 'Switcher') as switches_ver:
gr.Markdown('Welcome to IPBlocker')
with gr.Tab(label = 'IPBlocker'):
with gr.Row():
ips_to_block = gr.Textbox(label = " ", lines = 10, PlaceHolder=('Please fill Ips to block'))
with gr.Tab(label = 'Switcher'):
with gr.Row():
with gr.Column():
switch_box = gr.Textbox(label = 'Switches', lines = 10, placeholder='Please fill switches IPs...')
show_ver = gr.Button('Show current switches version')
upgrade_ver = gr.Button('Upgrade selected switches')
output_textbox = gr.Textbox(label='Results',lines = 10)
with gr.Column():
output_file = gr.File(['switches_good_results.txt', 'switches_bad_results.txt'])
show_ver.click(fn=switch_ver, inputs = switch_box, outputs = [output_textbox, output_file])
switches_ver.launch()
Я создаю с помощью gradio программу, которая подключается к коммутаторам через API и может выполнять различные операции. Код работает нормально, но я бы хотел, чтобы выходной текстовый ящик «подавался» в реальном режиме. -time, Это означает, что я не хочу видеть результаты после завершения всего цикла. Я хочу, чтобы каждый раз, когда в файлах назначения появляется новая строка, чтобы видеть их вывод в выходном тексте область. [code]import gradio as gr import ipaddress import requests from requests.auth import HTTPBasicAuth
###SWITCH### def switch_ver(ip): ip_addr = ip.split() for i in ip_addr: ip_addr = list(ipaddress.ip_network(i)) try: basic=HTTPBasicAuth('some','password') login = requests.post('http://'+i+':80/rest/v7/login-sessions', auth=basic) get_ver = requests.get('http://'+i+':80/rest/v7/system/status') get_ver = get_ver.json() get_ver = get_ver['firmware_version'] get_ver = get_ver with open('switches_good_results.txt', 'a+') as sw: results = 'Switch version for {} is: {} \n'.format(i, get_ver) sw.write(results) #return 'Switch version for {} is: {} \n'.format(i, get_ver)
except requests.exceptions.ConnectTimeout: timeout = 'Could not connect to switch: '+i+' REQUEST TIMED OUT\n' with open('switches_bad_results.txt', 'a+') as sw: sw.write(timeout)
with open('switches_good_results.txt','r') as switches_bad, open('switches_bad_results.txt', 'r') as switches_good: summary = switches_bad.read() + switches_good.read()
###IPBlockerK### def block_ip(ip): ip_addr = ip.split() for i in ip_addr: ip_addr = list(ipaddress.ip_network(i)) with open('fortigate.txt', 'a+') as f: f.write('ping ' + i + '\n') if i in f.read(): return i + ' ' ' is a duplicate!'
with open('fortigate.txt', 'r') as f: return f.read()
with gr.Blocks(title = 'Switcher') as switches_ver: gr.Markdown('Welcome to IPBlocker') with gr.Tab(label = 'IPBlocker'): with gr.Row(): ips_to_block = gr.Textbox(label = " ", lines = 10, PlaceHolder=('Please fill Ips to block')) with gr.Tab(label = 'Switcher'): with gr.Row(): with gr.Column(): switch_box = gr.Textbox(label = 'Switches', lines = 10, placeholder='Please fill switches IPs...') show_ver = gr.Button('Show current switches version') upgrade_ver = gr.Button('Upgrade selected switches') output_textbox = gr.Textbox(label='Results',lines = 10) with gr.Column(): output_file = gr.File(['switches_good_results.txt', 'switches_bad_results.txt']) show_ver.click(fn=switch_ver, inputs = switch_box, outputs = [output_textbox, output_file])
Здравствуйте, macOS (Sonoma) + Pycharm + Python 3.12 Я разрабатываю неправильный проект обнаружения томатов с использованием yolov8 + gradio + надзор. Я могу загрузить визуальные эффекты в интерфейсе Gradio, родина открывается, здесь нет проблем....
У меня есть система Linux с брандмауэром, планшет Android и ноутбук с Windows, подключенные к сети Wi-Fi Linux. Брандмауэр Linux настроен так, что в его цепочке FORWARD в качестве политики по умолчанию используется DROP. Проблема, которую мне нужно...
У меня есть система Linux с брандмауэром, планшет Android и ноутбук с Windows, подключенные к сети Wi-Fi Linux. Брандмауэр Linux настроен так, что в его цепочке FORWARD в качестве политики по умолчанию используется DROP. Проблема, которую мне нужно...