免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2166 | 回复: 7
打印 上一主题 下一主题

利用Perl来写Socket程序的时候发现一个奇怪的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-11-25 15:53 |只看该作者 |倒序浏览
环境 RHEL5.2+Perl 5.8.8

脚本如下:

#!/usr/bin/perl -w
# os_sock.pl
# Monitors the indicated file using the indicated UA Configuration
#----------------
use strict;
use UaSocketClient;
#use File;

#--------------------------
# Get Configuration File - See Sample.cfg
#--------------------------

my $agent_config = "linux.conf";
以下省略

运行时
# os_sock.pl
Can't locate UaSocketClient.pm in @INC (@INC contains: /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl/5.8.7 /usr/lib/perl5/site_perl/5.8.6 /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl/5.8.7 /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.8/i386-linux-thread-multi /usr/lib/perl5/5.8.8 .) at /data/os_sock/os_sock.pl line 6.
BEGIN failed--compilation aborted at /data/os_sock/os_sock.pl line 6.

有没有高手能解答一下??急用

此脚本在AIX下运行正常,现在开发测试环境是RHEL ,是否有问题

论坛徽章:
0
2 [报告]
发表于 2009-11-25 15:58 |只看该作者

回复 #1 dakangle 的帖子

找不到UaSocketClient.pm 这个包。

论坛徽章:
0
3 [报告]
发表于 2009-11-25 16:00 |只看该作者
pm包放在同一个目录下了,有的

论坛徽章:
0
4 [报告]
发表于 2009-11-25 16:03 |只看该作者

论坛徽章:
0
5 [报告]
发表于 2009-11-25 16:15 |只看该作者
谢谢tommydu,我的socket pl基本上是安装你给的链接做的,不知道问题出在哪里

论坛徽章:
0
6 [报告]
发表于 2009-11-25 16:18 |只看该作者
#!/usr/bin/perl -w
# os_sock.pl
# Monitors the indicated file using the indicated UA Configuration
#----------------
use strict;
use UaSocketClient;
#use File;

#--------------------------
# Get Configuration File - See Sample.cfg
#--------------------------


my $configFile = $ARGV[0] || "os_sock.conf";
while ( ! ( $configFile =~ /^\S+\.conf$/ ) ) {
        print "Please enter the Configuration File (Must end with .conf): ";
        $configFile = <STDIN>;
        chomp($configFile);
}

#print "Found conf file $configFile!\n";


#--------------------------
# Read Configuration
#--------------------------
open (MYFILEIN, $configFile) || die "cannot open $configFile to read: $!\n";
my $line = <MYFILEIN>;
#print "config file $line\n";
close (MYFILEIN);
my ($system,$appl_name,$host, $port,$sourceName,$locl, $sleep) = split(/\s+/, $line);

#--------------------------
# Initilize UA Connection
#--------------------------

#print "Before new Uasocket";
my $uaClient = new UaSocketClient();
#print "Connection $uaClient";
$uaClient->appl($system);
$uaClient->host($host);
$uaClient->port($port);
$uaClient->locl($locl);
$uaClient->loclhost($sourceName);

#print "before connecting";
$uaClient->connect();

#--------------------------
# Initilize File to be monitored
#--------------------------
#--------------------------
# Main processing loop
#--------------------------


my        $scpNames = ("perl \${OSAGENTHOME}/iostat.pl",
        "perl \${OSAGENTHOME}/ioinfo.pl",
        "perl \${OSAGENTHOME}/diskinfo.pl",
        "perl \${OSAGENTHOME}/procinfo.pl",
        "perl \${OSAGENTHOME}/bitinfo.pl",
        "perl \${OSAGENTHOME}/swapinfo.pl",
        "perl \${OSAGENTHOME}/meminfo.pl");

my        $attrNames =('IOSTAT',
        'IOINFO',
        'DISKINFO',
        'PROCINFO',
        'BITINFO',
        'SWAPINFO',
        'MEMINFO');


my $APPNAME='<ApplName='.$appl_name.'>';

my $running = 1;

while ( $running ) {
        my $scpCount = @scpNames;

        for (my $scpInd=0;$scpInd<$scpCount;$scpInd++)
        {
                my $exeStr = $scpNames[$scpInd];
                my $attrNameStr = $attrNames[$scpInd];
                #print "Before Printing  $exeStr\n";
                my @lines = `$exeStr`;

                ## adding the application name and attributeName into package
                my $lineCount = @lines;
                for(my $i=0; $i<$lineCount; $i++)
                {
                        $lines[$i]=$APPNAME.'<AttrGroup='."$attrNameStr".'>'.$lines[$i];
                };

                $uaClient->send(@lines);
        };

        #begin to sleep.
        #print "===================\n";
        for ( my $i = 0; $i < $sleep && $running; $i++ ) {
                sleep(1);
                open RUNFILE, "/tivoli/os.run" or $running = undef;
                close RUNFILE;
        }
}

#--------------------------
# Houskeeping
#--------------------------
$uaClient->disconnect();
print "done!\n";

论坛徽章:
0
7 [报告]
发表于 2009-11-25 17:36 |只看该作者
刚没有注意看楼上的帖子。。删了。。

[ 本帖最后由 mwm5 于 2009-11-25 17:38 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2009-11-25 22:48 |只看该作者
不是放在相同的目录就可以的。
先use lib "./";一下。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP