#!/usr/local/bin/perl use strict; use warnings; my @get_vmlist = ( `xl list` ); sub show_vmlist { print @get_vmlist; } my $arg = shift @ARGV; my $vm_run = pop @ARGV; sub get_vncport { my $DOMID = qq(DOM_ID="`xl list | fgrep $vm_run | awk '{print \$2}'`" && VNCPORT="`ps x | fgrep -m 1 "domid \$DOM_ID" | awk '{print \$1}'`" && sockstat -4l | fgrep \$VNCPORT | awk '{print \$6}'); print `$DOMID`; } my %rec_args = ( vmlist => \&show_vmlist, getvnc => \&get_vncport, ); if (defined $arg && exists $rec_args{$arg}) { $rec_args{$arg}->(); }