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).
TIAIn reply to Kill sent from perl expect not working by druidmatrix
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |