Kai, Another minor issue with tramp and plink.
I've just logged into a machine which I had not connected to before. Now tramp handles the storing the key in the cache, but there is a missing line feed in the process. I responded "y" to the cache question, Store key in cache? (y/n) and then had to enter the password at the prompt Store key in cache? (y/n) gray@saruman's password: I've attached the debug buffer if that helps. I hope this is sufficient to track down the buglet, Cheers, Douglas.
# Opening connection for gray@saruman using nil... # Waiting for prompts from remote shell # Waiting 60s for prompt from remote shell # Sending password # Found remote shell prompt. # Initializing remote shell $ exec env PS1='$ ' /bin/sh # Waiting 30s for remote `/bin/sh' to come up... exec env 'PS1=$ ' /bin/sh $ # Setting up remote shell environment stty -inlcr -echo kill '^U' $ $ # Determining coding system foo bar $ # Waiting 30s for `HISTFILE=$HOME/.tramp_history; HISTSIZE=1' $ # Waiting 30s for `set +o vi +o emacs' $ # Waiting 30s for `unset MAIL MAILCHECK MAILPATH' $ # Waiting 30s for `unset CDPATH' $ # Setting shell prompt $ PS1=' ///// '; PS2=''; PS3='' $ echo ~root ~root $ while read d; do if test -x $d/bash -a -f $d/bash; then echo tramp_executable $d/bash; break; fi; done <<'EOF' $ /export/home/gray/bin $ /bin $ /usr/bin $ /usr/sbin $ /usr/local/bin $ /usr/ccs/bin $ /local/bin $ /local/freeware/bin $ /local/gnu/bin $ /usr/freeware/bin $ /usr/pkg/bin $ /usr/contrib/bin $ EOF tramp_executable /bin/bash # Starting remote shell `/bin/bash --norc' for tilde expansion... $ PS1='$ ' exec /bin/bash --norc $ # Setting remote shell prompt... # Setting remote shell prompt...done # Finding command to check if file exists $ test -e / 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 0 $ test -e /\ this\ file\ does\ not\ exist\ 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 1 # Finding a suitable `ls' command # Checking remote `/export/home/gray/bin/ls' command for `-n' option $ test -x /export/home/gray/bin/ls 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 1 # Checking remote `/bin/ls' command for `-n' option $ test -x /bin/ls 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 0 # Testing remote command `/bin/ls' for -n... $ /bin/ls -lnd / >/dev/null 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 0 # Testing remote command `/bin/ls' for -n...okay # Using remote command `/bin/ls' for getting directory listings $ tramp_set_exit_status () { return $1 } $ test -e /export/home/gray/bin 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 1 $ test -e /bin 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 0 $ ( test -d /bin 2>/dev/null; echo tramp_exit_status $? ) tramp_exit_status 0 $ test -e /usr/bin 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 0 $ ( test -d /usr/bin 2>/dev/null; echo tramp_exit_status $? ) tramp_exit_status 0 $ test -e /usr/sbin 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 0 $ ( test -d /usr/sbin 2>/dev/null; echo tramp_exit_status $? ) tramp_exit_status 0 $ test -e /usr/local/bin 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 0 $ ( test -d /usr/local/bin 2>/dev/null; echo tramp_exit_status $? ) tramp_exit_status 0 $ test -e /usr/ccs/bin 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 0 $ ( test -d /usr/ccs/bin 2>/dev/null; echo tramp_exit_status $? ) tramp_exit_status 0 $ test -e /local/bin 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 1 $ test -e /local/freeware/bin 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 1 $ test -e /local/gnu/bin 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 1 $ test -e /usr/freeware/bin 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 1 $ test -e /usr/pkg/bin 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 1 $ test -e /usr/contrib/bin 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 1 $ PATH=/bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/ccs/bin; export PATH $ LC_TIME=C; export LC_TIME; echo huhu huhu $ mesg n; echo huhu huhu $ biff n ; echo huhu bash: biff: command not found huhu $ unalias ls; echo huhu bash: unalias: `ls': not an alias huhu $ ( test / -nt / ) $ tramp_test_nt () { test -n "`find $1 -prune -newer $2 -print`" } $ tramp_uudecode () { (echo begin 600 /tmp/tramp.$$; tail +2) | uudecode cat /tmp/tramp.$$ rm -f /tmp/tramp.$$ } $ while read d; do if test -x $d/perl5 -a -f $d/perl5; then echo tramp_executable $d/perl5; break; fi; done <<'EOF' $ /export/home/gray/bin $ /bin $ /usr/bin $ /usr/sbin $ /usr/local/bin $ /usr/ccs/bin $ /local/bin $ /local/freeware/bin $ /local/gnu/bin $ /usr/freeware/bin $ /usr/pkg/bin $ /usr/contrib/bin $ EOF $ while read d; do if test -x $d/perl -a -f $d/perl; then echo tramp_executable $d/perl; break; fi; done <<'EOF' $ /export/home/gray/bin $ /bin $ /usr/bin $ /usr/sbin $ /usr/local/bin $ /usr/ccs/bin $ /local/bin $ /local/freeware/bin $ /local/gnu/bin $ /usr/freeware/bin $ /usr/pkg/bin $ /usr/contrib/bin $ EOF tramp_executable /bin/perl # Sending the Perl `file-attributes' implementation. $ tramp_file_attributes () { /bin/perl -e '$f = $ARGV[0]; @s = lstat($f); if (($s[2] & 0170000) == 0120000) { $l = readlink($f); $l = "\"$l\""; } elsif (($s[2] & 0170000) == 040000) { $l = "t"; } else { $l = "nil" }; printf("(%s %u %d %d (%u %u) (%u %u) (%u %u) %u %u t (%u . %u) (%u %u))\n", $l, $s[3], $s[4], $s[5], $s[8] >> 16 & 0xffff, $s[8] & 0xffff, $s[9] >> 16 & 0xffff, $s[9] & 0xffff, $s[10] >> 16 & 0xffff, $s[10] & 0xffff, $s[7], $s[2], $s[1] >> 16 & 0xffff, $s[1] & 0xffff, $s[0] >> 16 & 0xffff, $s[0] & 0xffff);' $1 2>/dev/null } # Sending the Perl `mime-encode' implementations. $ tramp_encode () { /bin/perl -e ' # This script contributed by Juanma Barranquero <[EMAIL PROTECTED]>. # Copyright (C) 2002 Free Software Foundation, Inc. use strict; my %trans = do { my $i = 0; map {(substr(unpack(q(B8), chr $i++), 2, 6), $_)} split //, q(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/); }; binmode(\*STDIN); # We read in chunks of 54 bytes, to generate output lines # of 72 chars (plus end of line) $/ = \54; while (my $data = <STDIN>) { my $pad = q(); # Only for the last chunk, and only if did not fill the last three-byte packet if (eof) { my $mod = length($data) % 3; $pad = q(=) x (3 - $mod) if $mod; } # Not the fastest method, but it is simple: unpack to binary string, split # by groups of 6 bits and convert back from binary to byte; then map into # the translation table print join q(), map($trans{$_}, (substr(unpack(q(B*), $data) . q(00000), 0, 432) =~ /....../g)), $pad, qq(\n); } ' 2>/dev/null } $ tramp_encode_with_module () { perl -MMIME::Base64 -0777 -ne 'print encode_base64($_)' 2>/dev/null } # Sending the Perl `mime-decode' implementations. $ tramp_decode () { /bin/perl -e ' # This script contributed by Juanma Barranquero <[EMAIL PROTECTED]>. # Copyright (C) 2002 Free Software Foundation, Inc. use strict; my %trans = do { my $i = 0; map {($_, substr(unpack(q(B8), chr $i++), 2, 6))} split //, q(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/) }; my %bytes = map {(unpack(q(B8), chr $_), chr $_)} 0 .. 255; binmode(\*STDOUT); # We are going to accumulate into $pending to accept any line length # (we do not check they are <= 76 chars as the RFC says) my $pending = q(); while (my $data = <STDIN>) { chomp $data; # If we find one or two =, we have reached the end and # any following data is to be discarded my $finished = $data =~ s/(==?).*/$1/; $pending .= $data; my $len = length($pending); my $chunk = substr($pending, 0, $len & ~3); # Easy method: translate from chars to (pregenerated) six-bit packets, join, # split in 8-bit chunks and convert back to char. print join q(), map $bytes{$_}, ((join q(), map {$trans{$_} || q()} split //, $chunk) =~ /......../g); last if $finished; } ' 2>/dev/null } $ tramp_decode_with_module () { perl -MMIME::Base64 -0777 -ne 'print decode_base64($_)' 2>/dev/null } $ while read d; do if test -x $d/ln -a -f $d/ln; then echo tramp_executable $d/ln; break; fi; done <<'EOF' $ /export/home/gray/bin $ /bin $ /usr/bin $ /usr/sbin $ /usr/local/bin $ /usr/ccs/bin $ /local/bin $ /local/freeware/bin $ /local/gnu/bin $ /usr/freeware/bin $ /usr/pkg/bin $ /usr/contrib/bin $ EOF tramp_executable /bin/ln # Checking remote encoding command `mimencode -b' for sanity $ ( mimencode -b </dev/null 2>/dev/null; echo tramp_exit_status $? ) tramp_exit_status 127 # Checking remote encoding command `mmencode -b' for sanity $ ( mmencode -b </dev/null 2>/dev/null; echo tramp_exit_status $? ) tramp_exit_status 127 # Checking remote encoding command `recode data..base64' for sanity $ ( recode data..base64 </dev/null 2>/dev/null; echo tramp_exit_status $? ) tramp_exit_status 127 # Checking remote encoding command `uuencode xxx' for sanity $ ( uuencode xxx </dev/null 2>/dev/null; echo tramp_exit_status $? ) begin 644 xxx end tramp_exit_status 0 # Checking remote decoding command `uudecode -o -' for sanity $ ( echo xyzzy | uuencode xxx | uudecode -o - 2>/dev/null; echo tramp_exit_status $? ) tramp_exit_status 1 # Checking remote encoding command `uuencode xxx' for sanity $ ( uuencode xxx </dev/null 2>/dev/null; echo tramp_exit_status $? ) begin 644 xxx end tramp_exit_status 0 # Checking remote decoding command `uudecode -p' for sanity $ ( echo xyzzy | uuencode xxx | uudecode -p 2>/dev/null; echo tramp_exit_status $? ) xyzzy tramp_exit_status 0 # Checking to see if encoding/decoding commands work on remote host... $ echo xyzzy | uuencode xxx | uudecode -p xyzzy # Checking to see if encoding/decoding commands work on remote host...done $ cd ~; pwd /home/user/gray $ mkdir -p /home/user/gray/work/claire-021022/report2.tex 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 0
-- ================================ Douglas GRAY STEPHENS Technical Architect (Directories) Schlumberger Cambridge Research High Cross, Madingley Road, Cambridge. CB3 0EL ENGLAND Phone +44 1223 325295 Mobile +44 773 0051628 Fax +44 1223 311830 Email [EMAIL PROTECTED] ================================