scripts/mosh: Add --ssh flag

Let users specify an ssh outside their PATH, or extra flags like -p or -i.

Modify the usage message to describe this feature and hint at the
semantic difference viz. --client=path\ to\ client vs --ssh="path\ to\
ssh".

Closes #53

[keithw@mit.edu -- applied fixes per Anders Kaseorg]
This commit is contained in:
Alexander Rapp
2012-04-14 01:26:31 -04:00
committed by Keith Winstein
parent c2a5941f88
commit 86113b5f7a
+10 -3
View File
@@ -33,15 +33,17 @@ my $predict = undef;
my $port_request = undef; my $port_request = undef;
my $ssh = 'ssh';
my $help = undef; my $help = undef;
my $version = undef; my $version = undef;
my $usage = my $usage =
qq{Usage: $0 [options] [--] [user@]host [command...] qq{Usage: $0 [options] [--] [user@]host [command...]
--client=PATH mosh client on local machine --client=PATH mosh client on local machine
(default: "mosh-client") (default: mosh-client)
--server=PATH mosh server on remote machine --server=PATH mosh server on remote machine
(default: "mosh-server") (default: mosh-server)
--predict=adaptive local echo for slower links [default] --predict=adaptive local echo for slower links [default]
-a --predict=always use local echo even on fast links -a --predict=always use local echo even on fast links
@@ -49,6 +51,10 @@ qq{Usage: $0 [options] [--] [user@]host [command...]
-p NUM --port=NUM server-side UDP port -p NUM --port=NUM server-side UDP port
--ssh=COMMAND ssh command to run when setting up session
(example: "ssh -p 2222")
(default: "ssh")
--help this message --help this message
--version version and copyright information --version version and copyright information
@@ -79,6 +85,7 @@ GetOptions( 'client=s' => \$client,
'a' => sub { $predict = 'always' }, 'a' => sub { $predict = 'always' },
'n' => sub { $predict = 'never' }, 'n' => sub { $predict = 'never' },
'p=i' => \$port_request, 'p=i' => \$port_request,
'ssh=s' => \$ssh,
'help' => \$help, 'help' => \$help,
'version' => \$version, 'version' => \$version,
'fake-proxy!' => \my $fake_proxy ) or die $usage; 'fake-proxy!' => \my $fake_proxy ) or die $usage;
@@ -205,7 +212,7 @@ if ( $pid == 0 ) { # child
} }
my $quoted_self = shell_quote( $0 ); my $quoted_self = shell_quote( $0 );
exec 'ssh', '-S', 'none', '-o', "ProxyCommand=$quoted_self --fake-proxy -- %h %p", '-t', $userhost, '--', "$server " . shell_quote( @server ); exec "$ssh " . shell_quote( '-S', 'none', '-o', "ProxyCommand=$quoted_self --fake-proxy -- %h %p", '-t', $userhost, '--', "$server " . shell_quote( @server ) );
die "Cannot exec ssh: $!\n"; die "Cannot exec ssh: $!\n";
} else { # server } else { # server
my ( $ip, $port, $key ); my ( $ip, $port, $key );