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 | |
by druidmatrix (Acolyte) on Apr 29, 2010 at 19:38 UTC | |
by ikegami (Patriarch) on Apr 29, 2010 at 20:12 UTC | |
by druidmatrix (Acolyte) on Apr 29, 2010 at 21:01 UTC | |
by ikegami (Patriarch) on Apr 29, 2010 at 21:47 UTC | |
|