Skip to content

Instantly share code, notes, and snippets.

@dh1tw
Created May 10, 2014 19:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dh1tw/a62939c289c0b7337840 to your computer and use it in GitHub Desktop.
Save dh1tw/a62939c289c0b7337840 to your computer and use it in GitHub Desktop.
Re-Route a Port from a remote machine to a local machine (through an SSH tunnel)
#!/usr/bin/perl
# PostgreSQL Tunnel Tool for Mac OS X and Linux
# Copyright (c) 2010 Linode, LLC
# Author: Philip C. Paradis <pparadis@linode.com>
# Usage: postgresql-tunnel.pl [start|stop]
# Access a PostgreSQL database server via an SSH tunnel.
$local_ip = "127.0.0.1";
$local_port = "9201";
$remote_ip = "127.0.0.1";
$remote_port = "9200";
$remote_user = "user_on_remote_machine";
$remote_host = "public_IP_address_of_remote_machine";
$a = shift;
$a =~ s/^\s+//;
$a =~ s/\s+$//;
$pid=`ps ax|grep ssh|grep $local_port|grep $remote_port`;
$pid =~ s/^\s+//;
@pids = split(/\n/,$pid);
foreach $pid (@pids)
{
if ($pid =~ /ps ax/) { next; }
split(/ /,$pid);
}
if (lc($a) eq "start")
{
if ($_[0]) { print "Tunnel already running.\n"; exit 1; }
else
{
system "ssh -i ~/.ssh/mysshkey -f -L $local_ip:$local_port:$remote_ip:$remote_port $remote_user\@$remote_host -N";
exit 0;
}
}
elsif (lc($a) eq "stop")
{
if ($_[0]) { kill 9,$_[0]; exit 0; }
else { exit 1; }
}
else
{
print "Usage: elasticsearch-tunnel.pl [start|stop]\n";
exit 1;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment