Quantcast
Channel: Linux.org.ru: Форум (тех. форум)
Viewing all 73859 articles
Browse latest View live

R&D в области High-Performance Computing в Huawei

$
0
0

В московскую лабораторию математического моделирования и оптимизации компании Huawei нужны люди, заинтересованные в R&D в области High-Performance Computing и оптимизации сетевых протоколов для HPC/Data Center сетей.

Приоритетные для нашей лаборатории направления HPC:

  • Congestion и flow control в HPC/DC сетях
  • Коллективные операции MPI и communication middle-ware
  • Network offloading и In-network computing

Мы приветствуем кандидатов, обладающих знаниями в одной или нескольких из перечисленных областей:

  • Математика (дискретная оптимизация, алгоритмы на графах)
  • Сетевые протоколы, TCP/IP, RDMA, InfiniBand
  • Параллельное программирование, MPI
  • Распределенные вычисления и High-Performance Computing

Если Вы опытный инженер или студент, подыскивающий долгосрочную стажировку, и у Вас имеется желание заниматься исследованиями на стыке сетей, HPC и математики, присылайте CV и вопросы на почту или в LinkedIn.

 , ,


Проблемы со звуком. Плоский звук. Материнка Asus

$
0
0

Приветствую!
Купил значит материнку Asus P8H77V-LE 1155 в 2014 году. Всё вроде было хорошо. Колонки SVEN 25Вт подключены были к разъёму 3.5 на материнке. В них я втыкал наушники Pioneer и звук был хороший, хотя уже сомнения... Потом колонки отнёс в офис и подключил наушники напрямую и ппц, звук тише и площе. Но(!) подключаю к разъёму 3.5 спереди корпуса и звук отличный. Звуковуха на материнке Realtek, если это что-то даст.
Одинаково на онтопике и оффтопике. Что может быть, кто сталкивался?

Заранее, благодарю!

 , , ,

Wine. Nvidia. Tearing

$
0
0

После запуска полноэкранного приложения через wine, если приложение меняет разрешение экрана, а по завершению возвращает к исходному, сбиваются настройки видеокарты, в которых прописаны параметры, избавляющие от тиринга. Появляется тиринг, который лечится только перезапуском машины.

Есть ли более оптимальное решение проблемы?
Как вернуть настройки после завершения wine-приложения или, быть может, возможен запуск вайн не затрагивающий настройки?

Для устранения тиринга в /etc/X11/xorg.conf прописано так:

Section "Device"
  Option "TripleBuffer" "True"
  Option     "TearFree"   "on"
...
Section "Screen"
  Option "metamodes" "nvidia-auto-select +0+0 { ForceFullCompositionPipeline = On }"

Wine-приложение запускаю так:

#!/bin/bash
sleep 2
xrandr -s 640x480
sleep 1
cd "/mnt/games/exolondx/"
wine "exolon dx.exe"
sleep 1
xrandr -s 1920x1080
exit

 , ,

отвалился usb-hdd

$
0
0

Привет. Компьютер перестал видеть внешний жёсткий диск (подключённый напрямую к нестабилизированному блоку питания, ампераж достаточный), лампочка на жёстком диске горит.

pi@bpi-iot-ros-ai:~ $ sudo cat  /var/log/messages | grep sdb
Feb  6 21:52:40 bpi-iot-ros-ai kernel: [612090.483168] sd 2:0:0:0: [sdb] 488397168 512-byte logical blocks: (250 GB/232 GiB)
Feb  6 21:52:40 bpi-iot-ros-ai kernel: [612090.484132] sd 2:0:0:0: [sdb] Write Protect is off
Feb  6 21:52:40 bpi-iot-ros-ai kernel: [612090.485029] sd 2:0:0:0: [sdb] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
Feb  6 21:52:40 bpi-iot-ros-ai kernel: [612090.518031]  sdb: sdb1
Feb  6 21:52:40 bpi-iot-ros-ai kernel: [612090.521639] sd 2:0:0:0: [sdb] Attached SCSI disk
Feb  6 21:52:41 bpi-iot-ros-ai kernel: [612091.490442] scsi 2:0:0:0: [sdb] killing request
Feb  6 21:52:41 bpi-iot-ros-ai kernel: [612091.490547] scsi 2:0:0:0: [sdb] Unhandled error code
Feb  6 21:52:41 bpi-iot-ros-ai kernel: [612091.490566] scsi 2:0:0:0: [sdb]  Result: hostbyte=0x01 driverbyte=0x00
Feb  6 21:52:41 bpi-iot-ros-ai kernel: [612091.490588] scsi 2:0:0:0: [sdb] CDB: cdb[0]=0x28: 28 00 00 08 1a c0 00 00 08 00
Feb  6 21:52:41 bpi-iot-ros-ai kernel: [612091.492563] lost page write due to I/O error on sdb1
Feb  6 21:52:41 bpi-iot-ros-ai kernel: [612091.492619] lost page write due to I/O error on sdb1
Feb  6 21:52:41 bpi-iot-ros-ai kernel: [612091.492653] lost page write due to I/O error on sdb1
Feb  6 21:52:41 bpi-iot-ros-ai kernel: [612091.492689] lost page write due to I/O error on sdb1
Feb  6 21:52:41 bpi-iot-ros-ai kernel: [612091.492721] lost page write due to I/O error on sdb1
Feb  6 21:52:41 bpi-iot-ros-ai kernel: [612091.492761] lost page write due to I/O error on sdb1
Feb  6 21:52:41 bpi-iot-ros-ai kernel: [612091.492803] lost page write due to I/O error on sdb1
Feb  6 21:52:45 bpi-iot-ros-ai kernel: [612095.611515] sd 3:0:0:0: [sdb] 488397168 512-byte logical blocks: (250 GB/232 GiB)
Feb  6 21:52:45 bpi-iot-ros-ai kernel: [612095.612342] sd 3:0:0:0: [sdb] Write Protect is off
Feb  6 21:52:45 bpi-iot-ros-ai kernel: [612095.613225] sd 3:0:0:0: [sdb] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
Feb  6 21:52:45 bpi-iot-ros-ai kernel: [612095.645145]  sdb: sdb1
Feb  6 21:52:45 bpi-iot-ros-ai kernel: [612095.648972] sd 3:0:0:0: [sdb] Attached SCSI disk
Feb  6 21:52:52 bpi-iot-ros-ai kernel: [612101.810383] scsi 3:0:0:0: [sdb] killing request
Feb  6 21:52:52 bpi-iot-ros-ai kernel: [612101.810461] scsi 3:0:0:0: [sdb] Unhandled error code
Feb  6 21:52:52 bpi-iot-ros-ai kernel: [612101.810473] scsi 3:0:0:0: [sdb]  Result: hostbyte=0x01 driverbyte=0x00
Feb  6 21:52:52 bpi-iot-ros-ai kernel: [612101.810491] scsi 3:0:0:0: [sdb] CDB: cdb[0]=0x28: 28 00 00 00 03 a8 00 00 08 00

как вы считаете, что именно произошло и каковы пути решения? заранее спасибо

 , , , ,

SNMP + python не могу получить доступ к строке таблицы

$
0
0

Всем привет!

Есть агент snmp, написанный на python на основе библиотеки netsnmpagent. Со скалярными переменными всё работает, проблема с таблицами.

Сам агент

#!/usr/bin/env python36

import sys, os, signal, time
import optparse, threading, subprocess

sys.path.insert(0, os.path.dirname(os.getcwd()))
import netsnmpagent

prgname = sys.argv[0]

parser = optparse.OptionParser()
parser.add_option(
	"-i",
	"--interval",
	dest="interval",
	help="Set interval in seconds between data updates",
	default=30
)
parser.add_option(
	"-m",
	"--mastersocket",
	dest="mastersocket",
	help="Sets the transport specification for the master agent's AgentX socket",
	default="/var/run/agentx/master"
)
parser.add_option(
	"-p",
	"--persistencedir",
	dest="persistencedir",
	help="Sets the path to the persistence directory",
	default="/var/lib/net-snmp"
)
(options, args) = parser.parse_args()

headerlogged = 0
def LogMsg(msg):
	""" Writes a formatted log message with a timestamp to stdout. """

	global headerlogged

	if headerlogged == 0:
		print("{0:<8} {1:<90} {2}".format(
			"Time",
			"MainThread",
			"UpdateSNMPObjsThread"
		))
		print("{0:-^120}".format("-"))
		headerlogged = 1

	threadname = threading.currentThread().name

	funcname = sys._getframe(1).f_code.co_name
	if funcname == "<module>":
		funcname = "Main code path"
	elif funcname == "LogNetSnmpMsg":
		funcname = "net-snmp code"
	else:
		funcname = "{0}()".format(funcname)

	if threadname == "MainThread":
		logmsg = "{0} {1:<112.112}".format(
			time.strftime("%T", time.localtime(time.time())),
			"{0}: {1}".format(funcname, msg)
		)
	else:
		logmsg = "{0} {1:>112.112}".format(
			time.strftime("%T", time.localtime(time.time())),
			"{0}: {1}".format(funcname, msg)
		)
	print(logmsg)

def LogNetSnmpMsg(priority, msg):
	""" Log handler for log messages generated by net-snmp code. """

	LogMsg("[{0}] {1}.".format(priority, msg))

# Create an instance of the netsnmpAgent class
try:
	agent = netsnmpagent.netsnmpAgent(
		AgentName      = "ThreadingAgent",
		MasterSocket   = options.mastersocket,
		PersistenceDir = options.persistencedir,
                MIBFiles = ["/usr/share/snmp/mibs/roschat-m0-mib.mib"],
		LogHandler = LogNetSnmpMsg
	)
except netsnmpagent.netsnmpAgentException as e:
	print("{0}: {1}".format(prgname, e))
	sys.exit(1)


from params import Params
params = Params(agent) #здесь вызывается другой скрипт, в котором формируется таблица
params.register()

def UpdateSNMPObjs():
        """ Function that does the actual data update. """

        global threadingString

        LogMsg("Beginning data update.")
        data = ""
        params.update()
        LogMsg("Data update done, exiting thread.")

def UpdateSNMPObjsAsync():
	""" Starts UpdateSNMPObjs() in a separate thread. """

	if threading.active_count() == 1:
		LogMsg("Creating thread for UpdateSNMPObjs().")
		t = threading.Thread(target=UpdateSNMPObjs, name="UpdateSNMPObjsThread")
		t.daemon = True
		t.start()
	else:
		LogMsg("Data update still active, data update interval too low?")

try:
	agent.start()
except netsnmpagent.netsnmpAgentException as e:
	LogMsg("{0}: {1}".format(prgname, e))
	sys.exit(1)

LogMsg("Doing initial call to UpdateSNMPObjsAsync().")
UpdateSNMPObjsAsync()

def TermHandler(signum, frame):
	global loop
	loop = False
signal.signal(signal.SIGINT, TermHandler)
signal.signal(signal.SIGTERM, TermHandler)

def AlarmHandler(signum, frame):
	global loop, timer_triggered

	LogMsg("Got triggered by SIGALRM.")

	if loop:
		timer_triggered = True

		UpdateSNMPObjsAsync()

		signal.signal(signal.SIGALRM, AlarmHandler)
		signal.setitimer(signal.ITIMER_REAL, float(options.interval))
msg = "Installing SIGALRM handler triggered every {0} seconds."
msg = msg.format(options.interval)
LogMsg(msg)
signal.signal(signal.SIGALRM, AlarmHandler)
signal.setitimer(signal.ITIMER_REAL, float(options.interval))

LogMsg("Now serving SNMP requests, press ^C to terminate.")

loop = True
while loop:
	timer_triggered = False
	res = agent.check_and_process()
	if res == -1 and not timer_triggered and loop:
		loop = False
		LogMsg("Error {0} in SNMP packet processing!".format(res))
	elif loop and timer_triggered:
		LogMsg("net-snmp's check_and_process() returned due to SIGALRM (res={0}), doing another loop.".format(res))
	elif loop:
		LogMsg("net-snmp's check_and_process() returned (res={0}), doing another loop.".format(res))

LogMsg("Terminating.")
agent.shutdown()

Скрипт params.py, в котором формируется таблица

import sys,os
from dbusclient import Dbusclient
import yaml
import json

if __name__ == '__main__':
    sys.exit(0)

config = yaml.safe_load(open('/etc/roschat-snmp/conf.d/default.yml'))['snmp']

class Params:
    def __init__(self, agent):
        self.agent = agent
        self.dbus = Dbusclient(config['object'], config['path'], config['iface'])
        self.state = None

    def register(self):
        mib = "ROSCHAT-M0-MIB::roschat-m0."
        self.publicNetwork = self.agent.Integer32(
            oidstr = mib+"publicNetwork",
            # BoolType (1 - no, 2 - yes)
            initval = 1
        )
        self.domainCertificate = self.agent.Integer32(
            oidstr = mib+"domainCertificate",
            initval = 1
        )
        self.domainCertificateTime = self.agent.TimeTicks(
            oidstr = mib+"domainCertificateTime"
        )
        self.userLicense = self.agent.Integer32(
            oidstr = mib+"userLicense",
            initval = 1
        )
        self.userLicenseLimit = self.agent.Integer32(
            oidstr = mib+"userLicenseLimit",
            initval = 0
        )
        self.userLicenseUsed = self.agent.Integer32(
            oidstr = mib+"userLicenseUsed",
            initval = 0
        )
        self.userLicenseTime = self.agent.TimeTicks(
            oidstr = mib+"userLicenseTime"
        )
        self.pushService = self.agent.Integer32(
            oidstr = mib+"pushService",
            initval = 1
        )
        self.pushServiceApple = self.agent.Integer32(
            oidstr = mib+"pushServiceApple",
            initval = 1
        )
        self.pushServiceGoogle = self.agent.Integer32(
            oidstr = mib+"pushServiceGoogle",
            initval = 1
        )
        self.finishElement = self.agent.Integer32(
            oidstr = mib+"finishElement",
            initval = 0
        )
        #здесь формируются столбцы таблицы
        self.serviceTable = self.agent.Table(
            oidstr  = mib+"serviceTable",
	    indexes = [
		self.agent.Integer32()
	    ],
	    columns = [
		(1, self.agent.Integer32(), True),
		(2, self.agent.DisplayString(""), True),
		(3, self.agent.Integer32(), True),
		(4, self.agent.TimeTicks(), True)
	    ],
            counterobj = self.agent.Unsigned32(
                    		#oidstr = "ROSCHAT-M0-MIB::serviceTable.serviceEntry"
                    		oidstr = "ROSCHAT-M0-MIB::serviceEntry"
            ),
	    extendable = True
        )
    # TODO: add providerTable
    def updateServiceTable(self, prev_services_state = [{"name": "", "running": False}]):
        print('UPDate service table')
        serviceState = 0
        serviceStateTime = 0
        self.serviceTable.clear()        
        for i, service in enumerate(self.state['services']):
            serviceName = service['name'].replace('.service', '')
            if service['running']:
                serviceState = 3
                serviceStateTime = service['uptime']
            else:
                serviceState = 1
                serviceStateTime = service['downtime']
            for prevservice in prev_services_state:
                if service['name'] == prevservice['name'] and not service['running'] == prevservice['running']:
                    print('Change service state')
                    if service['running']:
                        self.sendTrap(14, "serviceTable", "s", serviceName)
                    else:
                        self.sendTrap(13, "serviceTable", "s", serviceName)
            #Здесь формируются строки таблицы
            row = self.serviceTable.addRow([self.agent.Integer32(i)])
            row.setRowCell(1, self.agent.Integer32(i))
            row.setRowCell(2, self.agent.DisplayString(serviceName))
            row.setRowCell(3, self.agent.Integer32(serviceState))
            row.setRowCell(4, self.agent.TimeTicks(serviceStateTime))
            
            #return self.agent.serviceTable.value()

    def valueServiceTable(self):
        return self.agent.serviceTable.value()

    def sendTrap(self, trapcode=0, oid="", valuetype="s", value=""):
        config = json.loads(open("/opt/roschat-ms/settings/snmp/snmpConfig.json", "r").read())
        os.system("snmptrap -v 1 -c public  "+config['snmp_trap_host']+":"+config['snmp_trap_port']+" ROSCHAT-M0-MIB::roschat-m0 '' 6 "+str(trapcode)+" '0' ROSCHAT-M0-MIB::roschat-m0."+oid+" "+valuetype+" "+str(value))
            
    def update(self, data=None):
        # TODO: оптимизировать, убрать лишние if, etc
        prev_state = self.state
        if prev_state == None:
            prev_state = {
                "network": {"ok": False},
                "pushStatus": {"status": False},
                "certs": {"errors": []},
                "services": [{"name": "", "running": False}]
            }
        self.state = self.dbus.GetState()
        self.updateServiceTable(prev_state['services']).value()
        if self.state['network']['ok']:
            publicNetwork = 2 # True
            if not self.state['network']['ok'] == prev_state['network']['ok']:
                self.sendTrap(2, "publicNetwork", "i",  publicNetwork)
        else:
            publicNetwork = 1 # False
            if not self.state['network']['ok'] == prev_state['network']['ok']:
                self.sendTrap(1, "publicNetwork", "i",  publicNetwork)
        self.publicNetwork.update(publicNetwork)

        if 'certs' in self.state:
            domainCertificate = 2 # True
            if 'errors' in self.state['certs']:
                if len(self.state['certs']['errors']) > 0:
                    domainCertificate = 1 #False
                    if not self.state['certs']['errors'] == prev_state['certs']['errors']:
                        self.sendTrap(3, "domainCertificate", "i",  domainCertificate)
                else:
                    if not self.state['certs']['errors'] == prev_state['certs']['errors']:
                        self.sendTrap(4, "domainCertificate", "i",  domainCertificate)
            self.domainCertificate.update(domainCertificate)

        if 'pushStatus' in self.state and 'status' in self.state['pushStatus']:
            pushService = 2 # True
            if not self.state['pushStatus']['status'] == prev_state['pushStatus']['status']:
                self.sendTrap(8, "pushService", "i",  pushService)
        else:
            pushService = 1 # False
            if self.state['pushStatus'] and not self.state['pushStatus']['status'] == prev_state['pushStatus']['status']:
                self.sendTrap(7, "pushService", "i",  pushService)
        self.pushService.update(pushService)
            
        self.domainCertificateTime.update(2) # TODO: разобраться с типом данных
        self.userLicense.update(2) # TODO: Что это?
        self.userLicenseLimit.update(203) # TODO: И это тоже что?

Код не мой, поэтому не удивляйтесь комментариям в конце скрипта

MIB файл

ROSCHAT-M0-MIB DEFINITIONS ::= BEGIN
               
IMPORTS
  OBJECT-TYPE
    FROM RFC1155-SMI
  roschat-m
    FROM ROSCHAT-M-MIB
  TRAP-TYPE
    FROM RFC-1215;
                  
roschat-m0   OBJECT IDENTIFIER ::= { roschat-m 1 }
                    
DisplayString  ::= OCTET STRING
DateTimeString ::= DisplayString (SIZE (0..20))
StateType      ::= INTEGER {
                       crush(1),
                       warning(2),
                       ok(3),
                       unknown(4)
                      }
                      
BoolType       ::= INTEGER {
                       no(1),
                       yes(2)
                      }
 --  MIB-II (same prefix as MIB-I)
                                                                         
-- *********************************************************************
-- **************** SCALAR OBJECTS *************************************
-- *********************************************************************
publicNetwork OBJECT-TYPE
      SYNTAX  BoolType
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
          "Status access to public network"
      ::= { roschat-m0 1 }
domainCertificate OBJECT-TYPE
      SYNTAX  BoolType
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
          "Validating domain certificate"
      ::= { roschat-m0 2 }
domainCertificateTime OBJECT-TYPE
      SYNTAX  TimeTicks
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
          "Time limit of domain certificate"
      ::= { roschat-m0 3 }
      
userLicense OBJECT-TYPE
      SYNTAX  BoolType
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
          "Validating license"
      ::= { roschat-m0 4 }
userLicenseLimit OBJECT-TYPE
      SYNTAX  INTEGER
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
          "User limit of license"
      ::= { roschat-m0 5 }
userLicenseUsed OBJECT-TYPE
      SYNTAX  INTEGER
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
          "Used user of license"
      ::= { roschat-m0 6 }
userLicenseTime OBJECT-TYPE
      SYNTAX  TimeTicks
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
          "Time limit of license"
      ::= { roschat-m0 7 }
      
pushService OBJECT-TYPE
      SYNTAX  BoolType
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
          "Status access to push service"
      ::= { roschat-m0 8 }
      
pushServiceApple OBJECT-TYPE
      SYNTAX  BoolType
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
          "Status access to push service Apple (APNS)"
      ::= { roschat-m0 9 }
      
pushServiceGoogle OBJECT-TYPE
      SYNTAX  BoolType
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
          "Status access to push service Google (GCM)"
      ::= { roschat-m0 10 }
finishElement OBJECT-TYPE
      SYNTAX  INTEGER
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
          "Terminated element"
      ::= { roschat-m0 32767 }
               
-- *********************************************************************
-- **************** TABLE OBJECTS **************************************
-- ********************************************************************* 
-- *********************************************************************
-- Service Table
-- *********************************************************************
serviceTable OBJECT-TYPE
      SYNTAX  SEQUENCE OF ServiceEntry
      ACCESS  not-accessible
      STATUS  mandatory
      DESCRIPTION
          "Service table"   
      ::= { roschat-m0 11 }
      serviceEntry OBJECT-TYPE
            SYNTAX  ServiceEntry
            ACCESS  not-accessible
            STATUS  mandatory
            INDEX { ServiceNum }        
      ::= { serviceTable 1 }
      ServiceEntry ::= SEQUENCE {
                               serviceNum         INTEGER,
                               serviceName        DisplayString,
                               serviceState       StateType,
                               serviceStateTime   DateTimeString
                              }
            serviceNum OBJECT-TYPE
                  SYNTAX  INTEGER
                  ACCESS  read-only
                  STATUS  mandatory
                  DESCRIPTION
                      "# Service"
                  ::= { serviceEntry 1 }
            serviceName  OBJECT-TYPE
                  SYNTAX  DisplayString (SIZE (0..255))
                  ACCESS  read-only
                  STATUS  mandatory
                  DESCRIPTION
                      "Service name"
                  ::= { serviceEntry 2 }
            serviceState  OBJECT-TYPE
                  SYNTAX  StateType
                  ACCESS  read-only
                  STATUS  mandatory
                  DESCRIPTION
                      "Service state"
                  ::= { serviceEntry 3 }
                                    
            serviceStateTime OBJECT-TYPE
                  SYNTAX  DateTimeString
                  ACCESS  read-only
                  STATUS  mandatory
                  DESCRIPTION
                      "Service setted time"
                  ::= { serviceEntry 4 }
                              
-- *********************************************************************
-- Provider Table
-- *********************************************************************                                             
providerTable OBJECT-TYPE
      SYNTAX  SEQUENCE OF ProviderEntry
      ACCESS  not-accessible
      STATUS  mandatory
      DESCRIPTION
          "Provider table"
      ::= { roschat-m0 12 }
      providerEntry OBJECT-TYPE
            SYNTAX  ProviderEntry
            ACCESS  not-accessible
            STATUS  mandatory
            INDEX { providerNum }
            ::= { providerTable 1 }
      ProviderEntry ::= SEQUENCE {
                               providerNum         INTEGER,
                               providerName        DisplayString,
                               providerDescription DisplayString,
                               providerAdress      DisplayString,
                               providerState       StateType,
                              }
            providerNum OBJECT-TYPE
                  SYNTAX  INTEGER
                  ACCESS  read-only
                  STATUS  mandatory
                  DESCRIPTION
                      "# Provider"
                  ::= { providerEntry 1 }
                  
            providerName  OBJECT-TYPE
                  SYNTAX  DisplayString (SIZE (1..255))
                  ACCESS  read-only
                  STATUS  mandatory
                  DESCRIPTION
                      "Provider name"
                  ::= { providerEntry 2 }
                  
            providerDescription  OBJECT-TYPE
                  SYNTAX  DisplayString
                  ACCESS  read-only
                  STATUS  mandatory
                  DESCRIPTION
                      "Provider description"
                  ::= { providerEntry 3 }
                  
            providerAdress  OBJECT-TYPE
                  SYNTAX  DisplayString (SIZE (0..32))
                  ACCESS  read-only
                  STATUS  mandatory
                  DESCRIPTION
                      "Provider adress"
                  ::= { providerEntry 4 }
            providerState  OBJECT-TYPE
                  SYNTAX  StateType
                  ACCESS  read-only
                  STATUS  mandatory
                  DESCRIPTION
                      "Provider state"
                  ::= { providerEntry 5 }
-- *********************************************************************
-- **************** TRAPS **********************************************
-- ********************************************************************* 
agentOffTrap TRAP-TYPE
        ENTERPRISE roschat-m0
        DESCRIPTION
                "Agent Off"
        ::= 1
agentOnTrap TRAP-TYPE
        ENTERPRISE roschat-m0
        DESCRIPTION
                "Agent On"
        ::= 2
        
publicNetworkNo  TRAP-TYPE
        ENTERPRISE roschat-m0
        VARIABLES { publicNetwork }
        DESCRIPTION
                "Denied access to public network"
        ::= 3
        
publicNetworkYes  TRAP-TYPE
        ENTERPRISE roschat-m0
        VARIABLES { publicNetwork }
        DESCRIPTION
                "Access to public network is present"
        ::= 4
        
domainCertificateInvalid TRAP-TYPE
        ENTERPRISE roschat-m0
        VARIABLES { domainCertificate }
        DESCRIPTION
                "Invalide domain certificate"
        ::= 5
        
domainCertificateValid TRAP-TYPE
        ENTERPRISE roschat-m0
        VARIABLES { domainCertificate }
        DESCRIPTION
                "Valide domain certificate"
        ::= 6
        
userLicenseInvalid TRAP-TYPE
        ENTERPRISE roschat-m0
        VARIABLES { userLicense }
        DESCRIPTION
                "Invalide user license"
        ::= 7
        
domainCertificateValid TRAP-TYPE
        ENTERPRISE roschat-m0
        VARIABLES { userLicense }
        DESCRIPTION
                "Valide user license"
        ::= 8
        
pushServiceNo  TRAP-TYPE
        ENTERPRISE roschat-m0
        VARIABLES { pushService }
        DESCRIPTION
                "Denied access to push service"
        ::= 9
        
pushServiceYes  TRAP-TYPE
        ENTERPRISE roschat-m0
        VARIABLES { pushService }
        DESCRIPTION
                "Denied access to push service"
        ::= 10
        
pushServiceAplleNo  TRAP-TYPE
        ENTERPRISE roschat-m0
        VARIABLES { pushServiceApple }
        DESCRIPTION
                "Denied access to push service Aplle"
        ::= 11
        
pushServiceAplleYes  TRAP-TYPE
        ENTERPRISE roschat-m0
        VARIABLES { pushServiceApple }
        DESCRIPTION
                "Denied access to push service Aplle"
        ::= 12
        
pushServiceGoogleNo  TRAP-TYPE
        ENTERPRISE roschat-m0
        VARIABLES { pushServiceGoogle }
        DESCRIPTION
                "Denied access to push service Google"
        ::= 13
        
pushServiceGoogleYes  TRAP-TYPE
        ENTERPRISE roschat-m0
        VARIABLES { pushServiceGoogle }
        DESCRIPTION
                "Denied access to push service Google"
        ::= 14
                
serviceStateCrush  TRAP-TYPE
        ENTERPRISE roschat-m0
        VARIABLES { serviceState }
        DESCRIPTION
                "Service state is Crush"
        ::= 15
        
serviceStateOk  TRAP-TYPE
        ENTERPRISE roschat-m0
        VARIABLES { serviceState }
        DESCRIPTION
                "Service state is Ok"
        ::= 16
                
providerStateCrush  TRAP-TYPE
        ENTERPRISE roschat-m0
        VARIABLES { providerState }
        DESCRIPTION
                "Provider state is Crush"
        ::= 17
        
providerStateOk  TRAP-TYPE
        ENTERPRISE roschat-m0
        VARIABLES { providerState }
        DESCRIPTION
                "Provider state is Ok"
        ::= 18
END

При запросе таблицы всё отображается корректно вроде бы

snmptable -v 1 -c public localhost ROSCHAT-M0-MIB::serviceTable
SNMP table: ROSCHAT-M0-MIB::serviceTable

 serviceNum    serviceName serviceState serviceStateTime
          0     "kamailio"           ok   29:20:04:34.51
          1    "rtpengine"           ok   32:12:46:35.84
          2   "roschat-ms"           ok   130:5:18:26.04
          3         "wlan"           ok    9:11:53:49.05
          4   "turnserver"           ok  283:13:26:41.34
          5   "roschat-db"           ok  283:13:21:41.17
          6 "roschat-snmp"           ok     0:3:12:37.02
          7   "gw-booster"        crush    52:5:49:14.66

Дерево таблицы тоже выстраивается

snmpwalk -v 2c -c public localhost ROSCHAT-M0-MIB::serviceTable
ROSCHAT-M0-MIB::serviceEntry.0 = Gauge32: 8
ROSCHAT-M0-MIB::serviceNum.0 = INTEGER: 0
ROSCHAT-M0-MIB::serviceNum.1 = INTEGER: 1
ROSCHAT-M0-MIB::serviceNum.2 = INTEGER: 2
ROSCHAT-M0-MIB::serviceNum.3 = INTEGER: 3
ROSCHAT-M0-MIB::serviceNum.4 = INTEGER: 4
ROSCHAT-M0-MIB::serviceNum.5 = INTEGER: 5
ROSCHAT-M0-MIB::serviceNum.6 = INTEGER: 6
ROSCHAT-M0-MIB::serviceNum.7 = INTEGER: 7
ROSCHAT-M0-MIB::serviceName.0 = STRING: "kamailio"
ROSCHAT-M0-MIB::serviceName.1 = STRING: "rtpengine"
ROSCHAT-M0-MIB::serviceName.2 = STRING: "roschat-ms"
ROSCHAT-M0-MIB::serviceName.3 = STRING: "wlan"
ROSCHAT-M0-MIB::serviceName.4 = STRING: "turnserver"
ROSCHAT-M0-MIB::serviceName.5 = STRING: "roschat-db"
ROSCHAT-M0-MIB::serviceName.6 = STRING: "roschat-snmp"
ROSCHAT-M0-MIB::serviceName.7 = STRING: "gw-booster"
ROSCHAT-M0-MIB::serviceState.0 = INTEGER: ok(3)
ROSCHAT-M0-MIB::serviceState.1 = INTEGER: ok(3)
ROSCHAT-M0-MIB::serviceState.2 = INTEGER: ok(3)
ROSCHAT-M0-MIB::serviceState.3 = INTEGER: ok(3)
ROSCHAT-M0-MIB::serviceState.4 = INTEGER: ok(3)
ROSCHAT-M0-MIB::serviceState.5 = INTEGER: ok(3)
ROSCHAT-M0-MIB::serviceState.6 = INTEGER: ok(3)
ROSCHAT-M0-MIB::serviceState.7 = INTEGER: crush(1)
ROSCHAT-M0-MIB::serviceStateTime.0 = Timeticks: (257848363) 29 days, 20:14:43.63
ROSCHAT-M0-MIB::serviceStateTime.1 = Timeticks: (281140496) 32 days, 12:56:44.96
ROSCHAT-M0-MIB::serviceStateTime.2 = Timeticks: (1125171516) 130 days, 5:28:35.16
ROSCHAT-M0-MIB::serviceStateTime.3 = Timeticks: (82103817) 9 days, 12:03:58.17
ROSCHAT-M0-MIB::serviceStateTime.4 = Timeticks: (2450021046) 283 days, 13:36:50.46
ROSCHAT-M0-MIB::serviceStateTime.5 = Timeticks: (2449991029) 283 days, 13:31:50.29
ROSCHAT-M0-MIB::serviceStateTime.6 = Timeticks: (59773) 0:09:57.73
ROSCHAT-M0-MIB::serviceStateTime.7 = Timeticks: (451436378) 52 days, 5:59:23.78

Но вот, когда запрашиваю конкретный OID, получаю ошибку

snmpget -v 1 -c public localhost ROSCHAT-M0-MIB::serviceState.2
Error in packet
Reason: (noSuchName) There is no such variable name in this MIB.
Failed object: ROSCHAT-M0-MIB::serviceState.2

Подскажите, как формировать таблицу, чтобы получить доступ к OID таблице?

 , , ,

AMD Sepron LE 1250 2,2Ггц 896 ОЗУ, x32

$
0
0

какой Linux KDE поставить на это железо AMD Sepron LE 1250, 2,2Ггц 896 ОЗУ, x32

 

Чем оповещать?

$
0
0

Развлечения в песочнице. Строю маленькую систему мониторинга для удаленного сервиса. Данные с него даст telegraf, пишет в influx, показывает на grafanе. А чем алерты модно с такого стека сейчас делать?

В идеале иметь поддержку разных мессенджеров.

 ,

Выбор десктопной материнки\процессора с поддержкой ECC памяти

$
0
0

Поигравшись тут недавно со сборкой Lineage OS из исходников, я понял, что пора, наконец, обновлять своё домашнее железо 10-5 летней давности. Спасибо Intel’у за то что они стагнировали все последние годы - обычных десктопных процессоров 2-го, 3-го, 4-го поколения мне более-менее хватало и обновлять их меня не особо тянуло.

Но вот предела памяти в 16 гигабайт на моих текущих материнках становится уже мало. Хочется хотя-бы 64. И учитывая статистику ECC-ошибок на серверах с сопоставимыми объемами ОЗУ, было-бы неплохо собрать компуктер с ECC памятью.

И тут как раз и начались проблемы: если искать железо для процев от Intel’а - то беглый поиск по магазинам выдаёт какие-то совершенно невменяемые по стоимости серверные материнки. Походу, что десктопные процы у них так и не научились в ECC.

А в решениях от AMD, я, как говориться, «не в зуб ногой». Быстрое гугление подсказывает, что новые десктопные процы от AMD и материнки поддерживают ECC память. Но, наверняка, есть какие-то ньюансы, о которых я бы и хотел спросить местных специалистов:

  • пробовали-ли вы использовать современные десктопные процы от AMD с ECC оперативкой ?
  • какие процессоры\чипсеты под это дело сейчас актуальны, а какие уже нет ?
  • какую лучше брать материку, и какие тут есть подвохи ? Как всё это дело дружит с линуксом ?

По размерам - хотелось-бы что-нибудь не крупнее чем Micro ATX, а по стоимости - что-нибудь подешевле крыла от самолёта как это сейчас получается для подобных решений от Intel’а.

Заранее спасибо!

 , ,


Чтение пачки локальных html в LineageOS

$
0
0

Вот стянул я из сети интересную книжку в виде пачки слинкованных между собой html-ок. С десктопными браузерами я проблем не испытываю. А вот на аппарате с LinegeOS если я открою встроенным HTML-просмотрщиком, то тот хреново обрабатывает ссылки на другие локальные html-файлы. На более тяжёлых и навороченных браузеров для андроида проблем просто открыть локальный файл.

Может можно переконвертировать эту пачку в нечто читаемое без таких проблем?

 , ,

Скрыть пароль от proxy в apt.conf

$
0
0

Добрый день. Коллеги, помогите разобраться с проблемой. Есть сервер с linux (debian), он ходит через proxy где настроена аутентификация через AD. Хотелось бы как-то скрыть(зашифровать или как-то еще) пароль, который в открытом виде лежит в /etc/apt/apt.conf Как мне такое сделать? Не удается загуглить.

 ,

Live USB с SystemrescueCD не получается приготовить

$
0
0

Есть usb флешка:

# fdisk -l /dev/sdc
Disk /dev/sdc: 7.21 GiB, 7736072192 bytes, 15109516 sectors
Disk model: DataTraveler 3.0
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x27aa57d3

Device     Boot Start      End  Sectors  Size Id Type
/dev/sdc1  *       63 15107903 15107841  7.2G ef EFI (FAT-12/16/32)

Поставил на неё SysemrescueCD, следуя инструкциям «Alternative USB installation method on Linux for booting in UEFI mode»:

http://www.system-rescue-cd.org/Installing-SystemRescueCd-on-a-USB-stick/

Расхождение в том что при форматировании файловой системы я её обозначил иначе:

# blkid |grep sdc
/dev/sdc1: LABEL="SYSRCD008" UUID="D406-97CD" TYPE="vfat" PARTUUID="27aa57d3-01"

Как и написано в инструкции я отредактировал файлы /boot/grub/grubsrcd.cfg и /sysresccd/boot/syslinux/sysresccd_sys.cfg.

Тестирую систему с помощью qemu вот так:

# qemu-system-x86_64 -drive file=/dev/sdc,format=raw,index=0,media=disk

Система не запускается. В эмуляторе пишется:

Booting from hard disk...
MBR
This is not bootable disk. Please insert a bootable floopy and press any key to try again...

 ,

Jupyter lab

$
0
0

А есть ли что-то похожее на проект Jupyter для проведения научных расчётов и одновременной записи формул с интерактивщиной? Octave(Matlab) знаю, но это немного не то, чего мне бы хотелось. Больше всего я хотел бы сохранять состояние сессии, чтобы можно было продолжить с прерванного места расчётов, а то возня с pickle для сохранения каких-то посчитанных структур меня не шибко радует, хотя может я просто слишком много хочу... Расчёты такие, что считать нужно часов по 8, потом думать день над результатами, потом опять считать часов по 8 с использованием предыдущих результатов и так я уже недели 2 вожусь где-то и судя по всему ещё месяц буду возиться... Поднимать сервер вне дома не хочется, а дома не вариант чтобы он гудел 24/7, мешая спать, тем более время от времени надо делать и другие штуки на пекарне, так что висящий питон с подгруженными структурами по паре гигов каждая, не радует меня.

 , ,

ubuntu wifi адаптер

$
0
0

Не могу подобрать драйвер под wifi. Сам адаптер видит. Установлена как Dual-Boot. На винде все работает. Если не сложно помогите. USB адаптер сразу -.

 , ,

Postfix проблемы с отправкой почты.

$
0
0

Всем привет. Встала такая проблема с отправкой почты. Используется связка Postfix Dovecot roundcube. При работе из офиса все отлично и с отправкой и получением. Но при работе с другой сети например через Аутлук письма принимает но не отправляет. При отправке пишет Relay access denied. В логах постфикса пишет следующее: NOQUEUE:reject: RCPT from unknown[ip address]:554 5.7.1 relaymail_name@mail.com: Relay access denied; from=mymail_name@mail.com to=relaymail_name@mail.com proto=ESMTP helo= Как настроить что бы отправка работала из другой сети?

 ,

Полные права на файлы в Samba

$
0
0

Всем доброго времени суток.

Имеется в домашней сети самба сервер, с единственной папкой для шары.

Папка имеет права 777, конфиг самбы к папкам выглядит так:

[Share] path = /home/Share comment = Share writable = yes public = yes create mask = 0777 directory mask = 0777

Но если скинуть с одной винды файл на шару и попытаться запустить его с другой винды, то выдаст ошибку, мол нет прав на запуск.

Как выдавать права 777 автоматом на все файлы и возможно ли это?

 ,


Как пробросить трафик между двумя интерфейсами через свой фильтр?

$
0
0

Есть два физических интерфейса, например, eth0 и eth1. Юзер подключается к eth0, я ему раздаю ip, включаю маскарадинг на eth1, и он из-под NAT выходит в инет через этот eth1. Тут вопросов нет.

Я хочу этот трафик обрабатывать, протаскивать все пакеты через свой процесс и иногда кое-что в этих пакетах менять. Как это сделать? Попробовал сделать так: написал софтину, которая поднимает два tap интерфейса, tap0 и tap1, внутри пока что просто читаю из tap0 и пишу в tap1 и наоборот (дальше надо будет разбирать и модифицировать). Мне надо заставить пакеты ходить так: eth0 - (tap0 - tap1) - eth1.

Сделал:

ifconfig tap0 192.168.100.1
ifconfig tap1 192.168.200.1
ip route add <адрес внешнего сервера> via 192.168.100.1
iptables -t nat -A POSTROUTING -o tap0 -j MASQUERADE

Теперь пакеты идут через мой tap0, но во внешнюю сеть они не уходят. Точнее, идут только ARP запросы, ответов нет, на этом все заканчивается. Как мне заставить пакеты идти с tap1 в eth1?

Может быть, есть более адекватный способ эту задачу решить, но еще раз, внимание! Мне надо не просто пробросить трафик, а иметь возможность делать некую произвольную модификацию пакетов, т.е. только лишь средствами iptables тут не обойтись. Или обойтись? В iptables не силен..

 ,

Destination Host Unreachable

$
0
0

Добрый день.

Имеется одноплатный ПК с внешней USB сетевой картой на котором стоит Linux, монитора и клавиатуры у него нет. Он напрямую соединен с рабочим ПК. После включения одноплатного ПК со вставленным сетевым проводом, либо вставленным после включения, все работает как положено. Пинги до рабочего ПК идут. Стоит выдернуть кабель, вернуть на место и получаю ошибку «Destination Host Unreachable».

PING 192.168.137.1 (192.168.137.1) 56(84) bytes of data.  
64 bytes from 192.168.137.1: icmp_seq=1 ttl=128 time=1.12 ms  
64 bytes from 192.168.137.1: icmp_seq=2 ttl=128 time=0.517 ms  
64 bytes from 192.168.137.1: icmp_seq=3 ttl=128 time=0.568 ms  
ping: sendmsg: Network is unreachable  
…  
ping: sendmsg: Network is unreachable  
From 192.168.137.120 icmp_seq=14 Destination Host Unreachable  
From 192.168.137.120 icmp_seq=15 Destination Host Unreachable  

При этом на рабочем ПК в Wireshark я вижу ARP запросы, вижу что он отвечает, но получается что до одноплатного ПК ответы не доходят или игнорируются?!

Настройки одноплатного ПК:

( читать дальше... )

В чем может быть проблема?

 ,

DE на WinAPI

$
0
0

Насколько реально сделать окружение для X на основе WinAPI для запуска под Wine, чтобы оно давало и курсор, и оконный менеджер и т.п.? Будет ли такое ПО запускаться под Windows?

 , ,

Vim, проблема с фоновым цветом.

$
0
0

Здравствуйте, товарищи!

Установил тут себе цветовую тему в vim (morhetz / gruvbox) и вот такая у меня проблема:

  • При скролле вниз по одной строке или колесом мыши вылезающие снизу строки дополняются чёрными полосами. При скролле вверх или при использовании pgUP pgDown такой проблемы нет. Написал в issue на гитхаб, но что-то подсказывает мне что дело то не в самой цветовой теме, а в моём окружении.

Может кто-то поможет приблизиться к решению данной проблемы, ибо очень раздражает.

https://user-images.githubusercontent.com/59111738/73941204-de328500-48fd-11ea-9962-6804b0c29d14.png

 , ,

Какие есть решения позволяющие смотреть видео онлайн, но затрудняющие скачивание?

$
0
0

Приветствую! Есть веб сайт на платформе moodle (apache+php+mariadb) с образовательным контентом, в т.ч. видео (видео файлы mp4 располагаются на самом сервере). Заказчик хочет, по возможности, защитить видео от скачивания. Я знаю правило - if you can watch it, you can capture it, но в тоже время, если есть возможность затруднить/усложнить копирование файлов с сервера, то хотелось бы реализовать. Подскажите, какие есть готовые решения? Рассматриваю в т.ч. платные. Коллеги, может кто-то уже решал такую задачу, подскажите.

 , ,

Viewing all 73859 articles
Browse latest View live