Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 19, 2022 12:15:09

Stepan89
Зарегистрирован: 2022-10-05
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Интерфейс скрипта snmp на python

xam1816
out += f'{k} = {datetime.fromtimestamp(v).strftime(“%H:%M:%S”)}\n'
Странная штука, исправил на “Время” при нажатии выдаёт.
 Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python\lib\tkinter\__init__.py", line 1705, in __call__
    return self.func(*args)
  File "D:\Рабочий стол\time.py", line 48, in on_click
    text = format_data(data)
  File "D:\Рабочий стол\time.py", line 41, in format_data
    out += f'{k} = {datetime.fromtimestamp(v).strftime("%H:%M:%S")}\n'
TypeError: an integer is required (got type str)

Офлайн

#2 Окт. 19, 2022 12:42:55

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Интерфейс скрипта snmp на python

 datetime.fromtimestamp(int(v)).strftime("%H:%M:%S")



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Отредактировано ZerG (Окт. 19, 2022 12:43:10)

Офлайн

#3 Окт. 19, 2022 13:40:57

Stepan89
Зарегистрирован: 2022-10-05
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Интерфейс скрипта snmp на python

ZerG
Черт возьми, прав как никогда, благодарю

Офлайн

#4 Ноя. 7, 2022 14:07:45

Stepan89
Зарегистрирован: 2022-10-05
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Интерфейс скрипта snmp на python

Вновь время появилось для моей “головной боли”, да и не дают забыть о ней. Сейчас допилить немного решил это все, и обратил внимание, что дата у меня следующего формата: (минуты:секунды:миллисекунды), а не (часы:минуты:секунды). Получается нужно разделить на 60 или как?

Офлайн

#5 Ноя. 7, 2022 21:19:46

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9874
Репутация: +  854  -
Профиль   Отправить e-mail  

Интерфейс скрипта snmp на python

Stepan89
дата у меня следующего формата: (минуты:секунды:миллисекунды), а не (часы:минуты:секунды). Получается нужно разделить на 60 или как?
Миллисекунда - это одна тысячная секунды.

Stepan89
Сейчас допилить немного решил это все
Что именно? Где код твой?



Офлайн

#6 Ноя. 8, 2022 08:51:54

Stepan89
Зарегистрирован: 2022-10-05
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Интерфейс скрипта snmp на python

Вот он, ненавистный)

  
from pysnmp.entity.rfc3413.oneliner import cmdgen
from datetime import datetime
import tkinter as tk
def on_clickReturn(e):
    on_click()
def get_data_from_sensor(ip):
    cmdGen = cmdgen.CommandGenerator()
    errorIndication, errorStatus, errorIndex, \
    varBindTable = cmdgen.CommandGenerator().bulkCmd(
        cmdgen.CommunityData('test-agent', 'public'),
        cmdgen.UdpTransportTarget((ip, 161)),
        0,
        25,
        ('1.3.6.1.4.1.41927.2.15.2.6'),  # Температура
        ('1.3.6.1.4.1.41927.2.15.2.7'),  # Вольтаж
        ('1.3.6.1.4.1.41927.2.15.2.1'),  # Входящий оптический сигнал
        ('1.3.6.1.4.1.41927.2.15.1.4'),  # Время работы
    )
    if errorIndication:
        return errorIndication
    else:
        if errorStatus:
            return'%s at %s' % (
                errorStatus.prettyPrint(),
                errorIndex and varBindTable[-1][int(errorIndex) - 1] or '?'
            )
        else:
            out = {}
            dictData = {'SNMPv2-SMI::enterprises.41927.2.15.2.6.0': 'Температура',
                        'SNMPv2-SMI::enterprises.41927.2.15.2.7.0': 'Вольтаж',
                        'SNMPv2-SMI::enterprises.41927.2.15.2.1.0': 'Входящий оптический сигнал',
                        'SNMPv2-SMI::enterprises.41927.2.15.1.4.0': 'Время работы' }
            for varBindTableRow in varBindTable:
                for name, val in varBindTableRow:
                    out.update({dictData[name.prettyPrint()]: val.prettyPrint()})
            return out
def format_data(data):
    out = ''
    for k, v in data.items():
        if k == 'Время работы':
            out += f'{k} = { datetime.fromtimestamp(int(v)).strftime("%H:%M:%S")}\n'
        else:
            out += f'{k} = {v}\n'
    return out
def on_click():
    ip = sv.get()
    data = get_data_from_sensor(ip)
    text = format_data(data)
    text_area.insert(1.0, text)
root = tk.Tk()
sv = tk.StringVar()
lbl = tk.Label(text='IP ОП FORO').pack()
entry = tk.Entry(textvariable=sv, width=60)
entry.pack()
btn = tk.Button(text='получить данные', command=on_click)
btn.pack()
text_area = tk.Text(width=60, height=5)
text_area.pack()
root.bind ('<Return>', on_clickReturn)
root.mainloop()

Офлайн

#7 Ноя. 8, 2022 11:01:56

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9874
Репутация: +  854  -
Профиль   Отправить e-mail  

Интерфейс скрипта snmp на python

Stepan89 здесь писал

Stepan89
Время работы показывает в миллисекундах, хотелось бы в часах и минутах

xam1816 здесь писал
xam1816
  
out += f'{k} = {datetime.fromtimestamp(v).strftime("%H:%M:%S")}\n'

help(datetime.datetime.fromtimestamp)

fromtimestamp(...) method of builtins.type instance
timestamp[, tz] -> tz's local time from POSIX timestamp.

POSIX timestamp - это время в секундах, начиная с 00:00:00 1 января 1970-го года (день рождения операционной системы UNIX).

Если там время в миллисекундах, то 4274483 надо поделить на тысячу и взять остаток от деления на тысячу. Целую часть потом рассматривать как секунды и работать с ними как с секундами, а остаток от деления просто дописывать, потому что это миллисекунды, которых меньше тысячи (которых не хватает до одной целой секунды).



Отредактировано py.user.next (Ноя. 8, 2022 11:03:17)

Офлайн

#8 Ноя. 8, 2022 11:08:15

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Интерфейс скрипта snmp на python

Может пора уже таки прочитать учебник по питону? А то каждая строка у вас - угадай поле чудес -
если не угадалось пишем на форум
При том что все вопросы именно из учебника



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#9 Ноя. 8, 2022 11:40:15

Stepan89
Зарегистрирован: 2022-10-05
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Интерфейс скрипта snmp на python

*thanks*

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version