Citrix 通过 snmp 查询不支持 snmp 的虚拟打印机

Citrix 通过 snmp 查询不支持 snmp 的虚拟打印机

我需要一个关于如何让它发挥作用的建议。

我们有一台打印服务器,它有一些“pcl 到 pdf”转换器应用程序,该应用程序监听端口 9001,收集 PCL 作业并从 PCL 创建 PDF。问题是 pcl 到 pdf 应用程序不支持 SNMP。由于所有这些都发生在 citrix 环境中,citrix 使用 snmp 协议来查询打印机状态。由于 IT 限制,我们无法在 citrix 中禁用 SNMP。由于所有这些原因,该打印机被报告为所有用户都处于脱机状态,无法使用。

当我们将数据包捕获放到机器上时,我们会看到一些打印机陷阱/oid:

1.3.6.1.2.1.25.3.2.1.5.1

1.3.6.1.2.1.25.3.5.1.1.1

1.3.6.1.2.1.25.3.5.1.2.1

如果我们能够以某种方式模拟打印机对上述 OID 上的 snmp 查询的响应,那么我们的问题就可以得到解决。

有什么建议么?

答案1

我设法找到了解决我的问题的方法。

我下载了#SNMP(基于 C# 的开源 SNMP)其中包含 SNMPD 项目(SNMP 代理),然后我编写了几个处理我必须响应的 OID 的类。

基于:http://www.oid-info.com/get/1.3.6.1.2.1.25.3.2.1.5

public class hrDeviceStatus : ScalarObject
{
    private readonly Integer32 _value = new Integer32(2); // running 2

    public hrDeviceStatus()
        : base(new ObjectIdentifier("1.3.6.1.2.1.25.3.2.1.5.1"))
    {
    }

    public override ISnmpData Data
    {
        get 
        {
            return _value; 
        }
        set {  }
    }
}

基于:http://www.oid-info.com/get/1.3.6.1.2.1.25.3.5.1.1

public class hrPrinterStatus : ScalarObject
{
    private readonly Integer32 _value = new Integer32(1); // other

    public hrPrinterStatus()
        : base(new ObjectIdentifier("1.3.6.1.2.1.25.3.5.1.1.1"))
    {
    }

    public override ISnmpData Data
    {
        get 
            { 
                return _value; 
            }
        set { }
    }
}

基于:http://www.oid-info.com/get/1.3.6.1.2.1.25.3.5.1.2

public class hrPrinterDetectedErrorState : ScalarObject
{
    private readonly OctetString _value = new OctetString("\0\0"); // all 16 bits set to 0 

    public hrPrinterDetectedErrorState()
        : base(new ObjectIdentifier("1.3.6.1.2.1.25.3.5.1.2.1"))
    {
    }

    public override ISnmpData Data
    {
        get 
        { 
            return _value; 
        }
        set { }
    }
}

然后我将它们添加到对象存储中。

    var store = Container.Resolve<ObjectStore>();
    store.Add(new hrDeviceStatus());
    store.Add(new hrPrinterStatus());
    store.Add(new hrPrinterDetectedErrorState());

就这样。感谢所有提供帮助的人。

相关内容