aboutsummaryrefslogtreecommitdiff
path: root/databases/pgpool-II/files/pgpool_remote_start
diff options
context:
space:
mode:
Diffstat (limited to 'databases/pgpool-II/files/pgpool_remote_start')
-rw-r--r--databases/pgpool-II/files/pgpool_remote_start25
1 files changed, 19 insertions, 6 deletions
diff --git a/databases/pgpool-II/files/pgpool_remote_start b/databases/pgpool-II/files/pgpool_remote_start
index 66a628b725fd..1c044aef90cb 100644
--- a/databases/pgpool-II/files/pgpool_remote_start
+++ b/databases/pgpool-II/files/pgpool_remote_start
@@ -1,13 +1,26 @@
-#!/bin/sh
+#!/usr/bin/perl
#
# $FreeBSD$
-DEST=pgsql@$1
+use strict;
+use warnings;
-logger="logger -t pgpool -p local0.info"
+my ($host, $dir) = @ARGV;
-/bin/sh <<EOF | ${logger} 2>&1
+my $logger = "logger -t pgpool -p local0.info";
+my $pgctl = "/usr/local/bin/pg_ctl -D $dir";
+my ($fh, $log);
-ssh $DEST '/usr/local/etc/rc.d/postgresql start'
+if (not open($fh, "ssh pgsql\@$host $pgctl -t 5 -w -s -m fast start 2>&1 |")) {
+ die "cannot open ssh: $!";
+}
+if (not open($log, "| $logger")) {
+ die "cannot open logger: $!";
+}
+while (<$fh>) {
+ print $log $_;
+}
+close($fh) or die "close(ssh) failed: $!";
+close($log) or die "close(logger): $!";
-EOF
+system("ssh pgsql\@$host $pgctl status 2>&1") == 0 or die "pg_ctl status failed";