TUXEDO MIB信息查询

本文详细介绍了如何实现TUXEDO MIB信息查询功能,包括设置环境变量、结构设计、代码设计以及服务端和客户端的具体操作。重点讨论了如何提取客户端ID、客户端名和用户名,并给出了客户端代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                             MIB信息查询

1. 实现功能

查询MIB,提取字段信息。本文主要介绍提取:客户端ID、客户端名、用户名。

2. 设置环境变量

第一个环境变量:

FLDTBLDIR32=$APPDIR:$TUXDIR/udataobj 

第二个环境变量:

FIELDTBLS32=bank_fml,rtpnr_fml,common_fml,ui_fml,openpnr.fml32,open_detr_fml,tpadm,Usysfl32,evt_mib

3. 结构设计

目的:通过客户查询服务端MIB信息    

4. 代码设计

客户端代码:

#include <userlog.h>

#include <Uunix.h>

#include <atmi.h>

#include <boost/thread/thread.hpp>

#include <string.h>

#include <string>

#include <fml32.h>

#include <evt_mib.h>

using namespace std;

int main(int argc, char*  argv[])

{

  string logName = "mylog";

  string cltName = "cltname";

  string usrName = "usrname";

  for(int i = 1; i < argc; i++)

  {

    if(i == 1)

    {

      logName = argv[i];

    }

    else if(i == 2)

    {

      cltName = argv[i];

    }

    else if(i == 3)

    {

      usrName = argv[3];

    }

    else

    {

      break;

    }

  }

  TPINIT *userinfo=(TPINIT*)tpalloc("TPINIT",(char *)NULL,TPINITNEED(168));

  strcpy (userinfo->cltname, cltName.c_str());

  //strcpy (userinfo->grpname, "AA");

  //strcpy (userinfo->passwd, "123456");

  strcpy (userinfo->usrname, usrName.c_str());

  userinfo->datalen = 100;

  if ( tpinit(userinfo) == -1)

  {

printf("tpinit error\n");

        printf("init:%s\n",tpstrerror(tperrno));

  }

  FBFR32 *iData = (FBFR32*)tpalloc (FMLTYPE32, NULL, 5000L);

  Fchg32 (iData, TA_OPERATION, 0, "GET", 0);

  Fchg32 (iData, TA_CLASS, 0, "T_CLIENT", 0);

  FILE * fp=fopen(logName.c_str(),"w+");

  long  lLen = Fsizeof32 (iData);

  if (tpcall (".TMIB", (char*)iData, (long)0, (char**)&iData, &lLen, (long)(TPSIGRSTRT | TPNOTRAN)) == 0) 

  {

      // long lerrno = Fvall32 ( iData, TA_ERROR, 0 );

      printf("tpcall success!\n");

      int eveCount = Fnum32(iData);

      char buffer[1024];

      string logstr("");

      for(int i = 0; i < eveCount; i++)

      {

         if(-1 !=  Fgets32(iData, TA_CLIENTID, i, buffer))

         {

           logstr = "TA_CLIENTID ";

           logstr += buffer;

           logstr += '\n'; 

           fputs(logstr.c_str(), fp);

         }

        

         if(-1 !=  Fgets32(iData, TA_USRNAME, i, buffer))

         {

           logstr = "TA_USRNAME ";

           logstr += buffer;

           logstr += '\n'; 

           fputs(logstr.c_str(), fp);

         }

         

         if(-1 !=  Fgets32(iData, TA_CLTNAME, i, buffer))

         {

           logstr = "TA_CLTNAME ";

           logstr += buffer;

           logstr += '\n'; 

           fputs(logstr.c_str(), fp);

         }

      }

 }

 else

 {

   printf ( "tpcall error:%d:%s\n", tperrno, tpstrerror(tperrno) );

 }

  fclose(fp);

  boost::this_thread::sleep(boost::posix_time::milliseconds(1000*1000));

  tpterm();

 

  return 0;

}

5. 服务端设置

关掉tuxedo服务器的安全配置,即如果ubb中设置了"SECURITY ACL"需要注释掉,这并不代表配置了安全就不支持客户部查询MIB了,只是多了些约束而已。

 

6. 运行和结果

运行:

    

Test2 是我编译后的可执行文件名。mylog是日志名,clt1 是客户端名,usr1 是用户名, 这都是参数而已。

结果(结果放在mylog里面):

日志结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值