[ssh_config.5 ssh.c]
     keyword expansion for localcommand.  ok djm@
This commit is contained in:
Darren Tucker 2008-06-13 04:56:37 +10:00
parent 84c56f536c
commit f6b01b758f
3 changed files with 44 additions and 10 deletions

View File

@ -112,6 +112,9 @@
[clientloop.h channels.h clientloop.c channels.c mux.c] [clientloop.h channels.h clientloop.c channels.c mux.c]
The multiplexing escape char handler commit last night introduced a The multiplexing escape char handler commit last night introduced a
small memory leak per session; plug it. small memory leak per session; plug it.
- dtucker@cvs.openbsd.org 2008/06/12 16:35:31
[ssh_config.5 ssh.c]
keyword expansion for localcommand. ok djm@
20080611 20080611
- (djm) [channels.c configure.ac] - (djm) [channels.c configure.ac]
@ -4274,4 +4277,4 @@
OpenServer 6 and add osr5bigcrypt support so when someone migrates OpenServer 6 and add osr5bigcrypt support so when someone migrates
passwords between UnixWare and OpenServer they will still work. OK dtucker@ passwords between UnixWare and OpenServer they will still work. OK dtucker@
$Id: ChangeLog,v 1.4984 2008/06/12 18:55:46 dtucker Exp $ $Id: ChangeLog,v 1.4985 2008/06/12 18:56:37 dtucker Exp $

30
ssh.c
View File

@ -1,4 +1,4 @@
/* $OpenBSD: ssh.c,v 1.316 2008/06/12 04:24:06 djm Exp $ */ /* $OpenBSD: ssh.c,v 1.317 2008/06/12 16:35:31 dtucker Exp $ */
/* /*
* Author: Tatu Ylonen <ylo@cs.hut.fi> * Author: Tatu Ylonen <ylo@cs.hut.fi>
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@ -647,6 +647,28 @@ main(int ac, char **av)
if (options.user == NULL) if (options.user == NULL)
options.user = xstrdup(pw->pw_name); options.user = xstrdup(pw->pw_name);
/* Get default port if port has not been set. */
if (options.port == 0) {
sp = getservbyname(SSH_SERVICE_NAME, "tcp");
options.port = sp ? ntohs(sp->s_port) : SSH_DEFAULT_PORT;
}
if (options.local_command != NULL) {
char thishost[NI_MAXHOST];
if (gethostname(thishost, sizeof(thishost)) == -1)
fatal("gethostname: %s", strerror(errno));
snprintf(buf, sizeof(buf), "%d", options.port);
debug3("expanding LocalCommand: %s", options.local_command);
cp = options.local_command;
options.local_command = percent_expand(cp, "d", pw->pw_dir,
"h", options.hostname? options.hostname : host,
"l", thishost, "n", host, "r", options.user, "p", buf,
"u", pw->pw_name, (char *)NULL);
debug3("expanded LocalCommand: %s", options.local_command);
xfree(cp);
}
if (options.hostname != NULL) if (options.hostname != NULL)
host = options.hostname; host = options.hostname;
@ -657,12 +679,6 @@ main(int ac, char **av)
*p = (char)tolower(*p); *p = (char)tolower(*p);
} }
/* Get default port if port has not been set. */
if (options.port == 0) {
sp = getservbyname(SSH_SERVICE_NAME, "tcp");
options.port = sp ? ntohs(sp->s_port) : SSH_DEFAULT_PORT;
}
if (options.proxy_command != NULL && if (options.proxy_command != NULL &&
strcmp(options.proxy_command, "none") == 0) { strcmp(options.proxy_command, "none") == 0) {
xfree(options.proxy_command); xfree(options.proxy_command);

View File

@ -34,8 +34,8 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.\" $OpenBSD: ssh_config.5,v 1.108 2008/06/11 23:03:56 grunk Exp $ .\" $OpenBSD: ssh_config.5,v 1.109 2008/06/12 16:35:31 dtucker Exp $
.Dd $Mdocdate: June 11 2008 $ .Dd $Mdocdate: June 12 2008 $
.Dt SSH_CONFIG 5 .Dt SSH_CONFIG 5
.Os .Os
.Sh NAME .Sh NAME
@ -606,6 +606,21 @@ Specifies a command to execute on the local machine after successfully
connecting to the server. connecting to the server.
The command string extends to the end of the line, and is executed with The command string extends to the end of the line, and is executed with
the user's shell. the user's shell.
The following escape character substitutions will be performed:
.Ql %d
(local user's home directory),
.Ql %h
(remote host name),
.Ql %l
(local host name),
.Ql %n
(host name as provided on the command line),
.Ql %p
(remote port),
.Ql %r
(remote user name) or
.Ql %u
(local user name).
This directive is ignored unless This directive is ignored unless
.Cm PermitLocalCommand .Cm PermitLocalCommand
has been enabled. has been enabled.