歡迎您光臨本站 註冊首頁

關於cacti一個腳本的問題(已解決)

←手機掃碼閱讀     火星人 @ 2014-03-04 , reply:0

關於cacti一個腳本的問題(已解決)

最近開始使用cacti做為流量監控用,得到了不少高手的幫助,但目前碰到一個問題,很奇怪,希望論壇里的朋友幫我看看是什麼問題.

cacti版本為0.86j中文漢化版,系統是linux紅帽子.

在cacti論壇里找到TCP Connection Status腳本,http://forums.cacti.net/about12787.html

在cacti用戶許可權下運行:

$ perl /usr/local/apache/htdocs/cacti/scripts/lvm_netstat_tcp.pl 10.1.4.3 2 'public' 161 500
established:236 listen:0 timewait:695 timeclose:0 finwait1:1 finwait2:56 synsent:0 synrecv:0 closewait:0

顯示是可以得到數據信息的.

但在cacti日誌上卻得不到任何數據.

12/12/2007 03:05:04 PM - CACTID: Poller Host DS SCRIPT: perl /usr/local/apache/htdocs/cacti/scripts/lvm_netstat_tcp.pl 10.1.4.3 2 'public' 161 500, output: established:0 listen:0 timewait:0 timeclose:0 finwait1:0 finwait2:0 synsent:0 synrecv:0 closewait:0


所以得到的圖形為如圖所示,說明數據是可以寫入rrd,但為何用日誌上得不到任何數據呢?

請cacti高手幫幫忙,謝謝~~

[ 本帖最後由 恍若如夢 於 2007-12-19 14:54 編輯 ]
《解決方案》

請問你的中文是真么實現的,cacti默認是英文的圖?呵呵路過~~
《解決方案》

rrdtool在1.25之後就支持中文了,網上的文章也挺多,找找就行~
《解決方案》

同問該問題,關注中!!!希望高手來解答原因!
《解決方案》

不知道你用的是net-snmp幾的版本?
《解決方案》

問題同上,望解決
《解決方案》

命令行執行沒有問題
在cron里執行有問題就很有可能是環境變數的問題
會不會是要吧perl改成/usr/bin/perl呀
《解決方案》

已解決,foole說得沒錯,和變數有關係.加入后可以了~
《解決方案》

請教一下,我在系統內運行該腳本提示snmp版本有問題,請問需要對該腳本做過什麼相應的修改嗎?
萬分感謝
已經用了他修改2c問題后的腳本了,但還是有問題,如下:#!/usr/bin/perl -w

# --------------------------------------------------
# ARGV = <hostname>                 required
# ARGV = <snmp version>         required
# ARGV = <snmp community>         required
# ARGV = <snmp port>         required
# ARGV = <snmp timeout>         required
# --------------------------------------------------
$in_hostname         = $ARGV if defined $ARGV;
$in_version         = $ARGV if defined $ARGV;
$in_community         = $ARGV if defined $ARGV;
$in_port         = $ARGV if defined $ARGV;
$in_timeout         = $ARGV if defined $ARGV;

my $_cmd        = "snmpnetstat -v $in_version  -c $in_community -t $in_timeout -n -P tcp $in_hostname:$in_port";

# usage notes
if (
        ( ! defined $in_hostname ) ||
        ( ! defined $in_version ) ||
        ( ! defined $in_community ) ||
        ( ! defined $in_port ) ||
        ( ! defined $in_timeout )
        ) {
        print         "usage:\n\n
                $0 <host> <snmp version> < snmp community> <snmp port> <snmp timeout>\n\n";
        exit;
}

if ($in_version == 2)
{
        $in_version = "2c";
}

my @_output = `$_cmd`;

my $_estab        = 0;
my $_listen        = 0;
my $_timewait        = 0;
my $_timeclose        = 0;
my $_finwait1        = 0;
my $_finwait2        = 0;
my $_synsent        = 0;
my $_synrecv        = 0;
my $_closewait         = 0;

#print "$_output\n";

foreach ( @_output ) {
        #print $_;
        $_estab++         if /ESTABLISHED/;
        $_listen++         if /LISTEN/;
        $_timewait++         if /TIMEWAIT/;
        $_timeclose++         if /TIMECLOSE/;
        $_finwait1++         if /FINWAIT1/;
        $_finwait2++         if /FINWAIT2/;
        $_synsent++         if /SYNSENT/;
        $_synrecv++         if /SYNRECV/;
        $_closewait++         if /CLOSEWAIT/;
}

#
print "established:$_estab listen:$_listen timewait:$_timewait timeclose:$_timeclose finwait1:$_finwait1 finwait2:$_finwait2 synsent:$_synsent synrecv:$_synrecv closewait:$_closewait";perl /usr/local/apache/htdocs/cacti/scripts/lvm_netstat_tcp.pl 10.11.1.1 2 'public' 161 500
Invalid version: 2
Usage: snmpnetstat hostname
NET-SNMP version: 5.1.2
  -v    SNMP version
  -V             display version number
  -c community   specify community name
  -t timeout     SNMP packet timeout (seconds)
  -i             show interfaces with packet counters
  -o             show interfaces with octet counters
  -r             show routing table
  -s             show general statistics
  -n             show IP addresses, not names
  -a             show sockets in LISTEN mode too
  -P proto       show only details for this protocol
  -I interface   show only this interface
  -d             dump packets
  -Ddebugspec   
established:0 listen:0 timewait:0 timeclose:0 finwait1:0 finwait2:0 synsent:0 synrecv:0 closewait:0

[ 本帖最後由 mydlss 於 2008-2-27 11:34 編輯 ]
《解決方案》

又重新看了一下那個帖子
發現1樓的那個腳本是for windows的
第二頁有一段for linux的修改過的腳本
#!/usr/bin/perl -w

# --------------------------------------------------
# ARGV = <hostname> required
# ARGV = <snmp version> required
# ARGV = <snmp community> required
# ARGV = <snmp port> required
# ARGV = <snmp timeout> required
# --------------------------------------------------
$in_hostname = $ARGV if defined $ARGV;
$in_version = $ARGV if defined $ARGV;
$in_community = $ARGV if defined $ARGV;
$in_port = $ARGV if defined $ARGV;
$in_timeout = $ARGV if defined $ARGV;

# if ($in_version == 2)
#{
# $in_version = "2c";
#}

if ($in_version eq "2")
{
$in_version = "2c";
}

my $_cmd = "snmpnetstat -v $in_version -c $in_community -t $in_timeout -n -P tcp $in_hostname:$in_port";
#my $_cmd = "snmpnetstat -v $in_version -c $in_community -t $in_timeout -Cn -Cp tcp $in_hostname:$in_port";   這裡linux下參數不認,用回上面老的命令

# usage notes
if (
( ! defined $in_hostname ) ||
( ! defined $in_version ) ||
( ! defined $in_community ) ||
( ! defined $in_port ) ||
( ! defined $in_timeout )
) {
print "usage:\n\n
$0 <host> <snmp version> < snmp community> <snmp port> <snmp timeout>\n\n";
exit;
}


my @_output = `$_cmd`;

my $_estab = 0;
my $_listen = 0;
my $_timewait = 0;
my $_timeclose = 0;
my $_finwait1 = 0;
my $_finwait2 = 0;
my $_synsent = 0;
my $_synrecv = 0;
my $_closewait = 0;

#print "$_output\n";

foreach ( @_output ) {
#print $_;
$_estab++ if /ESTABLISHED/;
$_listen++ if /LISTEN/;
$_timewait++ if /TIMEWAIT/;
$_timeclose++ if /TIMECLOSE/;
$_finwait1++ if /FINWAIT1/;
$_finwait2++ if /FINWAIT2/;
$_synsent++ if /SYNSENT/;
$_synrecv++ if /SYNRECV/;
$_closewait++ if /CLOSEWAIT/;
}

#
print "established:$_estab listen:$_listen timewait:$_timewait timeclose:$_timeclose finwait1:$_finwait1 finwait2:$_finwait2 synsent:$_synsent synrecv:$_synrecv closewait:$_closewait";

現在版本錯誤不報了,但新的問題是,執行了很長時間都無任何反應

[火星人 ] 關於cacti一個腳本的問題(已解決)已經有858次圍觀

http://coctec.com/docs/service/show-post-32104.html