Hi All, I'm having a bit of a strange issue executing a system command through perl. The system command reads a bunch of parameters through STDIN, and responds via STDOUT. The problem is that special commands (notably the "#" and "!" character. Perl itself, escapes the characters correctly (as indicated through the print $RADCommand code), but the command once executed through the shell, but from there it goes pear shaped once the system executes the command..
A quick example: use Data::Dumper; use strict; use warnings; my $AuthName = "user\@domain.com"; my $AuthPass = "!\@#bsay0nd"; my $ClientIP = "10.0.0.3"; my $RADCommand = "/bin/echo -e "; $RADCommand .= "Called-Station-Id = x.x.x.42, "; $RADCommand .= "Calling-Station-Id = " . $ClientIP . ", "; $RADCommand .= "Login-Service = Telnet, "; $RADCommand .= "Login-TCP-Port = 119, "; $RADCommand .= "NAS-IP-Address = 10.255.255.245, "; $RADCommand .= "NAS-Port-Type = Virtual, "; $RADCommand .= "Service-Type = Authenticate-Only, "; $RADCommand .= "User-Name = " . $AuthName . ", "; $RADCommand .= "User-Password = " . $AuthPass . " "; $RADCommand .= "| /usr/bin/radclient -c 1 -r 1 -t 5 10.255.251.4 auth quaap5hooZae4ahNguehusieg0Oiph1u"; my @RADResult = qx($RADCommand); print $RADCommand . "\n"; print Dumper(@RADResult); The output of the above code is correct: /bin/echo -e Called-Station-Id = 85.12.8.42, Calling-Station-Id = 198.19.255.3, Login-Service = Telnet, Login-TCP-Port = 119, NAS-IP-Address = 10.255.255.245, NAS-Port-Type = Virtual, Service-Type = Authenticate-Only, User-Name = gar...@beyondonline.co.za, User-Password = !@#Bey0nd | /usr/bin/radclient -c 1 -r 1 -t 5 10.255.251.4 auth quaap5hooZae4ahNguehusieg0Oiph1u $VAR1 = 'Received response ID 198, code 3, length = 55 '; $VAR2 = ' Reply-Message = "NOK:::::::::Authentication failed" '; However, once executing the command, the RADIUS server receives the incorrect string for the password: Thu May 15 09:57:46 2014 Packet-Type = Access-Request Called-Station-Id = "x.x.x.42" Calling-Station-Id = "10.0.0.3" Login-Service = Telnet Login-TCP-Port = 119 NAS-IP-Address = 10.255.255.245 NAS-Port-Type = Virtual Service-Type = Authenticate-Only User-Name = " u...@domain.com" User-Password = "!@" Realm = "DEFAULT" The problem is a shell problem rather than a perl problem, I do know that much. Nevermind what I do or where I put quotes / escape strings, I cannot get bash to execute the echo statement. Can anyone shed some light on this subject perhaps? I know it's more than likely a little bit off topic, but I would appreciate the assistance. -- Chris. -- To unsubscribe, e-mail: beginners-unsubscr...@perl.org For additional commands, e-mail: beginners-h...@perl.org http://learn.perl.org/