tramp-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Tramp and NT-Emacs with plink


From: Douglas Gray Stephens
Subject: Re: Tramp and NT-Emacs with plink
Date: Tue, 22 Oct 2002 11:26:06 +0100

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) address@hidden'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 address@hidden 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 <address@hidden>.
# 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 <address@hidden>.
# 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 address@hidden
================================

reply via email to

[Prev in Thread] Current Thread [Next in Thread]