diff --git a/scripts/ssh/ssh-connect.php b/scripts/ssh/ssh-connect.php index 639a319947..8a142090c3 100755 --- a/scripts/ssh/ssh-connect.php +++ b/scripts/ssh/ssh-connect.php @@ -1,48 +1,68 @@ #!/usr/bin/env php parsePartial( + array( + array( + 'name' => 'port', + 'short' => 'p', + 'param' => pht('port'), + 'help' => pht('Port number to connect to.'), + ), + )); +$unconsumed_argv = $args->getUnconsumedArgumentVector(); + $pattern = array(); $arguments = array(); $pattern[] = 'ssh'; $pattern[] = '-o'; $pattern[] = 'StrictHostKeyChecking=no'; // This prevents "known host" failures, and covers for issues where HOME is set // to something unusual. $pattern[] = '-o'; $pattern[] = 'UserKnownHostsFile=/dev/null'; $credential_phid = getenv('PHABRICATOR_CREDENTIAL'); if ($credential_phid) { $viewer = PhabricatorUser::getOmnipotentUser(); $key = PassphraseSSHKey::loadFromPHID($credential_phid, $viewer); $pattern[] = '-l %P'; $arguments[] = $key->getUsernameEnvelope(); $pattern[] = '-i %P'; $arguments[] = $key->getKeyfileEnvelope(); } +$port = $args->getArg('port'); +if ($port) { + $pattern[] = '-p %d'; + $arguments[] = $port; +} + $pattern[] = '--'; -$passthru_args = array_slice($argv, 1); +$passthru_args = $unconsumed_argv; foreach ($passthru_args as $passthru_arg) { $pattern[] = '%s'; $arguments[] = $passthru_arg; } $pattern = implode(' ', $pattern); array_unshift($arguments, $pattern); $err = newv('PhutilExecPassthru', $arguments) ->execute(); exit($err);