Hi all,

I am trying to read the information (show info, show stat) from the socket
of haproxy with a perl script in order to get a similar result when using
the socat command. The problem is that I am not able to read something.
I see also a similar example in the sources in the contrib folder, but
somehow I don't get the point how to read and print this information.

This is my perl program.

Thanks for any help

###############################################

use strict;
use IO::Socket;
use lib "/usr/local/nagios/libexec";

my $sock = new IO::Socket::UNIX (
     LocalAddr => "/var/run/haproxy.socket",
     Type => SOCK_STREAM,
     Timeout => 1)
or die 'error on connectin.';

next if !$sock;

print $sock "show info\n";
# here i would like to read out the information from the socket
while(<$sock>){
        chomp;
        print;
#        my @d = split('\t');
#        print "info data: @d\n";
}check_disk_smb      check_mrtgtraf      check_spop
check_dns           check_nagios        check_ssh
check_dummy         check_nntp          check_ssmtp
check_file_age      check_nntps         check_swap
check_flexlm        check_nrpe          check_tcp
check_ftp           check_nt            check_time
check_hello         check_ntp           check_udp
check_hello.pl      check_ntp_peer      check_ups
check_hpjd          check_ntp_time      check_users
check_http          check_nwstat        check_wave
check_icmp          check_oracle
r...@lobalix01:/usr/local/nagios/libexec# vi check_h
check_hello     check_hello.pl  check_hpjd      check_http
r...@lobalix01:/usr/local/nagios/libexec# vi check_h
check_hello     check_hello.pl  check_hpjd      check_http
r...@lobalix01:/usr/local/nagios/libexec# vi check_h
check_hello     check_hello.pl  check_hpjd      check_http
r...@lobalix01:/usr/local/nagios/libexec# vi check_hello
check_hello     check_hello.pl
r...@lobalix01:/usr/local/nagios/libexec# vi check_hello
r...@lobalix01:/usr/local/nagios/libexec# vi test
tests/         testSocket.pl
r...@lobalix01:/usr/local/nagios/libexec# vi test
tests/         testSocket.pl
r...@lobalix01:/usr/local/nagios/libexec# vi testSocket.pl
check_apache        check_ifstatus      check_real
check_apache.pl     check_imap          check_rpc
check_apt           check_ircd          check_sensors
check_breeze        check_jabber        check_simap
check_by_ssh        check_load          check_smtp
check_clamd         check_log           check_snmp
check_cluster       check_mailq         check_spop
check_dhcp          check_mrtg          check_ssh
check_dig           check_mrtgtraf      check_ssmtp
check_disk          check_nagios        check_swap
check_disk_smb      check_nntp          check_tcp
check_dns           check_nntps         check_time
check_dummy         check_nrpe          check_udp
check_file_age      check_nt            check_ups
check_flexlm        check_ntp           check_users
check_ftp           check_ntp_peer      check_wave
check_hello         check_ntp_time      negate
check_hello.pl      check_nwstat        tests/
check_hpjd          check_oracle        testSocket.pl
check_http          check_overcr        urlize
check_icmp          check_ping          utils.pm
check_ide_smart     check_pop           utils.sh
check_ifoperstatus  check_procs
r...@lobalix01:/usr/local/nagios/libexec# vi testSocket.pl
r...@lobalix01:/usr/local/nagios/libexec# vi check_h
check_hello     check_hello.pl  check_hpjd      check_http
r...@lobalix01:/usr/local/nagios/libexec# vi check_hello
check_hello     check_hello.pl
r...@lobalix01:/usr/local/nagios/libexec# vi check_hello.pl
r...@lobalix01:/usr/local/nagios/libexec# perl check_hello.pl
r...@lobalix01:/usr/local/nagios/libexec# vi check_hello.pl
r...@lobalix01:/usr/local/nagios/libexec# perl check_hello.pl
r...@lobalix01:/usr/local/nagios/libexec# history | grep socat
  249  history | grep socat
  252  history | grep socat
  253  show stat | socat unix-connect:/var/run/haproxy.socket
  254  "show stat" | socat unix-connect:/var/run/haproxy.socket stdio
  255  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio
  256  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio
  259  echo "show stat" | socat unix-connect:/var/run/haproxy.socket
stdioech
  260  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio
  261   socat unix-connect:/var/run/haproxy.socket stdio
  262  echo "show statt" | socat unix-connect:/var/run/haproxy.socket stdio
  263  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio
  270  echo "show stat" | socat unix-connect:/var/run/haproxy.socket
  271  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdiols
  272  socat -d -d READLINE,history=$HOME/.http_history \
TCP4:www.domain.org:www,crnl
  273  socat -d READLINE,history=$HOME/.http_history \ TCP4:www.domain.org:
www,crnl
  274  socat -d -d READLINE,history=$HOME/.http_history \
TCP4:www.domain.org:www,crnl
  280  UserParameter=proxyconn,echo "show info" | /usr/local/bin/socat
/var/lib/haproxy-stat stdio | grep CurrConns | awk '{ print $2 }'
  281  echo "show info" | /usr/local/bin/socat /var/lib/haproxy-stat stdio |
grep CurrConns | awk '{ print $2 }'
  282  history | grep socat
  283  echo "show info" | /usr/local/bin/socat /var/lib/haproxy-stat stdio |
grep CurrConns | awk '{ print $2 }'
  284  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio |
grep VIAS10ix2 | awk -F, '{ print $2 " " $5 }'
  401  history | grep socat
  402  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio |
grep VIAS10ix2 | awk -F, '{ print $2 " " $5 }'
  404  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio |
grep VIAS10ix2 | awk -F, '{ print $2 " " $5 }'
  405  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio |
grep VIAS10ix2 | awk -F, '{ print $2 " " $5 }'
  407  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio |
grep VIAS10ix2 | awk -F, '{ print $2 " " $5 }'
  411  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio |
grep VIAS10ix2 | awk -F, '{ print $2 " " $5 }'
  412  socat unix-connect:/var/run/haproxy.socket stdio | grep VIAS10ix2 |
awk -F, '{ print $2 " " $5 }'
  413  show stat socat unix-connect:/var/run/haproxy.socket stdio | grep
VIAS10ix2 | awk -F, '{ print $2 " " $5 }'
  414  "show stat" socat unix-connect:/var/run/haproxy.socket stdio | grep
VIAS10ix2 | awk -F, '{ print $2 " " $5 }'
  415  echo "show stat" socat unix-connect:/var/run/haproxy.socket stdio |
grep VIAS10ix2 | awk -F, '{ print $2 " " $5 }'
  416  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio |
grep VIAS10ix2 | awk -F, '{ print $2 " " $5 }'
  417  echo "show info" | socat unix-connect:/var/run/haproxy.socket stdio |
grep VIAS10ix2 | awk -F, '{ print $2 " " $5 }'
  418  echo "show info" | socat unix-connect:/var/run/haproxy.socket stdio
  419  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio
  420  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio
  421  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio
  422  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio
  423  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio
  424  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio
  429  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio
  430  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio
  431  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio
  432  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio
  510  history | grep socat
r...@lobalix01:/usr/local/nagios/libexec# !431
echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio
#
pxname,svname,qcur,qmax,scur,smax,slim,stot,bin,bout,dreq,dresp,ereq,econ,eresp,wretr,wredis,status,weight,act,bck,chkfail,chkdown,lastchg,downtime,qlimit,pid,iid,sid,throttle,lbtot,tracked,type,
iastesting,FRONTEND,,,0,22,2000,206036,17103180,665343376,0,0,0,,,,,OPEN,,,,,,,,,1,1,0,,,,0,
iastesting,VIAS10ix1,0,0,0,16,,103018,8551598,332681371,,0,,0,0,0,0,UP,1,1,0,0,0,82051,0,,1,1,1,,103018,,2,
iastesting,VIAS10ix2,0,0,0,16,,103018,8551582,332662005,,0,,0,0,0,0,UP,1,1,0,0,0,82051,0,,1,1,2,,103018,,2,
iastesting,BACKEND,0,0,0,19,2000,206036,17103180,665343376,0,0,,0,0,0,0,UP,2,2,0,,0,82051,0,,1,1,0,,206036,,1,
r...@lobalix01:/usr/local/nagios/libexec# echo "show info" | socat
unix-connect:/var/run/haproxy.socket stdio
Name: HAProxy
Version: 1.3.15.7
Release_date: 2008/12/04
Nbproc: 1
Process_num: 1
Pid: 21157
Uptime: 0d 22h47m49s
Uptime_sec: 82069
Memmax_MB: 0
Ulimit-n: 8206
Maxsock: 8206
Maxconn: 4096
CurrConns: 4
r...@lobalix01:/usr/local/nagios/libexec# vi
check_hello.pl                     r...@lobalix01:/usr/local/nagios/libexec#
history | grep socat                    249  history | grep socat
  252  history | grep socat
  253  show stat | socat unix-connect:/var/run/haproxy.socket
  254  "show stat" | socat unix-connect:/var/run/haproxy.socket stdio
  255  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio
  256  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio
  259  echo "show stat" | socat unix-connect:/var/run/haproxy.socket
stdioech
  260  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio
  261   socat unix-connect:/var/run/haproxy.socket stdio
  262  echo "show statt" | socat unix-connect:/var/run/haproxy.socket stdio
  263  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio
  270  echo "show stat" | socat unix-connect:/var/run/haproxy.socket
  271  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdiols
  272  socat -d -d READLINE,history=$HOME/.http_history \
TCP4:www.domain.org:www,crnl
  273  socat -d READLINE,history=$HOME/.http_history \ TCP4:www.domain.org:
www,crnl
  274  socat -d -d READLINE,history=$HOME/.http_history \
TCP4:www.domain.org:www,crnl
  280  UserParameter=proxyconn,echo "show info" | /usr/local/bin/socat
/var/lib/haproxy-stat stdio | grep CurrConns | awk '{ print $2 }'
  281  echo "show info" | /usr/local/bin/socat /var/lib/haproxy-stat stdio |
grep CurrConns | awk '{ print $2 }'
  282  history | grep socat
  283  echo "show info" | /usr/local/bin/socat /var/lib/haproxy-stat stdio |
grep CurrConns | awk '{ print $2 }'
  284  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio |
grep VIAS10ix2 | awk -F, '{ print $2 " " $5 }'
  401  history | grep socat
  402  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio |
grep VIAS10ix2 | awk -F, '{ print $2 " " $5 }'
  404  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio |
grep VIAS10ix2 | awk -F, '{ print $2 " " $5 }'
  405  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio |
grep VIAS10ix2 | awk -F, '{ print $2 " " $5 }'
  407  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio |
grep VIAS10ix2 | awk -F, '{ print $2 " " $5 }'
  411  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio |
grep VIAS10ix2 | awk -F, '{ print $2 " " $5 }'
  412  socat unix-connect:/var/run/haproxy.socket stdio | grep VIAS10ix2 |
awk -F, '{ print $2 " " $5 }'
  413  show stat socat unix-connect:/var/run/haproxy.socket stdio | grep
VIAS10ix2 | awk -F, '{ print $2 " " $5 }'
  414  "show stat" socat unix-connect:/var/run/haproxy.socket stdio | grep
VIAS10ix2 | awk -F, '{ print $2 " " $5 }'
  415  echo "show stat" socat unix-connect:/var/run/haproxy.socket stdio |
grep VIAS10ix2 | awk -F, '{ print $2 " " $5 }'
  416  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio |
grep VIAS10ix2 | awk -F, '{ print $2 " " $5 }'
  417  echo "show info" | socat unix-connect:/var/run/haproxy.socket stdio |
grep VIAS10ix2 | awk -F, '{ print $2 " " $5 }'
  418  echo "show info" | socat unix-connect:/var/run/haproxy.socket stdio
  419  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio
  420  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio
  421  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio
  422  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio
  423  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio
  424  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio
  429  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio
  430  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio
  431  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio
  432  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio
  510  history | grep socat
  511  echo "show stat" | socat unix-connect:/var/run/haproxy.socket stdio
  512  echo "show info" | socat unix-connect:/var/run/haproxy.socket stdio
  514  history | grep socat
r...@lobalix01:/usr/local/nagios/libexec# perl
check_hello.pl                   r...@lobalix01:/usr/local/nagios/libexec#
vi check_hello.pl
r...@lobalix01:/usr/local/nagios/libexec# perl check_hello.pl
r...@lobalix01:/usr/local/nagios/libexec# vi check_hello.pl
r...@lobalix01:/usr/local/nagios/libexec# perl check_hello.pl
r...@lobalix01:/usr/local/nagios/libexec# vi check_hello.pl
use strict;
use IO::Socket;
#
use lib "/usr/local/nagios/libexec";
#

my $sock = new IO::Socket::UNIX (
     LocalAddr => "/var/run/haproxy.socket",
     Type => SOCK_STREAM,
     Timeout => 2)
or die 'error on connectin.';

next if !$sock;
# reading the information of show info and printing in stdout
print $sock "show info\n";
while(<$sock>){
        chomp;
        print;
#       my @d = split('\t');
#        print "daten: @d\n";
}
$sock->close;

###############################################

Reply via email to