(tramp-open-connection-rsh): Support a kludgy feature for the

"-p" option to ssh.  If host name is given as "host#42", uses the
"-p 42" option.
This commit is contained in:
Kai Großjohann 2002-06-25 20:11:34 +00:00
parent c62c9d08c7
commit 8e3a1104c1
3 changed files with 49 additions and 17 deletions

View file

@ -3,6 +3,9 @@
* net/tramp.el (tramp-ftp-method): New user option.
(tramp-invoke-ange-ftp): New function to forward calls to
Ange-FTP.
(tramp-open-connection-rsh): Support a kludgy feature for the
"-p" option to ssh. If host name is given as "host#42", uses the
"-p 42" option.
(with-parsed-tramp-file-name): New macro for the usual big `let'
statement to dissect a file-name.

View file

@ -3484,6 +3484,10 @@ password! You must use an inline transfer method in this case.
Sadly, the transfer method cannot be switched on the fly, instead you
must specify the right method in the file name.
Kludgy feature: if HOST has the form \"xx#yy\", then yy is assumed to
be a port number for ssh, and \"-p yy\" will be added to the list of
arguments, and xx will be used as the host name to connect to.
* Actually, the rsh program to be used can be specified in the
method parameters, see the variable `tramp-methods'."
(save-match-data
@ -3494,25 +3498,26 @@ must specify the right method in the file name.
(tramp-message 7 "Opening connection for %s@%s using %s..."
user host method)
(tramp-message 7 "Opening connection at %s using %s..." host method))
(let ((process-environment (copy-sequence process-environment)))
(let ((process-environment (copy-sequence process-environment))
(bufnam (tramp-buffer-name multi-method method user host))
(buf (tramp-get-buffer multi-method method user host))
(rsh-program (tramp-get-rsh-program multi-method method))
(rsh-args (tramp-get-rsh-args multi-method method)))
;; The following should be changed. We need a more general
;; mechanism to parse extra host args.
(when (string-match "\\([^#]*\\)#\\(.*\\)" host)
(setq rsh-args (cons "-p" (cons (match-string 2 host) rsh-args)))
(setq host (match-string 1 host)))
(setenv "TERM" tramp-terminal-type)
(let* ((default-directory (tramp-temporary-file-directory))
(coding-system-for-read (unless (and (not (featurep 'xemacs))
(> emacs-major-version 20))
tramp-dos-coding-system))
(p (if user
(apply #'start-process
(tramp-buffer-name multi-method method user host)
(tramp-get-buffer multi-method method user host)
(tramp-get-rsh-program multi-method method)
host "-l" user
(tramp-get-rsh-args multi-method method))
(apply #'start-process
(tramp-buffer-name multi-method method user host)
(tramp-get-buffer multi-method method user host)
(tramp-get-rsh-program multi-method method)
host
(tramp-get-rsh-args multi-method method))))
(apply #'start-process bufnam buf rsh-program
host "-l" user rsh-args)
(apply #'start-process bufnam buf rsh-program
host rsh-args)))
(found nil))
(process-kill-without-query p)
(tramp-message 9 "Waiting 60s for shell or passwd prompt from %s" host)

View file

@ -11,7 +11,7 @@
@c Version values, for easy modification
@c NOTE: The 'UPDATED' value is updated by the 'time-stamp' function.
@c If you change it by hand, the modifications will not stay.
@set VERSION $Revision: 1.2 $
@set VERSION $Revision: 1.3 $
@set UPDATED Monday, 17 June, 2002
@ -639,6 +639,12 @@ There are also two variants, @option{sm1} and @option{sm2} that use the
@command{ssh1} and @command{ssh2} commands explicitly. If you don't know
what these are, you do not need these options.
All the methods based on @command{ssh} have an additional kludgy
feature: you can specify a host name which looks like @file{host#42}
(the real host name, then a hash sign, then a port number). This
means to connect to the given host but to also pass @code{-p 42} as
arguments to the @command{ssh} command.
@item @option{tm} --- @command{telnet} with @command{mimencode}
@ -662,13 +668,15 @@ Connect to the remote host with @command{ssh} and use the
@command{uuencode} and @command{uudecode} commands to transfer files
between the machines.
As with the @command{ssh} and base64 option above, this provides the
@option{su1} and @option{su2} methods to explicitly select an ssh
version.
As with the @command{ssh} and base64 option (@option{sm}) above, this
provides the @option{su1} and @option{su2} methods to explicitly
select an ssh version.
Note that this method does not invoke the @command{su} program, see
below for methods which use that.
This supports the @command{-p} kludge.
@item @option{tu} --- @command{telnet} with @command{uuencode}
@ -723,6 +731,8 @@ invoked from an Emacs buffer, tells them that it is not allocating a
pseudo tty. When this happens, the login shell is wont to not print
any shell prompt, which confuses @tramp{} mightily.
This supports the @command{-p} kludge.
@item @option{km} --- @command{krlogin} with @command{mimencode}
@ -739,6 +749,9 @@ remote host.
CCC: Do we have to connect to the remote host once from the command
line to accept the SSH key? Maybe this can be made automatic?
CCC: Does @command{plink} support the @command{-p} option? Tramp
will support that, anyway.
@item @option{plinkm} --- @command{plink} with @command{mimencode}
Like @option{plinku}, but uses base64 encoding instead of uu encoding.
@ -793,6 +806,11 @@ The cost of the cryptographic handshake at the start of an @command{scp}
session can begin to absorb the advantage that the lack of encoding and
decoding presents.
All the @command{ssh} based methods support the kludgy @command{-p}
feature where you can specify a port number to connect to in the host
name. For example, the host name @file{host#42} tells Tramp to
specify @command{-p 42} in the argument list for @command{ssh}.
@item @option{rsync} --- @command{ssh} and @command{rsync}
@ -808,6 +826,8 @@ The @command{rsync} based method may be considerably faster than the
@command{rcp} based methods when writing to the remote system. Reading
files to the local machine is no faster than with a direct copy.
This method supports the @command{-p} hack.
@item @option{scpx} --- @command{ssh} and @command{scp}
@ -824,6 +844,8 @@ invoked from an Emacs buffer, tells them that it is not allocating a
pseudo tty. When this happens, the login shell is wont to not print
any shell prompt, which confuses @tramp{} mightily.
This method supports the @command{-p} hack.
@item @option{pscp} --- @command{plink} and @command{pscp}
@ -832,6 +854,8 @@ This method is similar to @option{scp}, but it uses the
@command{pscp} for transferring the files. These programs are part
of PuTTY, an SSH implementation for Windows.
CCC: Does @command{plink} support the @command{-p} hack?
@item @option{fcp} --- @command{fsh} and @command{fcp}