Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

Kill sent from perl expect not working

by druidmatrix (Acolyte)
on Apr 29, 2010 at 18:47 UTC ( [id://837618]=perlquestion: print w/replies, xml ) Need Help??

druidmatrix has asked for the wisdom of the Perl Monks concerning the following question:

Hello Monks,

I have a perl Expect script that spawns a shell with "sudo su" and then runs an openvpn client on that shell. However, I am having problems terminating the openvpn client (followed by the expect spawned object). The relevant code I am using:

$cmd = "kill -INT $vpnpid"; KILLVPN: print "Sending kill commands to child processes:\n$cmd\n"; $exp1->send_slow("$cmd\n"); sleep 3; my $ps = `ps -p $vpnpid | grep -v grep | grep -v TTY`; if ($ps =~ /\w+/) { print "VPN process $vpnpid not dead yet\n $ps \nSending kill - +TERM\n"; $cmd = "kill -TERM $vpnpid"; goto KILLVPN; } $exp1->hard_close();

On the output I see:

Got command prompt: [root@fc10-test perl]# Sending kill commands to ch +ild processes: kill -INT 3006 VPN process 3006 not dead yet 3006 pts/4 00:00:00 openvpn Sending kill -TERM Sending kill commands to child processes: kill -TERM 3006 VPN process 3006 not dead yet 3006 pts/4 00:00:00 openvpn ...

Now if I issue the "kill -TERM 3006" from a shell, it kills the process and my script ends gracefully, but somehow it is not working within the expect shell. Please note that the expect shell is running as root (just as I am when execting the command from another shell).

TIA

Replies are listed 'Best First'.
Re: Kill sent from perl expect not working
by ikegami (Patriarch) on Apr 29, 2010 at 19:22 UTC
    The VPN client is executing as a different user because of sudo. I'm guessing you don't have the permissions to kill the client. Check the error it's returning to confirm. If so, just sudo the kill as well.
      The VPN Client is running as root, as is the $exp1 expect object in the code above.
        You seem to have skipped the "check the error it's returning" step.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://837618]
Approved by Perlbotics
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others lurking in the Monastery: (5)
As of 2024-04-25 14:32 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found